[PYTHON] Führen Sie eine DFT-Berechnung mit ASE und GPAW durch

Lassen Sie uns eine DFT-Berechnung mit ASE und GPAW durchführen. Lassen Sie uns als einfaches Beispiel die Atomisierungsenergie von Wasserstoffmolekülen ermitteln.

--ASE ist ein Python-Modul für die Atomsimulation. Viele Funktionen sind implementiert. Über die Calculator-Klasse als Schnittstelle können verschiedene Codes aufgerufen werden. --GPAW ist ein DFT-Berechnungscode, der auf der PAW-Methode und ASE basiert. Geschrieben in C und Python. Weit verbreitet.

Das folgende Beispiel wurde mit Jupyter Lab ausgeführt.

Installation

Installieren Sie ASE und GPAW mit pip in der mit Anaconda erstellten Python-Umgebung.

$ pip install ase --user
$ pip install gpaw --user

Laden Sie auch den GPAW PAW-Datensatz herunter.

$ gpaw install-data $HOME/gpaw-data

Die Installation ist abgeschlossen. Zu diesem Zeitpunkt ist meine Umgebung wie folgt.

$ python --version
Python 3.7.6
$ pip list installed | grep -e ase -e gpaw
ase                                3.19.1
gpaw                               20.1.0

GPAW-Berechnungsbedingungen

Instanziieren Sie die GPAW-Klasse unter den folgenden Bedingungen.

from gpaw import GPAW, PW

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

Erstellen Sie ein Modell des Wasserstoffmoleküls

Das Modul "ase.build" enthält Voreinstellungen für kleine Moleküle. Sie können ein "Atome" -Objekt erstellen, bei dem es sich um ein dreidimensionales molekulares Modell handelt, indem Sie einfach den molekularen Ausdruck an die "Molekül" -Funktion übergeben. Da ich dieses Mal das isolierte System berechnen möchte, rufe ich die "center" -Methode des erstellten "Atoms" -Objekts auf und füge dem Modell eine Vakuumschicht von 3,0 A hinzu.

from ase.build import molecule

atoms_h2 = molecule('H2')
atoms_h2.center(vacuum=3.)

Es kann mit der Funktion "Ansicht" visualisiert werden. Überprüfen wir also die Struktur des Moleküls.

from ase.visualize import view

view(atoms_h2)

ase_viewer.png

Führen Sie die Berechnung durch

Wenn Sie den "Rechner" von GPAW mit dem Objekt "Atome" verknüpfen und die Funktion "get_potential_energy" aufrufen, wird die Berechnung durch GPAW ausgeführt.

atoms_h2.set_calculator(gpaw)
e_h2 = atoms_h2.get_potential_energy() # takes several seconds

Berechnung des Wasserstoffatoms

Die gleiche Berechnung wird für das Wasserstoffatom durchgeführt.

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

Ergebnisse anzeigen

Lassen Sie uns abschließend die Ergebnisse zusammenfassen. Die Atomisierungsenergie $ \ Delta E $ von H 2 </ sub> kann durch die folgende Gleichung erhalten werden.

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

Gleichzeitig werde ich die Molekülstruktur auf dem Notebook anzeigen. Verwenden Sie das Modul ase.visualize.plot, ein Wrapper für 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

Referenz

Recommended Posts

Führen Sie eine DFT-Berechnung mit ASE und GPAW durch
Führen Sie mit Networkx eine Pfadberechnung in einem zweidimensionalen Raster durch
Starten Sie die numerische Berechnung mit Python (mit Homebrew und Pip).
Erstellen einer numerischen Berechnungsumgebung mit pyenv und miniconda3
Mit und ohne WSGI
Numerische Berechnung mit Python
Führe numerische Berechnungen mit Phython durch, während du nichtlineare Dynamik und Chaos lernst [1]
Führen Sie mit Python und Matplotlib eine Isostromanalyse offener Wasserkanäle durch
Versuchen Sie eine MD-Simulation mit ANN-Potenzial unter Verwendung von Aenet und ASE
Leistungsvergleich zwischen zweidimensionaler Matrixberechnung und für mit Numpy