Distance inter-atomiques

Description

C`est un programme permettant le calcul de la longueur d`une liaison entre deux atomes dans un matériau, à partir des paramètres de maille(a,b,c,alpha,beta,gamma) et des coordonnées atomiques(x,y,z). Pour cela , on transforme les coordonnées(x,y,z) de chaque atome en coordonnées cartésiennes (Xt,Yt,Zt).

Source / Exemple :


Imports System.Math
Public Class Form1
    
    Public Function degrad(ByVal D As Double) As Double
        Return D * PI / 180
    End Function
    Function mtransformx(ByVal x As Double, ByVal y As Double, ByVal z As Double, ByVal a As Double, ByVal b As Double, ByVal c As Double, ByVal alpha As Double, ByVal beta As Double, ByVal gamma As Double) As Double
        Dim XT As Double
        XT = a * x + b * y * Cos(gamma) + c * z * Cos(beta)
        Return XT
    End Function
    Function mtransformy(ByVal x As Double, ByVal y As Double, ByVal z As Double, ByVal a As Double, ByVal b As Double, ByVal c As Double, ByVal alpha As Double, ByVal beta As Double, ByVal gamma As Double) As Double
        Dim YT As Double
        YT = b * y * Sin(gamma) + c * z * (Cos(alpha) - Cos(beta) * Cos(gamma)) / Sin(gamma)
        Return YT
    End Function
    Function mtransformz(ByVal x As Double, ByVal y As Double, ByVal z As Double, ByVal a As Double, ByVal b As Double, ByVal c As Double, ByVal alpha As Double, ByVal beta As Double, ByVal gamma As Double) As Double
        Dim ZT, V As Double
        V = a * b * c * Sqrt(Abs((1 - Cos(alpha) ^ 2 - Cos(beta) ^ 2 - Cos(gamma) ^ 2 + 2 * Cos(alpha) * Cos(beta) * Cos(gamma))))
        ZT = V * z / (a * b * Sin(gamma))
        Return ZT
    End Function
    Function Distance(ByVal a1x As Double, ByVal a2x As Double, ByVal a1y As Double, ByVal a2y As Double, ByVal a1z As Double, ByVal a2z As Double) As Double
        Dim d As Double
        D = Sqrt((a1x - a2x) ^ 2 + (a1y - a2y) ^ 2 + (a1z - a2z) ^ 2)
        Return d
    End Function

    Private Sub buttonCalcul_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonCalcul.Click
        Dim a, b, c, alphaD, betaD, gammaD, alphaR, betaR, gammaR, a1x, a1y, a1z, a2x, a2y, a2z As Double
        Dim a1xt, a1yt, a1zt, a2xt, a2yt, a2zt, d As Double
        a = Convert.ToDouble(Ta.Text)
        b = Convert.ToDouble(Tb.Text)
        c = Convert.ToDouble(Tc.Text)
        alphaD = Convert.ToDouble(Talpha.Text)
        betaD = Convert.ToDouble(Tbeta.Text)
        gammaD = Convert.ToDouble(Tgamma.Text)
        a1x = Convert.ToDouble(TA1X.Text)
        a1y = Convert.ToDouble(TA1Y.Text)
        a1z = Convert.ToDouble(TA1Z.Text)
        a2x = Convert.ToDouble(TA2X.Text)
        a2y = Convert.ToDouble(TA2Y.Text)
        a2z = Convert.ToDouble(TA2Z.Text)

        alphaR = degrad(alphaD)
        betaR = degrad(betaD)
        gammaR = degrad(gammaD)

        a1xt = mtransformx(a1x, a1y, a1z, a, b, c, alphaR, betaR, gammaR)
        a1yt = mtransformy(a1x, a1y, a1z, a, b, c, alphaR, betaR, gammaR)
        a1zt = mtransformz(a1x, a1y, a1z, a, b, c, alphaR, betaR, gammaR)
        a2xt = mtransformx(a2x, a2y, a2z, a, b, c, alphaR, betaR, gammaR)
        a2yt = mtransformy(a2x, a2y, a2z, a, b, c, alphaR, betaR, gammaR)
        a2zt = mtransformz(a2x, a2y, a2z, a, b, c, alphaR, betaR, gammaR)
        
        TTA1X.Text = a1xt.ToString
        TTA1Y.Text = a1yt.ToString
        TTA1Z.Text = a1zt.ToString
        TTA2X.Text = a2xt.ToString
        TTA2Y.Text = a2yt.ToString
        TTA2Z.Text = a2zt.ToString

        d = Distance(a1xt, a1yt, a1zt, a2xt, a2yt, a2zt)
        Tdistance.Text = d.ToString()

    End Sub
End Class

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.