Los fundidos y fluidos son vectores ubicuos de transporte de masa en sistemas naturales. Hemos desarrollado un paquete de código abierto para analizar simulaciones de dinámica molecular ab initio de dichos sistemas. Calculamos las propiedades estructurales (unión, clusterización, especiación química), transporte (difusión, viscosidad) y termodinámicas (espectro vibratorio).
Hemos desarrollado un paquete de código abierto basado en Python para analizar los resultados derivados de simulaciones de dinámica molecular ab initio de fluidos. El paquete es el más adecuado para aplicaciones en sistemas naturales, como fundidos de silicato y óxido, fluidos a base de agua y varios fluidos supercríticos. El paquete es una colección de scripts de Python que incluyen dos bibliotecas principales que se ocupan de los formatos de archivo y la cristalografía. Todos los scripts se ejecutan en la línea de comandos. Proponemos un formato simplificado para almacenar las trayectorias atómicas y la información termodinámica relevante de las simulaciones, que se guarda en archivos UMD, que significa Dinámica Molecular Universal. El paquete UMD permite el cálculo de una serie de propiedades estructurales, de transporte y termodinámicas. Comenzando con la función de distribución de pares, define las longitudes de enlace, construye una matriz de conectividad interatómica y, finalmente, determina la especiación química. Determinar la vida útil de las especies químicas permite realizar un análisis estadístico completo. Luego, los scripts dedicados calculan los desplazamientos cuadráticos medios para los átomos, así como para las especies químicas. El análisis de autocorrelación implementado de las velocidades atómicas arroja los coeficientes de difusión y el espectro vibratorio. El mismo análisis aplicado sobre las tensiones produce la viscosidad. El paquete está disponible a través del sitio web de GitHub y a través de su propia página dedicada del proyecto ERC IMPACT como paquete de acceso abierto.
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.
El paquete UMD ha sido diseñado para funcionar mejor con simulaciones ab initio, donde el número de instantáneas generalmente se limita a decenas a cientos de miles de instantáneas, con unos pocos cientos de átomos por unidad de celda. Las simulaciones más grandes también son manejables siempre que la máquina en la que se ejecuta el posprocesamiento tenga suficientes recursos de memoria activos. El código se distingue por la variedad de propiedades que puede calcular y por su licencia de código abierto.
Los archivos umd.dat son apropiados para los conjuntos que conservan el número de partículas sin cambios a lo largo de la simulación. El paquete UMD puede leer archivos derivados de cálculos donde varía la forma y el volumen del cuadro de simulación. Estos cubren los cálculos más comunes, como NVT y NPT, donde el número de partículas, N, temperatura T, volumen, V y / o presión, P, se mantienen constantes.
Para el momento comienzan la función de distribución de pares, así como todas las escrituras que necesitan estimar las distancias interatómicas, como las escrituras de especiación, funcionan solo para células unitarias ortogonales, es decir, para células cúbicas, tetragonales y ortorrómbicas, donde los ángulos entre los ejes son de 90 °.
Las principales líneas de desarrollo para la versión 2.0 son la eliminación de la restricción de ortogonalidad para distancias y la adición de más características para los scripts de especiación: analizar enlaces químicos individuales, analizar los ángulos interatómicos e implementar la segunda esfera de coordinación. Con la ayuda de la colaboración externa, estamos trabajando en la migración del código a una GPU para un análisis más rápido en sistemas más grandes.
The authors have nothing to disclose.
Este trabajo fue apoyado por el Consejo Europeo de Investigación (ERC) en el marco del programa de investigación e innovación Horizonte 2020 de la Unión Europea (acuerdo de subvención número 681818 IMPACT a RC), por la Dirección de Física y Química Extrema del Observatorio de Carbono Profundo, y por el Consejo de Investigación de Noruega a través de su esquema de financiación de Centros de Excelencia, proyecto número 223272. Reconocemos el acceso a los superordenadores GENCI a través de la serie stl2816 de subvenciones informáticas eDARI, al superordenador Irene AMD a través del proyecto PRACE RA4947 y al superordenador Fram a través del UNINETT Sigma2 NN9697K. FS fue apoyado por un proyecto Marie Skłodowska-Curie (acuerdo de subvención 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 |