Effectuons un calcul DFT en utilisant ASE et GPAW. À titre d'exemple simple, trouvons l'énergie d'atomisation des molécules d'hydrogène.
--ASE est un module Python pour la simulation atomique. De nombreuses fonctionnalités sont implémentées. Différents codes peuvent être appelés en utilisant la classe Calculator comme interface. --GPAW est un code de calcul DFT basé sur la méthode PAW et ASE. Écrit en C et Python. Largement utilisé.
L'exemple suivant a été exécuté à l'aide de Jupyter Lab.
Installez ASE et GPAW avec pip dans l'environnement Python créé avec Anaconda.
$ pip install ase --user
$ pip install gpaw --user
Téléchargez également le jeu de données GPAW PAW.
$ gpaw install-data $HOME/gpaw-data
L'installation est terminée. À ce stade, mon environnement est le suivant.
$ python --version
Python 3.7.6
$ pip list installed | grep -e ase -e gpaw
ase 3.19.1
gpaw 20.1.0
Instanciez la classe GPAW
dans les conditions suivantes.
from gpaw import GPAW, PW
gpaw = GPAW(mode=PW(300), xc='PBE')
Le module ʻase.buildcontient des préréglages de petites molécules. Vous pouvez créer un objet «Atomes», qui est un modèle moléculaire tridimensionnel, simplement en passant la formule moléculaire à la fonction «molécule». Puisque je veux calculer le système isolé cette fois, j'appelle la méthode
center de l'objet ʻAtoms
créé et j'ajoute une couche de vide 3.0A au modèle.
from ase.build import molecule
atoms_h2 = molecule('H2')
atoms_h2.center(vacuum=3.)
Il peut être visualisé avec la fonction view
, vérifions donc la structure de la molécule.
from ase.visualize import view
view(atoms_h2)
Si vous associez le GPAW Calculator
à l'objet ʻAtoms et appelez la fonction
get_potential_energy`, le calcul GPAW sera exécuté.
atoms_h2.set_calculator(gpaw)
e_h2 = atoms_h2.get_potential_energy() # takes several seconds
Le même calcul est effectué pour l'atome d'hydrogène.
atoms_h = molecule('H')
atoms_h.center(vacuum=3.)
atoms_h.set_calculator(GPAW(mode=PW(300), xc='PBE', hund=True))
e_h = atoms_h.get_potential_energy()
Enfin, résumons les résultats. L'énergie d'atomisation $ \ Delta E $ de H 2 </ sub> peut être obtenue par l'équation suivante.
En même temps, j'afficherai la structure moléculaire sur le notebook. Utilisez le module ʻase.visualize.plot`, qui est un wrapper pour matplotlib.
import matplotlib.pyplot as plt
from ase.visualize.plot import plot_atoms
delta_e = 2 * e_h - e_h2
print(f'Atomization Energy: {delta_e: 5.2f} eV')
fig, ax = plt.subplots(1, 2, figsize=(8,6))
title = f'Calculation Result for {atoms_h2.get_chemical_formula()}\n' + \
f'Total Energy : {atoms_h2.get_potential_energy(): 5.2f} eV'
ax[0].set_title(title)
ax[0].axis('off')
plot_atoms(atoms_h2, ax=ax[0], rotation='90x')
title = f'Calculation Result for {atoms_h.get_chemical_formula()}\n' + \
f'Total Energy : {atoms_h.get_potential_energy(): 5.2f} eV'
ax[1].set_title(title)
ax[1].axis('off')
plot_atoms(atoms_h, ax=ax[1], rotation='90x')
plt.show()
Recommended Posts