$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Жидкости и расплавы являются активными химическими и физическими транспортными векторами в природных средах. Повышенные скорости атомной диффузии благоприятствуют химическим обменам и реакциям, низкая вязкость в сочетании с изменяющейся плавучестью способствует большому массопереносу, а отношения плотности кристаллов и расплава благоприятствуют наслоению внутри планетарных тел. Отсутствие периодической решетки, типичные высокие температуры, необходимые для достижения расплавленного состояния, и трудность закалки делают экспериментальное определение ряда очевидных свойств, таких как плотность, диффузия и вязкость, чрезвычайно сложным. Эти трудности делают альтернативные вычислительные методы сильными и полезными инструментами для исследования этого класса материалов.
С появлением вычислительной мощности и доступностью суперкомпьютеров в настоящее время используются два основных метода численного атомистического моделирования для изучения динамического состояния некристаллической атомистической системы, Monte Carlo1 и молекулярной динамики (MD)1,2. В моделировании Монте-Карло конфигурационное пространство выбирается случайным образом; Методы Монте-Карло показывают линейное масштабирование при распараллеливании, если все наблюдения выборки независимы друг от друга. Качество результатов зависит от качества генератора случайных чисел и репрезентативности выборки. Методы Монте-Карло показывают линейное масштабирование при распараллеливании, если выборка независима друг от друга. В молекулярной динамике (МД) конфигурационное пространство отбирается по зависящим от времени атомным траекториям. Начиная с заданной конфигурации, атомные траектории вычисляются путем интегрирования ньютоновских уравнений движения. Межатомные силы могут быть вычислены с использованием модельных межатомных потенциалов (в классическом MD) или с использованием методов первых принципов (in ab initio, или first-principles, MD). Качество результатов зависит от длины траектории и ее способности не притягиваться к локальным минимумам.
Моделирование молекулярной динамики содержит множество информации, связанной с динамическим поведением системы. Термодинамические средние свойства, такие как внутренняя энергия, температура и давление, довольно стандартны для расчета. Они могут быть извлечены из выходного файла (файлов) моделирования и усреднены, тогда как величины, связанные непосредственно с движением атомов, а также с их взаимосвязью, должны быть вычислены после извлечения атомных положений и скоростей.
Следовательно, много усилий было посвящено визуализации результатов, и сегодня доступны различные пакеты, на разных платформах, с открытым исходным кодом или нет [Ovito3, VMD4, Vesta5, Travis6 и т. Д.]. Все эти инструменты визуализации эффективно справляются с межатомными расстояниями, и поэтому они позволяют эффективно вычислять функции распределения пар и коэффициенты диффузии. Различные группы, выполняющие крупномасштабное моделирование молекулярной динамики, имеют проприетарное программное обеспечение для анализа различных других свойств, возникающих в результате моделирования, иногда в условно-бесплатных или других формах ограниченного доступа к сообществу, а иногда ограниченных по объему и использованию некоторыми конкретными пакетами. Сложные алгоритмы извлечения информации о межатомных связях, геометрических закономерностях и термодинамике разработаны и реализованы в некоторых из этих пакетов3,4,5,6,7 и т.д.
Здесь мы предлагаем пакет UMD - пакет с открытым исходным кодом, написанный на Python для анализа результатов моделирования молекулярной динамики. Пакет UMD позволяет вычислять широкий спектр структурных, динамических и термодинамических свойств (рисунок 1). Пакет доступен через веб-сайт GitHub (https://github.com/rcaracas/UMD_package) и через специальную страницу (http://moonimpact.eu/umd-package/) проекта ERC IMPACT в качестве пакета открытого доступа.
Чтобы сделать его универсальным и простым в обращении, наш подход заключается в том, чтобы сначала извлечь всю информацию, связанную с термодинамическим состоянием и атомными траекториями, из выходного файла фактического молекулярно-динамического запуска. Эта информация хранится в выделенном файле, формат которого не зависит от исходного пакета MD, в котором выполнялось моделирование. Мы называем эти файлы «umd» files, что расшифровывается как Universal Molecular Dynamics. Таким образом, наш пакет UMD может быть легко использован любой группой ab initio с любым программным обеспечением, и все это с минимальными усилиями по адаптации. Единственным требованием для использования настоящего пакета является запись соответствующего парсера из выходных данных конкретного программного обеспечения MD в формат файла umd, если этого еще не существует. В настоящее время мы предоставляем такие парсеры для пакетов VASP8 и QBox9 .

Рисунок 1: Блок-схема библиотеки UMD.
Физические свойства выделены синим цветом, а основные скрипты Python и их параметры — красным. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.
Файлы umd являются файлами ASCII; Типичным расширением является "umd.dat", но не обязательно. Все компоненты анализа могут считывать ASCII-файлы формата umd, независимо от фактического расширения имени. Тем не менее, некоторые из автоматических скриптов, предназначенных для выполнения быстрой крупномасштабной статистики в нескольких симуляциях, специально ищут файлы с расширением umd.dat. Каждое физическое свойство выражается в одной строке. Каждая строка начинается с ключевого слова. Таким образом, формат легко адаптируется и позволяет добавлять новые свойства в файл umd, сохраняя при этом его читабельность во всех версиях. Первые 30 строк umd-файла моделирования пиролита при 4,6 ГПа и 3000 К, использованные ниже в обсуждении, показаны на рисунке 2.

Рисунок 2: Начало файла umd, описывающего моделирование жидкого пиролита при 4,6 ГПа и 3000 К.
За заголовком следует описание каждого снимка. Каждое свойство записывается в одну строку, содержащую имя физического свойства, значение (значения) и единицы, разделенные пробелами. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.
Все файлы umd содержат заголовок, описывающий содержимое ячейки моделирования: количество атомов, электронов и атомных типов, а также детали для каждого атома, такие как его тип, химический символ, количество валентных электронов и его масса. Пустая строка отмечает конец заголовка и отделяет его от основной части файла umd.
Затем каждый шаг моделирования детализируется. Во-первых, задаются мгновенные термодинамические параметры, каждый на отдельной строке, указывая (i) название параметра, например, энергию, напряжения, эквивалентное гидростатическое давление, плотность, объем, параметры решетки и т. Д., (ii) его значение (значения) и (iii) его единицы. Далее следует таблица, описывающая атомы. Строка заголовка дает различные меры, такие как декартовы позиции, скорости, заряды и т. Д., И их единицы. Затем каждый атом детализируется на одной строке. Группами по три, соответствующие трем осям x, y, z , записи следующие: уменьшенные позиции, декартовы позиции, сложенные в ячейку моделирования, декартовы положения (которые должным образом учитывают тот факт, что атомы могут пересекать несколько единичных ячеек во время моделирования), атомные скорости и атомные силы. Последние две записи являются скалярами: заряд и магнитный момент.
Две основные библиотеки обеспечивают надлежащее функционирование всего пакета. Библиотека umd_process.py имеет дело с файлами umd, такими как чтение и печать. Библиотека crystallography.py имеет дело со всей информацией, связанной с фактической структурой атома. Основная философия библиотеки crystallography.py заключается в том, чтобы рассматривать решетку как векторное пространство. Параметры ячейки единицы вместе с их ориентацией представляют собой базовые векторы. «Пространство» имеет ряд скалярных атрибутов (удельный объем, плотность, температура и удельное число атомов), термодинамические свойства (внутренняя энергия, давление, теплоемкость и т. д.) и ряд тензорных свойств (напряжение и упругость). Атомы заполняют это пространство. Класс «Решетка» определяет этот ансамбль, наряду с различными короткими вычислениями, такими как конкретный объем, плотность, получение обратной решетки из прямой и т. Д. Класс "Atoms" определяет атомы. Они характеризуются рядом скалярных свойств (имя, символ, масса, количество электронов и др.) и рядом векторных свойств (положение в пространстве либо относительно векторного базиса, описанного в классе Решётки, либо относительно универсальных декартовых координат, скоростей, сил и т.д.). Помимо этих двух классов, библиотека crystallography.py содержит ряд функций для выполнения различных тестов и вычислений, таких как атомные расстояния или умножение ячеек. Периодическая таблица элементов также включена в качестве словаря.
Различные компоненты пакета umd записывают несколько выходных файлов. Как правило, все они представляют собой файлы ASCII, все их записи разделены вкладками, и они сделаны максимально понятными. Например, в них всегда четко указывается физическое свойство и его единицы. Файлы umd.dat полностью соответствуют этому правилу.