Les fusions et les fluides sont des vecteurs omniprésents de transport de masse dans les systèmes naturels. Nous avons développé un progiciel open source pour analyser les simulations de dynamique moléculaire ab initio de tels systèmes. Nous calculons les propriétés structurelles (liaison, clusterisation, spéciation chimique), de transport (diffusion, viscosité) et thermodynamiques (spectre vibratoire).
Nous avons développé un paquet open-source basé sur Python pour analyser les résultats issus de simulations de dynamique moléculaire ab initio de fluides. L’emballage est le mieux adapté aux applications sur les systèmes naturels, comme les fondus de silicate et d’oxyde, les fluides à base d’eau et divers fluides supercritiques. Le paquet est une collection de scripts Python qui incluent deux bibliothèques majeures traitant des formats de fichiers et de la cristallographie. Tous les scripts sont exécutés sur la ligne de commande. Nous proposons un format simplifié pour stocker les trajectoires atomiques et les informations thermodynamiques pertinentes des simulations, qui sont enregistrées dans des fichiers UMD, pour Universal Molecular Dynamics. Le package UMD permet le calcul d’une série de propriétés structurelles, de transport et thermodynamiques. En commençant par la fonction de distribution par paires, il définit les longueurs de liaison, construit une matrice de connectivité interatomique et détermine finalement la spéciation chimique. La détermination de la durée de vie de l’espèce chimique permet d’effectuer une analyse statistique complète. Ensuite, des scripts dédiés calculent les déplacements moyens-carrés pour les atomes ainsi que pour les espèces chimiques. L’analyse d’autocorrélation mise en œuvre des vitesses atomiques donne les coefficients de diffusion et le spectre vibratoire. La même analyse appliquée sur les contraintes donne la viscosité. Le package est disponible via le site Web GitHub et via sa propre page dédiée du projet ERC IMPACT en tant que package en libre accès.
Les fluides et les fondus sont des vecteurs de transport chimiques et physiques actifs dans les environnements naturels. Les taux élevés de diffusion atomique favorisent les échanges et les réactions chimiques, la faible viscosité associée à une flottabilité variable favorise un transfert de masse important, et les relations de densité cristal-fusion favorisent la superposition à l’intérieur des corps planétaires. L’absence de réseau périodique, les températures élevées typiques requises pour atteindre l’état fondu et la difficulté de trempe rendent la détermination expérimentale d’une série de propriétés évidentes, telles que la densité, la diffusion et la viscosité, extrêmement difficile. Ces difficultés font des méthodes de calcul alternatives des outils solides et utiles pour étudier cette classe de matériaux.
Avec l’avènement de la puissance de calcul et la disponibilité des superordinateurs, deux techniques majeures de simulations atomistiques numériques sont actuellement utilisées pour étudier l’état dynamique d’un système atomistique non cristallin, Monte Carlo1 et la dynamique moléculaire (MD)1,2. Dans les simulations de Monte Carlo, l’espace de configuration est échantillonné de manière aléatoire ; Les méthodes de Monte Carlo montrent une mise à l’échelle linéaire en parallélisation si toutes les observations d’échantillonnage sont indépendantes les unes des autres. La qualité des résultats dépend de la qualité du générateur de nombres aléatoires et de la représentativité de l’échantillonnage. Les méthodes de Monte Carlo montrent une mise à l’échelle linéaire en parallélisation si l’échantillonnage est indépendant les uns des autres. En dynamique moléculaire (MD), l’espace de configuration est échantillonné par des trajectoires atomiques dépendantes du temps. A partir d’une configuration donnée, les trajectoires atomiques sont calculées en intégrant les équations newtoniennes du mouvement. Les forces interatomiques peuvent être calculées à l’aide de potentiels interatomiques modèles (dans la DM classique) ou à l’aide de méthodes de premiers principes (in ab initio, ou premiers principes, MD). La qualité des résultats dépend de la longueur de la trajectoire et de sa capacité à ne pas être attirée par les minima locaux.
Les simulations de dynamique moléculaire contiennent une pléthore d’informations, toutes liées au comportement dynamique du système. Les propriétés moyennes thermodynamiques, comme l’énergie interne, la température et la pression, sont plutôt standard à calculer. Ils peuvent être extraits du ou des fichiers de sortie des simulations et moyennés, tandis que les quantités directement liées au mouvement des atomes ainsi qu’à leur relation mutuelle doivent être calculées après extraction des positions atomiques et des vitesses.
Par conséquent, beaucoup d’efforts ont été consacrés à la visualisation des résultats, et divers paquets sont disponibles aujourd’hui, sur différentes plateformes, open source ou non [Ovito3, VMD4, Vesta5, Travis6, etc.]. Tous ces outils de visualisation traitent efficacement les distances interatomiques et, en tant que tels, ils permettent le calcul efficace des fonctions de distribution des paires et des coefficients de diffusion. Divers groupes effectuant des simulations de dynamique moléculaire à grande échelle disposent d’un logiciel propriétaire pour analyser diverses autres propriétés résultant des simulations, parfois dans des sharewares ou d’autres formes d’accès limité à la communauté, et parfois limités dans la portée et l’utilisation à certains paquets spécifiques. Des algorithmes sophistiqués pour extraire des informations sur la liaison interatomique, les motifs géométriques et la thermodynamique sont développés et mis en œuvre dans certains de ces packages3,4,5,6,7, etc.
Nous proposons ici le paquet UMD – un paquet open-source écrit en Python pour analyser le résultat des simulations de dynamique moléculaire. Le package UMD permet de calculer un large éventail de propriétés structurelles, dynamiques et thermodynamiques (Figure 1). Le package est disponible via le site Web GitHub (https://github.com/rcaracas/UMD_package) et via une page dédiée (http://moonimpact.eu/umd-package/) du projet ERC IMPACT en tant que package en libre accès.
Pour le rendre universel et plus facile à manipuler, notre approche consiste d’abord à extraire toutes les informations relatives à l’état thermodynamique et aux trajectoires atomiques du fichier de sortie de l’exécution de la dynamique moléculaire réelle. Ces informations sont stockées dans un fichier dédié, dont le format est indépendant du package MD d’origine où la simulation a été exécutée. Nous nommons ces fichiers « umd » files, ce qui signifie Universal Molecular Dynamics. De cette façon, notre package UMD peut être facilement utilisé par n’importe quel groupe ab initio avec n’importe quel logiciel, le tout avec un minimum d’effort d’adaptation. La seule exigence pour utiliser le package actuel est d’écrire l’analyseur approprié à partir de la sortie du logiciel MD particulier dans le format de fichier umd, si celui-ci n’existe pas encore. Pour le moment, nous fournissons de tels analyseurs pour les packages VASP8 et QBox9 .
Figure 1 : Organigramme de la bibliothèque UMD.
Les propriétés physiques sont en bleu, et les principaux scripts Python et leurs options sont en rouge. Veuillez cliquer ici pour voir une version agrandie de cette figure.
Les fichiers umd sont des fichiers ASCII ; l’extension typique est « umd.dat » mais pas obligatoire. Tous les composants d’analyse peuvent lire les fichiers ASCII du format umd, quelle que soit l’extension de nom réelle. Cependant, certains des scripts automatiques conçus pour effectuer des statistiques rapides à grande échelle sur plusieurs simulations recherchent spécifiquement des fichiers avec l’extension umd.dat. Chaque propriété physique est exprimée sur une ligne. Chaque ligne commence par un mot-clé. De cette façon, le format est très adaptable et permet d’ajouter de nouvelles propriétés au fichier umd, tout en préservant sa lisibilité tout au long des versions. Les 30 premières lignes du fichier umd de la simulation de pyrolite à 4,6 GPa et 3000 K, utilisées ci-dessous dans la discussion, sont illustrées à la figure 2.
Figure 2 : Début du fichier umd décrivant la simulation de pyrolite liquide à 4,6 GPa et 3000 K.
L’en-tête est suivi de la description de chaque instantané. Chaque propriété est écrite sur une ligne, contenant le nom de la propriété physique, la ou les valeurs et les unités, toutes séparées par des espaces. Veuillez cliquer ici pour voir une version agrandie de cette figure.
Tous les fichiers umd contiennent un en-tête décrivant le contenu de la cellule de simulation : le nombre d’atomes, d’électrons et de types atomiques, ainsi que des détails pour chaque atome, tels que son type, son symbole chimique, le nombre d’électrons de valence et sa masse. Une ligne vide marque la fin de l’en-tête et le sépare de la partie principale du fichier umd.
Ensuite, chaque étape de la simulation est détaillée. Tout d’abord, les paramètres thermodynamiques instantanés sont donnés, chacun sur une ligne différente, en spécifiant (i) le nom du paramètre, comme l’énergie, les contraintes, la pression hydrostatique équivalente, la densité, le volume, les paramètres du réseau, etc., (ii) sa ou ses valeurs, et (iii) ses unités. Un tableau décrivant les atomes vient ensuite. Une ligne d’en-tête donne les différentes mesures, comme les positions cartésiennes, les vitesses, les charges, etc., et leurs unités. Ensuite, chaque atome est détaillé sur une ligne. Par groupes de trois, correspondant aux trois axes x, y, z , les entrées sont : les positions réduites, les positions cartésiennes repliées dans la cellule de simulation, les positions cartésiennes (qui tiennent correctement compte du fait que les atomes peuvent traverser plusieurs cellules unitaires au cours d’une simulation), les vitesses atomiques et les forces atomiques. Les deux dernières entrées sont des scalaires : charge et moment magnétique.
Deux grandes bibliothèques assurent le bon fonctionnement de l’ensemble du paquet. La bibliothèque umd_process.py traite des fichiers umd, comme la lecture et l’impression. La bibliothèque crystallography.py traite de toutes les informations relatives à la structure atomique réelle. La philosophie sous-jacente de la bibliothèque crystallography.py est de traiter le réseau comme un espace vectoriel. Les paramètres de la cellule unitaire ainsi que leur orientation représentent les vecteurs de base. L’« Espace » possède une série d’attributs scalaires (volume spécifique, densité, température et nombre spécifique d’atomes), des propriétés thermodynamiques (énergie interne, pression, capacité thermique, etc.) et une série de propriétés tensorielles (contrainte et élasticité). Les atomes peuplent cet espace. La classe « Lattice » définit cet ensemble, à côté de quelques calculs courts, comme le volume spécifique, la densité, l’obtention du réseau réciproque à partir du réseau direct, etc. La classe « Atoms » définit les atomes. Ils sont caractérisés par une série de propriétés scalaires (nom, symbole, masse, nombre d’électrons, etc.) et une série de propriétés vectorielles (la position dans l’espace, soit par rapport à la base vectorielle décrite dans la classe de Réseau, soit par rapport aux coordonnées cartésiennes universelles, vitesses, forces, etc.). En dehors de ces deux classes, la bibliothèque crystallography.py contient une série de fonctions pour effectuer une variété de tests et de calculs, tels que les distances atomiques ou la multiplication cellulaire. Le tableau périodique des éléments est également inclus sous forme de dictionnaire.
Les différents composants du package umd écrivent plusieurs fichiers de sortie. En règle générale, ce sont tous des fichiers ASCII, toutes leurs entrées sont séparées par des onglets et elles sont rendues aussi explicites que possible. Par exemple, ils indiquent toujours clairement la propriété physique et ses unités. Les fichiers umd.dat sont entièrement conformes à cette règle.
Le package UMD a été conçu pour mieux fonctionner avec les simulations ab initio, où le nombre d’instantanés est généralement limité à des dizaines à des centaines de milliers d’instantanés, avec quelques centaines d’atomes par unité de cellule. Des simulations plus importantes sont également accessibles à condition que la machine sur laquelle le post-traitement s’exécute dispose de suffisamment de ressources de mémoire active. Le code se distingue par la variété des propriétés qu’il peut calculer et par sa licence open-source.
Les fichiers umd.dat sont adaptés aux ensembles qui préservent le nombre de particules inchangé tout au long de la simulation. Le package UMD peut lire des fichiers issus de calculs où la forme et le volume de la boîte de simulation varient. Ceux-ci couvrent les calculs les plus courants, comme NVT et NPT, où le nombre de particules, N, la température T, le volume, V et / ou la pression, P, sont maintenus constants.
Pour le moment où commencez, la fonction de distribution des paires ainsi que tous les scripts nécessaires pour estimer les distances interatomiques, comme les scripts de spéciation, ne fonctionnent que pour les cellules unitaires orthogonales, c’est-à-dire pour les cellules cubiques, tétragonales et orthorhombiques, où les angles entre les axes sont de 90 °.
Les principales lignes de développement de la version 2.0 sont la suppression de la restriction d’orthogonalité pour les distances et l’ajout de fonctionnalités supplémentaires pour les scripts de spéciation: analyser les liaisons chimiques individuelles, analyser les angles interatomiques et mettre en œuvre la deuxième sphère de coordination. Avec l’aide d’une collaboration externe, nous travaillons sur le portage du code sur un GPU pour une analyse plus rapide dans les systèmes plus grands.
The authors have nothing to disclose.
Ces travaux ont été soutenus par le Conseil européen de la recherche (CER) dans le cadre du programme de recherche et d’innovation Horizon 2020 de l’Union européenne (numéro de convention de subvention 681818 IMPACT à RC), par la Direction de la physique et de la chimie extrêmes de l’Observatoire du carbone profond et par le Conseil norvégien de la recherche par le biais de son programme de financement des centres d’excellence, numéro de projet 223272. Nous reconnaissons l’accès aux supercalculateurs GENCI par le biais de la série stl2816 de subventions de calcul eDARI, au supercalculateur Irene AMD par le biais du projet PRACE RA4947 et au supercalculateur Fram par le biais de l’UNINETT Sigma2 NN9697K. FS a été soutenu par un projet Marie Skłodowska-Curie (convention de subvention ABISSE n° 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 |