$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Los fluidos y los fundidos son vectores activos de transporte químico y físico en entornos naturales. Las elevadas tasas de difusión atómica favorecen los intercambios y reacciones químicas, la baja viscosidad junto con la flotabilidad variable favorecen la gran transferencia de masa y las relaciones de densidad de fusión cristalina favorecen la estratificación dentro de los cuerpos planetarios. La ausencia de una red periódica, las altas temperaturas típicas requeridas para alcanzar el estado fundido y la dificultad para el enfriamiento hacen que la determinación experimental de una serie de propiedades obvias, como la densidad, la difusión y la viscosidad, sea extremadamente desafiante. Estas dificultades hacen que los métodos computacionales alternativos sean herramientas fuertes y útiles para investigar esta clase de materiales.
Con el advenimiento de la potencia de cálculo y la disponibilidad de superordenadores, actualmente se emplean dos grandes técnicas de simulación atomística numérica para estudiar el estado dinámico de un sistema atomístico no cristalino, Monte Carlo1 y la dinámica molecular (MD)1,2. En las simulaciones de Monte Carlo, el espacio de configuración se muestrea aleatoriamente; Los métodos de Monte Carlo muestran una escala lineal en paralelización si todas las observaciones de muestreo son independientes entre sí. La calidad de los resultados depende de la calidad del generador de números aleatorios y de la representatividad del muestreo. Los métodos de Monte Carlo muestran escala lineal en paralelización si el muestreo es independiente entre sí. En dinámica molecular (DM) el espacio configuracional es muestreado por trayectorias atómicas dependientes del tiempo. A partir de una configuración dada, las trayectorias atómicas se calculan integrando las ecuaciones newtonianas de movimiento. Las fuerzas interatómicas se pueden calcular utilizando potenciales interatómicos modelo (en la DM clásica) o utilizando métodos de primeros principios (in ab initio, o primeros principios, MD). La calidad de los resultados depende de la longitud de la trayectoria y su capacidad para no sentirse atraído por los mínimos locales.
Las simulaciones de dinámica molecular contienen una gran cantidad de información, toda relacionada con el comportamiento dinámico del sistema. Las propiedades medias termodinámicas, como la energía interna, la temperatura y la presión, son bastante estándar para calcular. Pueden extraerse de los archivos de salida de las simulaciones y promediarse, mientras que las cantidades relacionadas directamente con el movimiento de los átomos, así como con su relación mutua, deben calcularse después de la extracción de las posiciones y velocidades atómicas.
En consecuencia, se ha dedicado mucho esfuerzo a visualizar los resultados, y varios paquetes están disponibles hoy en día, en diferentes plataformas, de código abierto o no [Ovito3, VMD4, Vesta5, Travis6, etc.]. Todas estas herramientas de visualización tratan eficientemente las distancias interatómicas, y como tales, permiten el cálculo eficiente de las funciones de distribución de pares y los coeficientes de difusión. Varios grupos que realizan simulaciones de dinámica molecular a gran escala tienen software patentado para analizar varias otras propiedades resultantes de las simulaciones, a veces en shareware u otras formas de acceso limitado a la comunidad, y a veces limitado en alcance y uso a algunos paquetes específicos. Algoritmos sofisticados para extraer información sobre enlaces interatómicos, patrones geométricos y termodinámica se desarrollan e implementan en algunos de estos paquetes3,4,5,6,7, etc.
Aquí proponemos el paquete UMD, un paquete de código abierto escrito en Python para analizar la salida de simulaciones de dinámica molecular. El paquete UMD permite el cálculo de una amplia gama de propiedades estructurales, dinámicas y termodinámicas (Figura 1). El paquete está disponible a través del sitio web de GitHub (https://github.com/rcaracas/UMD_package) y a través de una página dedicada (http://moonimpact.eu/umd-package/) del proyecto ERC IMPACT como un paquete de acceso abierto.
Para que sea universal y más fácil de manejar, nuestro enfoque es extraer primero toda la información relacionada con el estado termodinámico y las trayectorias atómicas del archivo de salida de la ejecución de dinámica molecular real. Esta información se almacena en un archivo dedicado, cuyo formato es independiente del paquete MD original donde se ejecutó la simulación. Llamamos a estos archivos archivos "umd", que significa Dinámica Molecular Universal. De esta manera, nuestro paquete UMD puede ser utilizado fácilmente por cualquier grupo ab initio con cualquier software, todo con un mínimo esfuerzo de adaptación. El único requisito para utilizar el paquete actual es escribir el analizador apropiado desde la salida del software MD en particular en el formato de archivo umd, si aún no existe. Por el momento, proporcionamos dichos analizadores para los paquetes VASP8 y QBox9 .

Figura 1: Diagrama de flujo de la biblioteca UMD.
Las propiedades físicas están en azul, y los principales scripts de Python y sus opciones están en rojo. Haga clic aquí para ver una versión más grande de esta figura.
Los archivos umd son archivos ASCII; la extensión típica es "umd.dat" pero no obligatoria. Todos los componentes de análisis pueden leer archivos ASCII del formato umd, independientemente de la extensión del nombre real. Sin embargo, algunos de los scripts automáticos diseñados para realizar estadísticas rápidas a gran escala en varias simulaciones buscan específicamente archivos con la extensión umd.dat. Cada propiedad física se expresa en una línea. Cada línea comienza con una palabra clave. De esta manera, el formato es altamente adaptable y permite agregar nuevas propiedades al archivo umd, al tiempo que conserva su legibilidad en todas las versiones. Las primeras 30 líneas del archivo umd de la simulación de pirolita a 4.6 GPa y 3000 K, utilizadas a continuación en la discusión, se muestran en la Figura 2.

Figura 2: El comienzo del archivo umd que describe la simulación de pirolita líquida a 4.6 GPa y 3000 K.
El encabezado va seguido de la descripción de cada instantánea. Cada propiedad se escribe en una línea, que contiene el nombre de la propiedad física, los valores y las unidades, todas separadas por espacios. Haga clic aquí para ver una versión más grande de esta figura.
Todos los archivos umd contienen un encabezado que describe el contenido de la celda de simulación: el número de átomos, electrones y tipos atómicos, así como detalles para cada átomo, como su tipo, símbolo químico, número de electrones de valencia y su masa. Una línea vacía marca el final del encabezado y lo separa de la parte principal del archivo umd.
Luego se detalla cada paso de la simulación. Primero, se dan los parámetros termodinámicos instantáneos, cada uno en una línea diferente, especificando (i) el nombre del parámetro, como energía, tensiones, presión hidrostática equivalente, densidad, volumen, parámetros de red, etc., (ii) su(s) valor(es), y (iii) sus unidades. A continuación se presenta una tabla que describe los átomos. Una línea de cabecera da las diferentes medidas, como posiciones cartesianas, velocidades, cargas, etc., y sus unidades. Luego, cada átomo se detalla en una línea. Por grupos de tres, correspondientes a los tres ejes x, y, z , las entradas son: las posiciones reducidas, las posiciones cartesianas plegadas en la celda de simulación, las posiciones cartesianas (que tienen debidamente en cuenta el hecho de que los átomos pueden atravesar varias celdas unitarias durante una simulación), las velocidades atómicas y las fuerzas atómicas. Las dos últimas entradas son escalares: carga y momento magnético.
Dos bibliotecas principales garantizan el correcto funcionamiento de todo el paquete. La biblioteca umd_process.py se ocupa de los archivos umd, como la lectura y la impresión. La biblioteca crystallography.py se ocupa de toda la información relacionada con la estructura atómica real. La filosofía subyacente de la biblioteca crystallography.py es tratar la red como un espacio vectorial. Los parámetros de la celda unitaria junto con su orientación representan los vectores base. El "Espacio" tiene una serie de atributos escalares (volumen específico, densidad, temperatura y número específico de átomos), propiedades termodinámicas (energía interna, presión, capacidad calorífica, etc.) y una serie de propiedades tensoriales (tensión y elasticidad). Los átomos pueblan este espacio. La clase "Lattice" define este conjunto, junto con varios cálculos cortos, como volumen específico, densidad, obtención de la red recíproca del directo, etc. La clase "Átomos" define los átomos. Se caracterizan por una serie de propiedades escalares (nombre, símbolo, masa, número de electrones, etc.) y una serie de propiedades vectoriales (la posición en el espacio, ya sea relativa a la base vectorial descrita en la clase Lattice, o relativa a coordenadas cartesianas universales, velocidades, fuerzas, etc.). Aparte de estas dos clases, la biblioteca de crystallography.py contiene una serie de funciones para realizar una variedad de pruebas y cálculos, como distancias atómicas o multiplicación de celdas. La tabla periódica de los elementos también se incluye como diccionario.
Los diversos componentes del paquete umd escriben varios archivos de salida. Como regla general, todos son archivos ASCII, todas sus entradas están separadas por pestañas y se hacen lo más autoexplicativas posible. Por ejemplo, siempre indican claramente la propiedad física y sus unidades. Los archivos umd.dat cumplen plenamente con esta regla.