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.
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
Instanziieren Sie die GPAW-Klasse unter den folgenden Bedingungen.
from gpaw import GPAW, PW
gpaw = GPAW(mode=PW(300), xc='PBE')
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)

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
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()
Lassen Sie uns abschließend die Ergebnisse zusammenfassen. Die Atomisierungsenergie $ \ Delta E $ von H 2 </ sub> kann durch die folgende Gleichung erhalten werden.
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()

Recommended Posts