Outils pour utilisateurs

Outils du site


teaching:progappchim:matplotlib_gallery:potentiel_morse

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:matplotlib_gallery:potentiel_morse [2015/05/18 11:02]
villersd [Références]
teaching:progappchim:matplotlib_gallery:potentiel_morse [2020/02/25 10:04] (Version actuelle)
villersd
Ligne 4: Ligne 4:
  
 Code source :  Code source : 
-<sxh python; title : potentiel_Morse-04.py>​+<code python potentiel_Morse-04.py>​
 #! /​usr/​bin/​env python #! /​usr/​bin/​env python
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
Ligne 25: Ligne 25:
     return D_e * (a*(r-r_e))**2. ​     return D_e * (a*(r-r_e))**2. ​
  
-a=19.3E9 # en unité m-1  # paramètre de contrôle de la largeur du potentiel +a = 19.3E9 # en unité m-1  # paramètre de contrôle de la largeur du potentiel 
-r_e=74.1E-12 # en unité m  # distance interatomique d'​équilibre (longueur de liaison) +r_e = 74.1E-12 # en unité m  # distance interatomique d'​équilibre (longueur de liaison) 
-#a=19.3E-3 # en unité pm-1 +#a = 19.3E-3 # en unité pm-1 
-#r_e=74.1 # en unité pm+#r_e = 74.1 # en unité pm
 D_e = 7.6E-19 # J  # énergie de dissociation D_e = 7.6E-19 # J  # énergie de dissociation
-NA=6.02214129E23 ​ # nombre d'​Avogadro +NA = 6.02214129E23 ​ # nombre d'​Avogadro 
-h=1.054571726E-34 ​ # constante de Planck +h = 1.054571726E-34 ​ # constante de Planck 
-mH=1.007825E-3/​NA ​ # masse de l'​hydrogène +mH = 1.007825E-3/​NA ​ # masse de l'​hydrogène 
-nu0=(a/​2.*np.pi)*np.sqrt(2.*D_e/​mH)+nu0 = (a/​2.*np.pi)*np.sqrt(2.*D_e/​mH)
 hnu0 = h * nu0  # quantum d'​énergie hnu0 = h * nu0  # quantum d'​énergie
  
 plt.figure(figsize=(12,​ 9), dpi=80) plt.figure(figsize=(12,​ 9), dpi=80)
 plt.title(u"​Potentiel de Morse et approximation harmonique\npour le dihydrogène $H_2$. Représentation des niveaux de vibration."​) plt.title(u"​Potentiel de Morse et approximation harmonique\npour le dihydrogène $H_2$. Représentation des niveaux de vibration."​)
-r=np.linspace(10.,​400.,​176) * 1E-12 +r = np.linspace(10.,​400.,​176) * 1E-12 
-u,​uh=V(r),​Vh(r)+u,uh = V(r),Vh(r)
 plt.plot(r,​u,​ color="​blue",​ linewidth=1.5,​ linestyle="​-"​) plt.plot(r,​u,​ color="​blue",​ linewidth=1.5,​ linestyle="​-"​)
 plt.plot(r,​uh,​ color="​green",​ linewidth=2.5,​ linestyle="​-"​) plt.plot(r,​uh,​ color="​green",​ linewidth=2.5,​ linestyle="​-"​)
-xmax=400.E-12+xmax = 400.E-12
 plt.xlim(0.,​ xmax) plt.xlim(0.,​ xmax)
-ymax=1.E-18+ymax = 1.E-18
 plt.ylim(-0.5e-19,​ ymax) plt.ylim(-0.5e-19,​ ymax)
 plt.xlabel(u"​Distance interatomique (m)"​)  ​ plt.xlabel(u"​Distance interatomique (m)"​)  ​
 plt.ylabel(u"​Énergie (J)") plt.ylabel(u"​Énergie (J)")
 # annotations des courbes # annotations des courbes
