Schmelzen und Flüssigkeiten sind allgegenwärtige Vektoren des Massentransports in natürlichen Systemen. Wir haben ein Open-Source-Paket entwickelt, um ab initio molekulardynamische Simulationen solcher Systeme zu analysieren. Wir berechnen strukturelle (Bindung, Clusterisierung, chemische Speziation), Transport (Diffusion, Viskosität) und thermodynamische Eigenschaften (Schwingungsspektrum).
Wir haben ein Python-basiertes Open-Source-Paket entwickelt, um die Ergebnisse von ab initio molekulardynamischen Simulationen von Flüssigkeiten zu analysieren. Das Paket eignet sich am besten für Anwendungen an natürlichen Systemen wie Silikat- und Oxidschmelzen, Flüssigkeiten auf Wasserbasis und verschiedenen überkritischen Flüssigkeiten. Das Paket ist eine Sammlung von Python-Skripten, die zwei Hauptbibliotheken enthalten, die sich mit Dateiformaten und mit Kristallographie befassen. Alle Skripts werden über die Befehlszeile ausgeführt. Wir schlagen ein vereinfachtes Format vor, um die atomaren Trajektorien und relevanten thermodynamischen Informationen der Simulationen zu speichern, die in UMD-Dateien gespeichert sind, was für Universal Molecular Dynamics steht. Das UMD-Paket ermöglicht die Berechnung einer Reihe von strukturellen, Transport- und thermodynamischen Eigenschaften. Ausgehend von der Paarverteilungsfunktion definiert es Bindungslängen, baut eine interatomare Konnektivitätsmatrix auf und bestimmt schließlich die chemische Speziation. Die Bestimmung der Lebensdauer der chemischen Spezies ermöglicht die Durchführung einer vollständigen statistischen Analyse. Dann berechnen dedizierte Skripte die mittleren quadratischen Verschiebungen für die Atome sowie für die chemische Spezies. Die implementierte Selbstkorrelationsanalyse der Atomgeschwindigkeiten ergibt die Diffusionskoeffizienten und das Schwingungsspektrum. Die gleiche Analyse, die auf die Spannungen angewendet wird, ergibt die Viskosität. Das Paket ist über die GitHub-Website und über eine eigene Seite des ERC IMPACT-Projekts als Open-Access-Paket verfügbar.
Flüssigkeiten und Schmelzen sind aktive chemische und physikalische Transportvektoren in natürlichen Umgebungen. Die erhöhten Raten der atomaren Diffusion begünstigen den chemischen Austausch und die Reaktionen, die niedrige Viskosität in Verbindung mit unterschiedlichem Auftrieb begünstigt einen großen Stoffaustausch und die Kristallschmelzedichtebeziehungen begünstigen die Schichtung innerhalb planetarer Körper. Das Fehlen eines periodischen Gitters, typische hohe Temperaturen, die erforderlich sind, um den geschmolzenen Zustand zu erreichen, und die Schwierigkeit beim Abschrecken machen die experimentelle Bestimmung einer Reihe offensichtlicher Eigenschaften wie Dichte, Diffusion und Viskosität extrem schwierig. Diese Schwierigkeiten machen alternative Berechnungsmethoden zu starken und nützlichen Werkzeugen für die Untersuchung dieser Materialklasse.
Mit dem Aufkommen der Rechenleistung und der Verfügbarkeit von Supercomputern werden derzeit zwei wichtige numerische atomistische Simulationstechniken eingesetzt, um den dynamischen Zustand eines nichtkristallinen atomistischen Systems zu untersuchen, Monte Carlo1 und Molekulardynamik (MD)1,2. In Monte-Carlo-Simulationen wird der Konfigurationsraum zufällig abgetastet; Monte-Carlo-Methoden zeigen eine lineare Skalierung in Parallelisierung, wenn alle Stichprobenbeobachtungen unabhängig voneinander sind. Die Qualität der Ergebnisse hängt von der Qualität des Zufallszahlengenerators und der Repräsentativität der Stichprobe ab. Monte-Carlo-Methoden zeigen lineare Skalierung in Parallelisierung, wenn die Stichprobe unabhängig voneinander ist. In der Molekulardynamik (MD) wird der Konfigurationsraum durch zeitabhängige atomare Trajektorien abgetastet. Ausgehend von einer gegebenen Konfiguration werden die atomaren Trajektorien durch Integration der Newtonschen Bewegungsgleichungen berechnet. Die interatomaren Kräfte können mit Hilfe von modellierten interatomaren Potentialen (in klassischer MD) oder mit Methoden der ersten Prinzipien (in ab initio oder first-principles, MD) berechnet werden. Die Qualität der Ergebnisse hängt von der Länge der Trajektorie und ihrer Fähigkeit ab, nicht von lokalen Minima angezogen zu werden.
Molekulardynamik-Simulationen enthalten eine Fülle von Informationen, die alle mit dem dynamischen Verhalten des Systems zusammenhängen. Thermodynamische Durchschnittseigenschaften wie innere Energie, Temperatur und Druck sind eher Standard zu berechnen. Sie können aus den Ausgabedateien der Simulationen extrahiert und gemittelt werden, während Größen, die sich direkt auf die Bewegung der Atome sowie auf ihre gegenseitige Beziehung beziehen, nach Extraktion der atomaren Positionen und Geschwindigkeiten berechnet werden müssen.
Folglich wurde viel Mühe darauf verwendet, die Ergebnisse zu visualisieren, und verschiedene Pakete sind heute auf verschiedenen Plattformen verfügbar, Open Source oder nicht [Ovito3, VMD4, Vesta5, Travis6 usw.]. Alle diese Visualisierungswerkzeuge arbeiten effizient mit interatomaren Abständen und ermöglichen so die effiziente Berechnung von Paarverteilungsfunktionen und Diffusionskoeffizienten. Verschiedene Gruppen, die groß angelegte molekulardynamische Simulationen durchführen, verfügen über proprietäre Software, um verschiedene andere Eigenschaften zu analysieren, die sich aus den Simulationen ergeben, manchmal in Shareware oder anderen Formen des eingeschränkten Zugangs zur Community und manchmal begrenzt in Umfang und Verwendung auf einige bestimmte Pakete. Ausgeklügelte Algorithmen zur Extraktion von Informationen über interatomare Bindungen, geometrische Muster und Thermodynamik werden entwickelt und in einigen dieser Pakete implementiert3,4,5,6,7 usw.
Hier schlagen wir das UMD-Paket vor – ein in Python geschriebenes Open-Source-Paket, um die Ausgabe molekulardynamischer Simulationen zu analysieren. Das UMD-Paket ermöglicht die Berechnung eines breiten Spektrums struktureller, dynamischer und thermodynamischer Eigenschaften (Abbildung 1). Das Paket ist über die GitHub-Website (https://github.com/rcaracas/UMD_package) und über eine eigene Seite (http://moonimpact.eu/umd-package/) des ERC IMPACT-Projekts als Open-Access-Paket verfügbar.
Um es universell und einfacher zu handhaben zu machen, besteht unser Ansatz darin, zunächst alle Informationen über den thermodynamischen Zustand und die atomaren Trajektorien aus der Ausgabedatei des eigentlichen Molekulardynamiklaufs zu extrahieren. Diese Informationen werden in einer dedizierten Datei gespeichert, deren Format unabhängig vom ursprünglichen MD-Paket ist, in dem die Simulation ausgeführt wurde. Wir nennen diese Dateien “umd”-Dateien, was für Universal Molecular Dynamics steht. Auf diese Weise kann unser UMD-Paket von jeder ab initio-Gruppe mit jeder Software einfach und mit minimalem Anpassungsaufwand verwendet werden. Die einzige Voraussetzung für die Verwendung des vorliegenden Pakets besteht darin, den entsprechenden Parser aus der Ausgabe der jeweiligen MD-Software in das umd-Dateiformat zu schreiben, falls dieses noch nicht vorhanden ist. Vorerst stellen wir solche Parser für die Pakete VASP8 und QBox9 zur Verfügung.
Abbildung 1: Flussdiagramm der UMD-Bibliothek.
Physische Eigenschaften sind blau und die wichtigsten Python-Skripte und ihre Optionen sind rot. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzuzeigen.
Die umd-Dateien sind ASCII-Dateien; Typische Erweiterung ist “umd.dat”, aber nicht obligatorisch. Alle Analysekomponenten können ASCII-Dateien im umd-Format lesen, unabhängig von der tatsächlichen Namenserweiterung. Einige der automatischen Skripte, die entwickelt wurden, um schnelle umfangreiche Statistiken über mehrere Simulationen hinweg durchzuführen, suchen jedoch speziell nach Dateien mit der Erweiterung umd.dat. Jede physische Eigenschaft wird in einer Zeile ausgedrückt. Jede Zeile beginnt mit einem Schlüsselwort. Auf diese Weise ist das Format sehr anpassungsfähig und ermöglicht das Hinzufügen neuer Eigenschaften zur umd-Datei, während gleichzeitig die Lesbarkeit in allen Versionen erhalten bleibt. Die ersten 30 Zeilen der umd-Datei der Simulation von Pyrolit bei 4,6 GPa und 3000 K, die unten in der Diskussion verwendet werden, sind in Abbildung 2 dargestellt.
Abbildung 2: Der Anfang der umd-Datei, die die Simulation von flüssigem Pyrolit bei 4,6 GPa und 3000 K beschreibt.
Auf den Header folgt die Beschreibung jedes Snapshots. Jede Eigenschaft wird in eine Zeile geschrieben, die den Namen der physischen Eigenschaft, die Werte und die Einheiten enthält, die alle durch Leerzeichen getrennt sind. Bitte klicken Sie hier, um eine größere Version dieser Abbildung anzuzeigen.
Alle umd-Dateien enthalten einen Header, der den Inhalt der Simulationszelle beschreibt: die Anzahl der Atome, Elektronen und Atomtypen sowie Details für jedes Atom, wie seinen Typ, sein chemisches Symbol, die Anzahl der Valenzelektronen und seine Masse. Eine leere Zeile markiert das Ende des Headers und trennt ihn vom Hauptteil der umd-Datei.
Dann wird jeder Schritt der Simulation detailliert beschrieben. Zuerst werden die momentanen thermodynamischen Parameter jeweils auf einer anderen Linie angegeben, wobei (i) der Name des Parameters wie Energie, Spannungen, äquivalenter hydrostatischer Druck, Dichte, Volumen, Gitterparameter usw., (ii) seine Werte und (iii) seine Einheiten angegeben werden. Eine Tabelle, die die Atome beschreibt, kommt als nächstes. Eine Kopfzeile gibt die verschiedenen Maße wie kartesische Positionen, Geschwindigkeiten, Ladungen usw. und ihre Einheiten an. Dann wird jedes Atom auf einer Zeile detailliert beschrieben. Durch Dreiergruppen, die den drei x-, y-, z-Achsen entsprechen, sind die Einträge: die reduzierten Positionen, die kartesischen Positionen, die in die Simulationszelle gefaltet sind, die kartesischen Positionen (die die Tatsache berücksichtigen, dass Atome während einer Simulation mehrere Einheitszellen durchqueren können), die Atomgeschwindigkeiten und die Atomkräfte. Die letzten beiden Einträge sind Skalare: Ladung und magnetisches Moment.
Zwei Hauptbibliotheken gewährleisten das ordnungsgemäße Funktionieren des gesamten Pakets. Die umd_process.py Bibliothek befasst sich mit den umd-Dateien, wie Lesen und Drucken. Die crystallography.py Bibliothek befasst sich mit allen Informationen, die sich auf die tatsächliche atomare Struktur beziehen. Die zugrunde liegende Philosophie der crystallography.py Bibliothek besteht darin, das Gitter als Vektorraum zu behandeln. Die Elementarzellenparameter stellen zusammen mit ihrer Orientierung die Basisvektoren dar. Der “Raum” hat eine Reihe von skalaren Attributen (spezifisches Volumen, Dichte, Temperatur und spezifische Anzahl von Atomen), thermodynamische Eigenschaften (innere Energie, Druck, Wärmekapazität usw.) und eine Reihe von Tensorialeigenschaften (Spannung und Elastizität). Atome bevölkern diesen Raum. Die Klasse “Lattice” definiert dieses Ensemble, zusammen mit verschiedenen kurzen Berechnungen, wie spezifisches Volumen, Dichte, Erhalten des reziproken Gitters aus dem direkten usw. Die Klasse “Atoms” definiert die Atome. Sie zeichnen sich durch eine Reihe skalarer Eigenschaften (Name, Symbol, Masse, Anzahl der Elektronen usw.) und eine Reihe von vektoriellen Eigenschaften (die Position im Raum, entweder relativ zu der in der Lattice-Klasse beschriebenen vektoriellen Basis oder relativ zu universellen kartesischen Koordinaten, Geschwindigkeiten, Kräften usw.) aus. Abgesehen von diesen beiden Klassen enthält die crystallography.py Bibliothek eine Reihe von Funktionen zum Ausführen einer Vielzahl von Tests und Berechnungen, z. B. atomare Abstände oder Zellmultiplikation. Das Periodensystem der Elemente ist auch als Wörterbuch enthalten.
Die verschiedenen Komponenten des umd-Pakets schreiben mehrere Ausgabedateien. In der Regel handelt es sich bei allen um ASCII-Dateien, alle ihre Einträge sind durch Tabulatoren getrennt und sie sind so selbsterklärend wie möglich gestaltet. Zum Beispiel zeigen sie immer klar die physische Eigenschaft und ihre Einheiten an. Die umd.dat-Dateien entsprechen vollständig dieser Regel.
Das UMD-Paket wurde entwickelt, um besser mit Ab-initio-Simulationen zu arbeiten, bei denen die Anzahl der Snapshots typischerweise auf Zehn- bis Hunderttausende von Snapshots mit einigen hundert Atomen pro Einheitszelle begrenzt ist. Größere Simulationen sind ebenfalls handhabbar, sofern die Maschine, auf der die Nachbearbeitung läuft, über genügend aktive Speicherressourcen verfügt. Der Code zeichnet sich durch die Vielfalt der Eigenschaften aus, die er berechnen kann, und durch seine Open-Source-Lizenz.
Die umd.dat-Dateien eignen sich für die Ensembles, die die Anzahl der Partikel während der gesamten Simulation unverändert beibehalten. Das UMD-Paket kann Dateien lesen, die aus Berechnungen stammen, bei denen Form und Volumen der Simulationsbox variieren. Diese decken die gängigsten Berechnungen wie NVT und NPT ab, bei denen die Anzahl der Partikel, N, Temperatur T, Volumen, V und / oder Druck P, konstant gehalten werden.
Für den Zeitbeginn funktionieren die Paarverteilungsfunktion sowie alle Skripte, die die interatomaren Abstände schätzen müssen, wie die Speziationsskripte, nur für orthogonale Einheitszellen, dh für kubische, tetragonale und orthorhombische Zellen, bei denen die Winkel zwischen den Achsen 90 ° betragen.
Die Hauptentwicklungslinien für Version 2.0 sind die Aufhebung der Orthogonalitätsbeschränkung für Entfernungen und das Hinzufügen weiterer Funktionen für die Speziationsskripte: die Analyse einzelner chemischer Bindungen, die Analyse der interatomaren Winkel und die Implementierung der zweiten Koordinationssphäre. Mit Hilfe der externen Zusammenarbeit arbeiten wir daran, den Code auf eine GPU zu portieren, um eine schnellere Analyse in größeren Systemen zu ermöglichen.
The authors have nothing to disclose.
Diese Arbeit wurde vom Europäischen Forschungsrat (ERC) im Rahmen des Forschungs- und Innovationsprogramms Horizon 2020 der Europäischen Union (Förderkennzeichnungsnummer 681818 IMPACT to RC), vom Direktion extreme Physik und Chemie des Deep Carbon Observatory und vom norwegischen Forschungsrat über sein Förderprogramm für Exzellenzzentren, Projektnummer 223272, unterstützt. Wir bestätigen den Zugang zu den GENCI-Supercomputern durch die eDARI-Computing-Grants der stl2816-Serie, zum Irene AMD-Supercomputer durch das PRACE RA4947-Projekt und zum Fram-Supercomputer durch den UNINETT Sigma2 NN9697K. FS wurde durch ein Marie-Skłodowska-Curie-Projekt unterstützt (Finanzhilfevereinbarung ABISSE Nr. 750901).
getopt library | open-source | ||
glob library | open-source | ||
matplotlib library | open-source | ||
numpy library | open-source | ||
os library | open-source | ||
Python software | The Python Software Foundation | Version 2 and 3 | open-source |
random library | open-source | ||
re library | open-source | ||
scipy library | open-source | ||
subprocess library | open-source | ||
sys library | open-source |