Outils pour utilisateurs

Outils du site


teaching:progappchim:lennard-jones

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
teaching:progappchim:lennard-jones [2015/03/05 11:08]
villersd
teaching:progappchim:lennard-jones [2015/03/05 12:14] (Version actuelle)
villersd
Ligne 49: Ligne 49:
  
 La distance d'​équilibre $R_0$ pourra être obtenue facilement en minimisant $U_tot$. Cela nécessite de calculer pour le réseau envisagé les valeurs de $\sum_j p_j^{-12}$ et $\sum_j p_j^{-6}$. La distance d'​équilibre $R_0$ pourra être obtenue facilement en minimisant $U_tot$. Cela nécessite de calculer pour le réseau envisagé les valeurs de $\sum_j p_j^{-12}$ et $\sum_j p_j^{-6}$.
 +
 +Voici un programme non optimisé calculant les deux sommes pour la structure cubique à face centrée. Il serait bien sûr intéressant de modifier le programme pour réduire le nombre de calculs nécessaires,​ et aussi envisager les autres structures (hexagonal compact et cubique centré).
 +
 +<sxh python; title : Lennard-Jones-sum_fcc-01.py>​
 +#! /​usr/​bin/​env python
 +# -*- coding: utf-8 -*-
 +"""​
 +Calcul des sommes utilisées dans l'​énergie de cohésion
 +d'un cristal de gaz rare en utilisant le potentiel de Lennard-Jones
 +
 +Version non optimisée comptabilisant toutes les interactions dans
 +un cristal fictif de structure cubique à face centrée.
 +Pour une telle maille, les positions des atomes à considérer sont
 +en coordonnées cristallographiques (0,0,0), (0.5,​0.5,​0),​ (0.5,0,0.5) et
 +(0,​0.5,​0.5).
 +"""​
 +from math import *
 +
 +motif = [(0,​0,​0),​(0.5,​0.5,​0),​(0.5,​0,​0.5),​(0,​0.5,​0.5)]
 +R2= 0.5**2+0.5**2 ​ # carré de la distance entre atomes voisins
 +print R2
 +nmax = 5 # nombre de mailles entre l'​atome central et le bord
 +sum6=0.
 +sum12=0.
 +for ic in range (-nmax,​nmax,​1):​
 +    for jc in range (-nmax,​nmax,​1):​
 +        for kc in range (-nmax,​nmax,​1):​
 +            # ic, jc, kc est la coordonnée du noeud de référence
 +            # de la maille cubique.
 +            noeud=[ic,​jc,​kc]
 +            # print noeud  # impression pour debug
 +            for atome in motif:
 +                d2=0
 +                for direct in range(3):
 +                    d2 += (noeud[direct]+atome[direct])**2
 +                    #print direct, d2  # impression pour debug
 +                if d2 != 0:
 +                    inv_pj6 = (R2/d2)**3
 +                    inv_pj12 = inv_pj6**2
 +                    sum6 += inv_pj6
 +                    sum12 += inv_pj12
 + 
 +print 'La somme "​6"​ vaut ', sum6
 +print 'La somme "​12"​ vaut ', sum12
 +</​sxh>​
  
 ==== Références ==== ==== Références ====
teaching/progappchim/lennard-jones.txt · Dernière modification: 2015/03/05 12:14 par villersd