$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Vloeistoffen en smelten zijn actieve chemische en fysische transportvectoren in natuurlijke omgevingen. De verhoogde snelheden van atomaire diffusie bevorderen chemische uitwisselingen en reacties, de lage viscositeit in combinatie met variërend drijfvermogen bevordert grote massaoverdracht en kristalsmeltdichtheidsrelaties bevorderen gelaagdheid in planetaire lichamen. De afwezigheid van een periodiek rooster, typische hoge temperaturen die nodig zijn om de gesmolten toestand te bereiken en de moeilijkheid om te doven, maken de experimentele bepaling van een reeks voor de hand liggende eigenschappen, zoals dichtheid, diffusie en viscositeit, uiterst uitdagend. Deze moeilijkheden maken alternatieve computationele methoden sterk en nuttige hulpmiddelen voor het onderzoeken van deze klasse van materialen.
Met de komst van rekenkracht en de beschikbaarheid van supercomputers worden momenteel twee belangrijke numerieke atomistische simulatietechnieken gebruikt om de dynamische toestand van een niet-kristallijn atomistisch systeem, Monte Carlo1 en moleculaire dynamica (MD)1,2, te bestuderen. In Monte Carlo-simulaties wordt de configuratieruimte willekeurig bemonsterd; Monte Carlo-methoden tonen lineaire schaalvergroting in parallellisatie als alle bemonsteringswaarnemingen onafhankelijk van elkaar zijn. De kwaliteit van de resultaten hangt af van de kwaliteit van de random number generator en de representativiteit van de bemonstering. Monte Carlo-methoden tonen lineaire schaalvergroting in parallellisatie als de bemonstering onafhankelijk van elkaar is. In de moleculaire dynamica (MD) wordt de configuratieruimte bemonsterd door tijdsafhankelijke atomaire trajecten. Uitgaande van een bepaalde configuratie worden de atomaire trajecten berekend door de Newtoniaanse bewegingsvergelijkingen te integreren. De interatomaire krachten kunnen worden berekend met behulp van modelinteratomaire potentialen (in klassieke MD) of met behulp van first-principles-methoden (in ab initio, of first-principles, MD). De kwaliteit van de resultaten hangt af van de lengte van het traject en het vermogen om niet aangetrokken te worden door lokale minima.
Moleculaire dynamica simulaties bevatten een overvloed aan informatie, allemaal gerelateerd aan het dynamische gedrag van het systeem. Thermodynamische gemiddelde eigenschappen, zoals interne energie, temperatuur en druk, zijn vrij standaard om te berekenen. Ze kunnen worden geëxtraheerd uit de uitvoerbestanden van de simulaties en worden gemiddeld, terwijl grootheden die rechtstreeks verband houden met de beweging van de atomen en met hun onderlinge relatie moeten worden berekend na extractie van de atomaire posities en snelheden.
Bijgevolg is er veel aandacht besteed aan het visualiseren van de resultaten en zijn er vandaag verschillende pakketten beschikbaar, op verschillende platforms, open source of niet [Ovito3, VMD4, Vesta5, Travis6, enz.]. Al deze visualisatietools gaan efficiënt om met interatomaire afstanden en maken als zodanig de efficiënte berekening van paarverdelingsfuncties en diffusiecoëfficiënten mogelijk. Verschillende groepen die grootschalige moleculaire dynamica-simulaties uitvoeren, hebben eigen software om verschillende andere eigenschappen te analyseren die voortvloeien uit de simulaties, soms in shareware of andere vormen van beperkte toegang tot de gemeenschap, en soms beperkt in omvang en gebruik tot sommige specifieke pakketten. Geavanceerde algoritmen om informatie te extraheren over interatomaire binding, geometrische patronen en thermodynamica worden ontwikkeld en geïmplementeerd in sommige van deze pakketten3,4,5,6,7, enz.
Hier stellen we het UMD-pakket voor - een open-source pakket geschreven in Python om de output van moleculaire dynamicasimulaties te analyseren. Het UMD-pakket maakt de berekening van een breed scala aan structurele, dynamische en thermodynamische eigenschappen mogelijk (figuur 1). Het pakket is beschikbaar via de GitHub-website (https://github.com/rcaracas/UMD_package) en via een speciale pagina (http://moonimpact.eu/umd-package/) van het ERC IMPACT-project als een open-access pakket.
Om het universeel en gemakkelijker te hanteren te maken, is onze aanpak om eerst alle informatie met betrekking tot de thermodynamische toestand en de atomaire trajecten uit het uitvoerbestand van de werkelijke moleculair-dynamische run te extraheren. Deze informatie wordt opgeslagen in een speciaal bestand, waarvan de indeling onafhankelijk is van het oorspronkelijke MD-pakket waarin de simulatie werd uitgevoerd. We noemen deze bestanden "umd" -bestanden, wat staat voor Universal Molecular Dynamics. Op deze manier kan ons UMD-pakket gemakkelijk worden gebruikt door elke ab initio-groep met elke software, allemaal met een minimale inspanning van aanpassing. De enige vereiste om het huidige pakket te gebruiken, is om de juiste parser van de uitvoer van de specifieke MD-software naar het umd-bestandsformaat te schrijven, als dit nog niet bestaat. Voorlopig leveren wij dergelijke parsers voor de VASP8 en de QBox9 pakketten.

Figuur 1: Stroomdiagram van de UMD-bibliotheek.
Fysieke eigenschappen zijn in blauw en de belangrijkste Python-scripts en hun opties zijn in het rood. Klik hier om een grotere versie van deze figuur te bekijken.
De umd-bestanden zijn ASCII-bestanden; typische uitbreiding is "umd.dat" maar niet verplicht. Alle analysecomponenten kunnen ASCII-bestanden van het umd-formaat lezen, ongeacht de werkelijke naamextensie. Sommige van de automatische scripts die zijn ontworpen om snelle grootschalige statistieken uit te voeren over verschillende simulaties, zoeken echter specifiek naar bestanden met de extensie umd.dat. Elke fysieke eigenschap wordt uitgedrukt op één regel. Elke regel begint met een trefwoord. Op deze manier is het formaat zeer aanpasbaar en maakt het mogelijk om nieuwe eigenschappen toe te voegen aan het umd-bestand, terwijl de leesbaarheid in alle versies behouden blijft. De eerste 30 regels van het umd-bestand van de simulatie van pyroliet bij 4,6 GPa en 3000 K, die hieronder in de discussie worden gebruikt, zijn weergegeven in figuur 2.

Figuur 2: Het begin van het umd-bestand waarin de simulatie van vloeibaar pyroliet bij 4,6 GPa en 3000 K wordt beschreven.
De koptekst wordt gevolgd door de beschrijving van elke momentopname. Elke eigenschap wordt op één regel geschreven, met de naam van de fysieke eigenschap, de waarde(n) en de eenheden, allemaal gescheiden door spaties. Klik hier om een grotere versie van deze figuur te bekijken.
Alle umd-bestanden bevatten een header die de inhoud van de simulatiecel beschrijft: het aantal atomen, elektronen en atoomtypen, evenals details voor elk atoom, zoals het type, het chemische symbool, het aantal valentie-elektronen en de massa. Een lege regel markeert het einde van de koptekst en scheidt deze van het hoofdgedeelte van het umd-bestand.
Vervolgens wordt elke stap van de simulatie gedetailleerd beschreven. Eerst worden de momentane thermodynamische parameters gegeven, elk op een andere lijn, waarbij (i) de naam van de parameter wordt gespecificeerd, zoals energie, spanningen, equivalente hydrostatische druk, dichtheid, volume, roosterparameters, enz., (ii) de waarde (en) en (iii) de eenheden. Een tabel die de atomen beschrijft, komt daarna. Een koplijn geeft de verschillende maten weer, zoals cartesiaanse posities, snelheden, ladingen, enz., En hun eenheden. Vervolgens wordt elk atoom op één lijn gedetailleerd. Door groepen van drie, overeenkomend met de drie x-, y-, z-assen , zijn de ingangen: de gereduceerde posities, de cartesische posities gevouwen in de simulatiecel, de Cartesiaanse posities (die goed rekening houden met het feit dat atomen tijdens een simulatie verschillende eenheidscellen kunnen doorkruisen), de atoomsnelheden en de atoomkrachten. De laatste twee ingangen zijn scalairen: lading en magnetisch moment.
Twee grote bibliotheken zorgen voor de goede werking van het hele pakket. De umd_process.py bibliotheek behandelt de umd-bestanden, zoals lezen en afdrukken. De crystallography.py bibliotheek behandelt alle informatie met betrekking tot de eigenlijke atomaire structuur. De onderliggende filosofie van de crystallography.py bibliotheek is om het rooster te behandelen als een vectoriële ruimte. De eenheidscelparameters vertegenwoordigen samen met hun oriëntatie de basisvectoren. De "Ruimte" heeft een reeks scalaire attributen (specifiek volume, dichtheid, temperatuur en specifiek aantal atomen), thermodynamische eigenschappen (interne energie, druk, warmtecapaciteit, enz.) en een reeks tensoriale eigenschappen (spanning en elasticiteit). Atomen bevolken deze ruimte. De klasse "Lattice" definieert dit ensemble, naast verschillende korte berekeningen, zoals specifiek volume, dichtheid, het verkrijgen van het reciproke rooster uit het directe, enz. De klasse "Atomen" definieert de atomen. Ze worden gekenmerkt door een reeks scalaire eigenschappen (naam, symbool, massa, aantal elektronen, enz.) en een reeks vectoriële eigenschappen (de positie in de ruimte, hetzij ten opzichte van de vectoriële basis beschreven in de klasse Lattice, of ten opzichte van universele Cartesische coördinaten, snelheden, krachten, enz.). Afgezien van deze twee klassen bevat de crystallography.py bibliotheek een reeks functies om een verscheidenheid aan tests en berekeningen uit te voeren, zoals atomaire afstanden of celvermenigvuldiging. Het periodiek systeem van de elementen is ook opgenomen als woordenboek.
De verschillende componenten van het umd-pakket schrijven verschillende uitvoerbestanden. Als algemene regel zijn het allemaal ASCII-bestanden, al hun vermeldingen worden gescheiden door tabbladen en ze zijn zo vanzelfsprekend mogelijk gemaakt. Ze geven bijvoorbeeld altijd duidelijk de fysieke eigenschap en zijn eenheden aan. De umd.dat bestanden voldoen volledig aan deze regel.