-xy_annoth=(r_e+np.sqrt(ymax*0.85/​(D_e*a**2.)),​ymax*0.85)+xy_annoth = (r_e+np.sqrt(ymax*0.85/​(D_e*a**2.)),​ymax*0.85)
 plt.annotate(r'​Potentiel harmonique', ​ plt.annotate(r'​Potentiel harmonique', ​
             xy=xy_annoth,​ xycoords='​data',​             xy=xy_annoth,​ xycoords='​data',​
             xytext=(+40,​ +40), textcoords='​offset points',​ fontsize=16,​ color="​green",​             xytext=(+40,​ +40), textcoords='​offset points',​ fontsize=16,​ color="​green",​
             arrowprops=dict(arrowstyle="​simple",​ connectionstyle="​arc3,​rad=.2",​color="​green"​))             arrowprops=dict(arrowstyle="​simple",​ connectionstyle="​arc3,​rad=.2",​color="​green"​))
-xy_annotm=(xmax*0.95,​V(xmax*0.95))+xy_annotm = (xmax*0.95,​V(xmax*0.95))
 plt.annotate(r'​Potentiel de Morse', ​ plt.annotate(r'​Potentiel de Morse', ​
             xy=xy_annotm,​ xycoords='​data',​             xy=xy_annotm,​ xycoords='​data',​
Ligne 68: Ligne 68:
 # niveaux de vibrations de l'​approximation harmonique : # niveaux de vibrations de l'​approximation harmonique :
 for v in range(10): for v in range(10):
-    E=hnu0*(v+0.5) +    E = hnu0*(v+0.5) 
-    dr=np.sqrt(E/​(D_e*a**2.))+    dr = np.sqrt(E/​(D_e*a**2.))
     plt.plot([r_e-dr,​r_e+dr],​[E,​E],​ color="​green",​ linewidth=2.5,​ linestyle="​-"​)     plt.plot([r_e-dr,​r_e+dr],​[E,​E],​ color="​green",​ linewidth=2.5,​ linestyle="​-"​)
  
 # niveaux de vibrations du potentiel de Morse : # niveaux de vibrations du potentiel de Morse :
-#​vmax=int((2.*D_e-hnu0)/​hnu0) ​ # valeur maximale de v suivant la théorie +#vmax = int((2.*D_e-hnu0)/​hnu0) ​ # valeur maximale de v suivant la théorie 
-vmax=8 # compromis pour la représentation+vmax = 8 # compromis pour la représentation
 for v in range(vmax):​ for v in range(vmax):​
-    E=hnu0*(v+0.5) - (hnu0*(v+0.5))**2/​(4.*D_e) +    E = hnu0*(v+0.5) - (hnu0*(v+0.5))**2/​(4.*D_e) 
-    r1,​r2=r_e-np.log(1.+np.sqrt(E/​D_e))/​a,​r_e-np.log(1.-np.sqrt(E/​D_e))/​a+    r1,r2 = r_e-np.log(1.+np.sqrt(E/​D_e))/​a,​r_e-np.log(1.-np.sqrt(E/​D_e))/​a
     plt.plot([r1,​r2],​[E,​E],​ color="​blue",​ linewidth=1.5,​ linestyle="​-"​)     plt.plot([r1,​r2],​[E,​E],​ color="​blue",​ linewidth=1.5,​ linestyle="​-"​)
     # description de l'​énergie de dissociation (niveau de vibration 0)     # description de l'​énergie de dissociation (niveau de vibration 0)
Ligne 87: Ligne 87:
     # numérotation des niveaux de vibration     # numérotation des niveaux de vibration
     plt.text(r2*1.05,​ E*1.02, "n = "​+str(v),​ fontsize=14) ​       plt.text(r2*1.05,​ E*1.02, "n = "​+str(v),​ fontsize=14) ​  
-    #print v,E+    #print(v,E)
  
 plt.show() plt.show()
-</sxh>+</code>
  
 Figure : Figure :
teaching/progappchim/matplotlib_gallery/potentiel_morse.txt · Dernière modification: 2020/02/25 10:04 par villersd