[PYTHON] Versuchen Sie eine MD-Simulation mit ANN-Potenzial unter Verwendung von Aenet und ASE

aenet (Atomic Energy Network) ist ein Paket zum Umgang mit dem interatomaren Interaktionspotential von ANN (künstliches neuronales Netzwerk). Sie können neue ANN-Potentiale basierend auf DFT-Berechnungen erstellen und Energie und Kräfte anhand erlernter Potentiale vorhersagen.

Da aenet eine Schnittstelle für ASE (Atomic Simulation Environment) bereitstellt, eine Python-Bibliothek für die Atomsimulation, ist es möglich, Strukturoptimierung und Molekulardynamiksimulation (MD) unter Verwendung des ANN-Potenzials durchzuführen.

In diesem Artikel werden wir eine MD-Simulation von TiO </ sub> 2 </ sub> unter Verwendung des erlernten ANN-Potentials durchführen.

Installation

Erstellen Sie die Python-Schnittstelle für aenet.

Führen Sie make in jedem Verzeichnis (lib, src, python3) des Projekts aus. Das src-Verzeichnis enthält mehrere Makefiles (ifort vs. gfortran, mpi vs. serial usw.). Wählen Sie ggf. Makefile.

README ist für jedes Verzeichnis vorbereitet. Bitte beachten Sie auch dies.

$ git clone https://github.com/atomisticnet/aenet.git
$ git checkout v2.0.4 #neueste Version
$ cd aenet/lib
$ make #Kompilieren Sie lib
$ cd ../src
$ make -f makefiles/Makefile.gfortran_serial lib #Kompiliere src.Stellen Sie sicher, dass das Ziel auf lib gesetzt ist.
$ cd ../python3
$ python3 setup.py install --user #Kompilieren Sie die Python-Oberfläche

Wenn die gcc-Version beim Erstellen von lib oder src und die gcc-Version beim Erstellen der Python-Schnittstelle nicht übereinstimmen, funktioniert der Build nicht ordnungsgemäß, selbst wenn er abgeschlossen ist. Ich bin süchtig danach.

Geschulte Daten

Geschulte Daten von TiO 2 </ sub> (aenet-example-02-TiO2-Chebyshev.tar.bz2) können von Official Site heruntergeladen werden. ist. Diese trainierten Daten werden auch in diesem Artikel verwendet.

Im Folgenden wird die Berechnung unter Verwendung der trainierten nn-Datei im Verzeichnis aenet-example-02-TiO2-Chebyshev / 03-Predict / Set001 durchgeführt.

Einfaches Beispiel

Als einfachstes Beispiel berechnen wir die Energie von TiO </ sub> </ sub> vom Rutiltyp.

from ase.spacegroup import crystal
from aenet.ase_calculator import ANNCalculator

TiO2_rutile =crystal(['Ti', 'O'], basis=[(0, 0, 0), (0.3, 0.3, 0.0)],
                     spacegroup=136, cellpar=[4.6, 2.95, 2.95, 90, 90, 90])
calc = ANNCalculator({'Ti':'Ti.15t-15t.nn', 'O':'O.15t-15t.nn'})
TiO2_rutile.set_calculator(calc)
e = TiO2_rutile.get_potential_energy()
print(f'energy: {e}')

Die Energie des ANN-Potentials konnte sehr leicht berechnet werden.

Benchmark

Messen wir die Berechnungszeit mit einem Notebook. Wir haben mehrere Superzellen mit unterschiedlicher Anzahl von Atomen erstellt und die für die Energieberechnung erforderliche Zeit für jede Atome aufgezeichnet.

aenet_fig1.png

MD-Simulation

Lassen Sie uns abschließend eine MD-Simulation durchführen. Ersetzen Sie einfach den ASE-Rechner durch den ANN-Rechner.

from ase import units
from ase.spacegroup import crystal
from ase.md.nvtberendsen import NVTBerendsen
from ase.md.velocitydistribution import MaxwellBoltzmannDistribution
from aenet.ase_calculator import ANNCalculator

dt = 2 * units.fs
temp = 300
nsteps = 400
taut = 20 * units.fs

TiO2_rutile =crystal(['Ti', 'O'], basis=[(0, 0, 0), (0.3, 0.3, 0.0)],
                     spacegroup=136, cellpar=[4.6, 2.95, 2.95, 90, 90, 90])
calc = ANNCalculator({'Ti':'Ti.15t-15t.nn', 'O':'O.15t-15t.nn'})
TiO2_rutile.set_calculator(calc)
MaxwellBoltzmannDistribution(TiO2_rutile, temp * units.kB)
dyn = NVTBerendsen(TiO2_rutile, dt, temp, taut=taut, trajectory='md.traj')
def myprint():
    print(f'time={dyn.get_time() / units.fs: 5.0f} fs ' + \
          f'T={TiO2_rutile.get_temperature(): 3.0f} K')
dyn.attach(myprint, interval=20)
dyn.run(nsteps)

aenet-ani.gif

Referenz

Recommended Posts

Versuchen Sie eine MD-Simulation mit ANN-Potenzial unter Verwendung von Aenet und ASE
Versuchen Sie, PythonTex mit Texpad zu verwenden.
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie es mit pytest-Overview und Samples-
Spielen Sie mit dem MD-Modul von ASE
Versuchen Sie es mit Folium mit Anakonda
Verwenden von Sitzungen und Reflexionen mit SQL Alchemy
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Versuchen Sie, Pythons networkx mit AtCoder zu verwenden
Führen Sie eine DFT-Berechnung mit ASE und GPAW durch
Versuchen Sie, die Kamera mit Pythons OpenCV zu verwenden
Versuchen wir es mit gRPC mit Go und Docker
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Ich verwende Tox und Python 3.3 mit Travis-CI
2D-Physiksimulation mit Box2d und wxPython