[PYTHON] Effectuer un calcul DFT avec ASE et GPAW

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.

Installation

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

Conditions de calcul GPAW

Instanciez la classe GPAW dans les conditions suivantes.

from gpaw import GPAW, PW

gpaw = GPAW(mode=PW(300), xc='PBE')

Créer un modèle de molécule d'hydrogène

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éthodecenter 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)

ase_viewer.png

Effectuer le calcul

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

Calcul de l'atome d'hydrogène

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()

Voir les résultats

Enfin, résumons les résultats. L'énergie d'atomisation $ \ Delta E $ de H 2 </ sub> peut être obtenue par l'équation suivante.

\Delta E = 2 E_{\rm H} - E_{\rm H_2}

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()

atomization_hydrogen.png

référence

Recommended Posts

Effectuer un calcul DFT avec ASE et GPAW
Effectuer un calcul de chemin sur une grille bidimensionnelle avec Networkx
Démarrer le calcul numérique avec Python (avec Homebrew et pip)
Construire un environnement de calcul numérique avec pyenv et miniconda3
Avec et sans WSGI
Calcul numérique avec Python
Effectuer des calculs numériques avec Phython tout en apprenant la dynamique non linéaire et le chaos [1]
Effectuer une analyse isocurrent des canaux en eau libre avec Python et matplotlib
Essayez la simulation MD avec un potentiel ANN en utilisant AENET et ASE
Comparaison des performances entre le calcul matriciel bidimensionnel et pour avec numpy