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

Prochaine révision
Révision précédente
teaching:progappchim:matplotlib_gallery:potentiel_morse [2015/05/08 09:51]
villersd créée
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 :
Ligne 104: Ligne 104:
   * [[http://en.wikipedia.org/wiki/Morse_potential]]   * [[http://en.wikipedia.org/wiki/Morse_potential]]
   * [[http://www.phy.duke.edu/~hsg/363/homeworks/assignment-04-02-05-2011.pdf]]   * [[http://www.phy.duke.edu/~hsg/363/homeworks/assignment-04-02-05-2011.pdf]]
-  * +  * Article original : [[http://journals.aps.org/pr/abstract/10.1103/PhysRev.34.57|Diatomic Molecules According to the Wave Mechanics. II. Vibrational Levels]] Philip M. Morse, Phys. Rev. 34, 57 – Published 1 July 1929. DOI : [[http://dx.doi.org/10.1103/PhysRev.34.57]]
  • teaching/progappchim/matplotlib_gallery/potentiel_morse.1431071480.txt.gz
  • Dernière modification: 2015/05/08 09:51
  • de villersd