Smelter og væsker er allestedsnærværende vektorer for massetransport i naturlige systemer. Vi har udviklet en open source-pakke til at analysere ab initio molekylær-dynamik simuleringer af sådanne systemer. Vi beregner strukturelle (limning, klyngedannelse, kemisk speciation), transport (diffusion, viskositet) og termodynamiske egenskaber (vibrationelle spektrum).
Vi har udviklet en Python-baseret open source-pakke til at analysere resultaterne stammer fra ab initio molekylær-dynamik simuleringer af væsker. Pakken er bedst egnet til applikationer på naturlige systemer, som silikat og oxid smelter, vandbaserede væsker, og forskellige superkritiske væsker. Pakken er en samling af Python scripts, der omfatter to store biblioteker, der beskæftiger sig med filformater og med krystallografi. Alle scripts køres på kommandolinjen. Vi foreslår et forenklet format til lagring af atombaner og relevante termodynamiske oplysninger om simuleringerne, som gemmes i UMD-filer, der står for Universal Molecular Dynamics. UMD-pakken gør det muligt at beregning af en række strukturelle, transport- og termodynamiske egenskaber. Begyndende med parfordelingsfunktionen definerer den bindingslængder, opbygger en interatomar konnektivitetsmatrix og bestemmer til sidst den kemiske speciation. Bestemmelse af den kemiske arts levetid gør det muligt at køre en fuld statistisk analyse. Derefter beregner dedikerede scripts de gennemsnitlige firkantede forskydninger for atomer såvel som for den kemiske art. Den implementerede selvkorrelationsanalyse af atomhastighederne giver diffusionskoefficienterne og vibrationsspektret. Den samme analyse, der anvendes på stress giver viskositet. Pakken er tilgængelig via GitHub hjemmeside og via sin egen dedikerede side af ERC IMPACT projektet som open-access pakke.
Væsker og smelter er aktive kemiske og fysiske transportvektorer i naturlige miljøer. De forhøjede satser for atom diffusion favorisere kemiske udvekslinger og reaktioner, den lave viskositet kombineret med varierende opdrift favoriserer stor masseoverførsel, og krystal-smelte tæthed relationer favorisere lagdeling inde planetariske organer. Fraværet af et periodisk gitter, typiske høje temperaturer, der kræves for at nå den smeltede tilstand, og vanskeligheden ved at slukke gør den eksperimentelle bestemmelse af en række indlysende egenskaber, som tæthed, diffusion og viskositet, ekstremt udfordrende. Disse vanskeligheder gør alternative beregningsmetoder stærke og nyttige værktøjer til at undersøge denne klasse af materialer.
Med fremkomsten af computerkraft og tilgængeligheden af supercomputere anvendes der i øjeblikket to store numeriske atomistiske simuleringsteknikker til at studere den dynamiske tilstand af et ikke-krystallinsk atomistisk system, Monte Carlo1 og molekylær dynamik (MD)1,2. I Monte Carlo simuleringer er konfigurationsrummet tilfældigt udtaget; Monte Carlo metoder viser lineær skalering i parallelisering, hvis alle prøveudtagning observationer er uafhængige af hinanden. Kvaliteten af resultaterne afhænger af kvaliteten af generatoren af tilfældige tal og prøveudtagningens repræsentativitet. Monte Carlo metoder viser lineær skalering i parallelisering, hvis prøveudtagningen er uafhængig af hinanden. I molekylær dynamik (MD) prøves konfigurationsrummet efter tidsafhængige atombaner. Startende fra en given konfiguration, er atomare baner beregnes ved at integrere newtonske ligninger af bevægelse. De interatomare kræfter kan beregnes ved hjælp af model interatomare potentialer (i klassisk MD) eller ved hjælp af første principper metoder (i ab initio, eller første principper, MD). Kvaliteten af resultaterne afhænger af længden af banen og dens evne til ikke at blive tiltrukket af lokale minima.
Molekylære dynamik simuleringer indeholder en overflod af information, alle relateret til den dynamiske adfærd i systemet. Termodynamiske gennemsnitlige egenskaber, som intern energi, temperatur og tryk, er ret standard at beregne. De kan udvindes fra outputfilen eller -filerne af simuleringerne og beregnes i gennemsnit, mens mængder, der er direkte forbundet med atomernes bevægelse samt deres gensidige relation, skal beregnes efter udvinding af atompositioner og hastigheder.
Derfor har en stor indsats været dedikeret til at visualisere resultaterne, og forskellige pakker er tilgængelige i dag, på forskellige platforme, open source eller ej [Ovito3, VMD4, Vesta5, Travis6 osv.]. Alle disse visualiseringsværktøjer beskæftiger sig effektivt med interatomare afstande, og som sådan tillader de effektiv beregning af parfordelingsfunktioner og diffusionskoefficienter. Forskellige grupper, der udfører store molekylære dynamik simuleringer har proprietære software til at analysere forskellige andre egenskaber som følge af simuleringer, undertiden i shareware eller andre former for begrænset adgang til samfundet, og undertiden begrænset i omfang og brug til nogle specifikke pakker. Sofistikerede algoritmer til at udtrække oplysninger om interatomar limning, geometriske mønstre og termodynamik er udviklet og implementeret i nogle af disse pakker3,4,5,6,7 osv.
Her foreslår vi UMD-pakken – en open source-pakke skrevet i Python for at analysere produktionen af molekylære dynamics simuleringer. UMD-pakken giver mulighed for beregning af en lang række strukturelle, dynamiske og termodynamiske egenskaber (figur 1). Pakken er tilgængelig via GitHubs hjemmeside (https://github.com/rcaracas/UMD_package) og via en dedikeret side (http://moonimpact.eu/umd-package/) af ERC IMPACT-projektet som en open-access-pakke.
For at gøre det universelt og lettere at håndtere, er vores tilgang først at udtrække alle de oplysninger, der er relateret til den termodynamiske tilstand og atomare baner fra outputfilen i den faktiske molekylære dynamikkørsel. Disse oplysninger gemmes i en dedikeret fil, hvis format er uafhængigt af den oprindelige MD-pakke, hvor simuleringen blev kørt. Vi navngiver disse filer “umd” filer, som står for Universal Molecular Dynamics. På denne måde kan vores UMD-pakke nemt bruges af enhver ab initio gruppe med enhver software, alt sammen med en minimal indsats for tilpasning. Det eneste krav for at bruge den nuværende pakke er at skrive den relevante parser fra output af den pågældende MD-software i umd-filformatet, hvis dette endnu ikke er eksisterende. For øjeblikket leverer vi sådanne parsere til VASP8 og QBox9-pakkerne.
Figur 1: Rutediagram over UMD-biblioteket.
Fysiske egenskaber er i blå, og store Python scripts og deres muligheder er i rødt. Klik her for at se en større version af dette tal.
Umd-filerne er ASCII-filer. typisk udvidelse er “umd.dat”, men ikke obligatorisk. Alle analysekomponenter kan læse ASCII-filer i UMD-formatet, uanset det faktiske navneudvidelse. Men nogle af de automatiske scripts designet til at udføre hurtige store statistikker over flere simuleringer specifikt kigge efter filer med umd.dat udvidelse. Hver fysisk egenskab udtrykkes på én linje. Hver linje starter med et nøgleord. På denne måde formatet er meget tilpasningsdygtige og giver mulighed for nye egenskaber, der skal føjes til umd-filen, alt imens bevare dens læsbarhed i hele versioner. De første 30 linjer i umd-filen af simuleringen af pyrolit ved 4,6 GPa og 3000 K, der anvendes nedenfor i diskussionen, er vist i figur 2.
Figur 2: Begyndelsen af umd-filen, der beskriver simuleringen af flydende pyrolit ved 4,6 GPa og 3000 K.
Overskriften efterfølges af beskrivelsen af hvert øjebliksbillede. Hver egenskab er skrevet på én linje, der indeholder navnet på den fysiske egenskab, værdien eller værdien og enhederne, alle adskilt af mellemrum. Klik her for at se en større version af dette tal.
Alle umd-filer indeholder en header, der beskriver indholdet af simuleringscellen: antallet af atomer, elektroner og atomtyper samt detaljer for hvert atom, såsom dets type, kemisk symbol, antal valenselektroner og dets masse. En tom linje markerer slutningen af sidehovedet og adskiller den fra hoveddelen af umd-filen.
Derefter er hvert trin i simuleringen detaljeret. For det første angives de øjeblikkelige termodynamiske parametre, hver på en anden linje, med angivelse af (i) navnet på parameteren, som energi, belastninger, tilsvarende hydrostatisk tryk, tæthed, volumen, gitterparametre osv., (ii) dens værdi (r) og (iii) dens enheder. En tabel, der beskriver atomer kommer næste. En overskriftslinje giver de forskellige mål, f.eks. kartesiske positioner, hastigheder, gebyrer osv. Derefter er hvert atom beskrevet på en linje. Ved grupper på tre, svarende til de tre x, y, z akser, posterne er: de reducerede positioner, de kartesiske positioner foldet ind i simuleringscellen, de kartesiske positioner (der korrekt tager hensyn til det faktum, at atomer kan krydse flere enhedsceller under en simulering), atomare hastigheder og atomstyrkerne. De sidste to indgange er skalarer: opladning og magnetisk øjeblik.
To store biblioteker sikrer, at hele pakken fungerer korrekt. Det umd_process.py bibliotek beskæftiger sig med umd filer, som læsning og udskrivning. Det crystallography.py bibliotek beskæftiger sig med alle de oplysninger, der er relateret til den faktiske atomare struktur. Den underliggende filosofi i crystallography.py bibliotek er at behandle gitteret som et vektorielt rum. Enhedscelleparametrene sammen med deres orientering repræsenterer basisvektorerne. “Rummet” har en række skalaregenskaber (specifik volumen, densitet, temperatur og specifikt antal atomer), termodynamiske egenskaber (intern energi, tryk, varmekapacitet osv.) og en række spændte egenskaber (stress og elasticitet). Atomer udfylder dette rum. “Lattice” klassen definerer dette ensemble, sammen med forskellige få korte beregninger, som specifikke volumen, tæthed, opnå den gensidige gitter fra den direkte, osv. Klassen “Atomer” definerer atomer. De er karakteriseret ved en række skalaregenskaber (navn, symbol, masse, antal elektroner osv.) og en række vektoregenskaber (positionen i rummet, enten i forhold til det vektorbaserede grundlag, der er beskrevet i gitterklassen, eller i forhold til universelle kartesiske koordinater, hastigheder, kræfter osv.). Bortset fra disse to klasser indeholder crystallography.py biblioteket en række funktioner til at udføre en række tests og beregninger, såsom atomafstande eller celle multiplikation. Elementernes periodiske system medtages også som en ordbog.
De forskellige komponenter i umd-pakken skriver flere outputfiler. Som hovedregel er de alle ASCII-filer, alle deres poster er adskilt af faner, og de er lavet så selvforklarende som muligt. For eksempel angiver de altid tydeligt den fysiske ejendom og dens enheder. Umd.dat filer fuldt ud overholder denne regel.
UMD-pakken er designet til at fungere bedre med ab initio simuleringer, hvor antallet af snapshots typisk er begrænset til titusinder til hundredtusindvis af snapshots, med et par hundrede atomer pr. enhedscelle. Større simuleringer kan også kan leveres, forudsat at den maskine, hvor efterbehandlingskørslerne har nok aktive hukommelsesressourcer. Koden adskiller sig ved de mange forskellige egenskaber, den kan beregne, og ved sin open source-licens.
Umd.dat filer er passende til ensembler, der bevarer antallet af partikler uændret i hele simuleringen. UMD-pakken kan læse filer, der stammer fra beregninger, hvor simuleringsboksens form og volumen varierer. Disse dækker de mest almindelige beregninger, som NVT og NPT, hvor antallet af partikler, N, temperatur T, volumen, V og / eller tryk, P, holdes konstant.
For den tid begynder parret distribution funktion samt alle de scripts, der har brug for at estimere de interatomare afstande, ligesom speciation scripts, arbejde kun for ortogonale enhed celler, hvilket betyder for kubiske, tetragonale og ortopædiske celler, hvor vinklerne mellem akserne er 90 °.
De vigtigste udviklingslinjer for version 2.0 er fjernelse af ortogonalitetsbegrænsningen for afstande og tilføjelse af flere funktioner til speciationscripts: at analysere individuelle kemiske bindinger, at analysere de interatomare vinkler og at implementere den anden koordineringssfære. Med hjælp fra eksternt samarbejde arbejder vi på at portere koden til en GPU for hurtigere analyse i større systemer.
The authors have nothing to disclose.
Dette arbejde blev støttet af Det Europæiske Forskningsråd (ERC) under EU’s Horisont 2020-forsknings- og innovationsprogram (tilskudsaftalenummer 681818 IMPACT til RC), af Direktoratet for Ekstrem Fysik og Kemi under Deep Carbon Observatory og af Norges Forskningsråd gennem dets Centers of Excellence-finansieringsordning, projektnummer 223272. Vi anerkender adgang til GENCI supercomputere gennem stl2816-serien af eDARI computing tilskud, til Irene AMD supercomputer gennem PRACE RA4947 projektet, og Fram supercomputer gennem UNINETT Sigma2 NN9697K. FS blev støttet af et Marie Skłodowska-Curie-projekt (tilskudsaftale ABISSE No.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 |