Расплавы и жидкости являются вездесущими векторами массового переноса в природных системах. Мы разработали пакет с открытым исходным кодом для анализа ab initio молекулярно-динамического моделирования таких систем. Мы вычисляем структурные (связывание, кластеризация, химическое видообразование), перенос (диффузия, вязкость) и термодинамические свойства (вибрационный спектр).
Мы разработали пакет с открытым исходным кодом на основе Python для анализа результатов, полученных в результате моделирования ab initio молекулярной динамики жидкостей. Пакет лучше всего подходит для применения в природных системах, таких как силикатные и оксидные расплавы, жидкости на водной основе и различные сверхкритические жидкости. Пакет представляет собой коллекцию скриптов Python, которые включают в себя две основные библиотеки, работающие с форматами файлов и кристаллографией. Все скрипты выполняются в командной строке. Мы предлагаем упрощенный формат для хранения атомных траекторий и соответствующей термодинамической информации моделирования, которая сохраняется в файлах UMD, что означает универсальная молекулярная динамика. Пакет UMD позволяет вычислять ряд структурных, транспортных и термодинамических свойств. Начиная с функции распределения пар, он определяет длины связей, строит матрицу межатомной связности и в конечном итоге определяет химическое видообразование. Определение времени жизни химических видов позволяет провести полный статистический анализ. Затем специальные скрипты вычисляют среднеквадратичные смещения для атомов, а также для химических видов. Реализованный самокорреляционный анализ атомных скоростей дает коэффициенты диффузии и вибрационный спектр. Тот же анализ, примененный к напряжениям, дает вязкость. Пакет доступен через веб-сайт GitHub и через собственную специальную страницу проекта ERC IMPACT в виде пакета открытого доступа.
Жидкости и расплавы являются активными химическими и физическими транспортными векторами в природных средах. Повышенные скорости атомной диффузии благоприятствуют химическим обменам и реакциям, низкая вязкость в сочетании с изменяющейся плавучестью способствует большому массопереносу, а отношения плотности кристаллов и расплава благоприятствуют наслоению внутри планетарных тел. Отсутствие периодической решетки, типичные высокие температуры, необходимые для достижения расплавленного состояния, и трудность закалки делают экспериментальное определение ряда очевидных свойств, таких как плотность, диффузия и вязкость, чрезвычайно сложным. Эти трудности делают альтернативные вычислительные методы сильными и полезными инструментами для исследования этого класса материалов.
С появлением вычислительной мощности и доступностью суперкомпьютеров в настоящее время используются два основных метода численного атомистического моделирования для изучения динамического состояния некристаллической атомистической системы, 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 полностью соответствуют этому правилу.
Пакет UMD был разработан для лучшей работы с моделированием ab initio, где количество снимков обычно ограничивается десятками и сотнями тысяч снимков, с несколькими сотнями атомов на единицу ячейки. Более крупные симуляции также поддаются обработке при условии, что машина, на которой выполняется постобработка, имеет достаточно активных ресурсов памяти. Код отличается разнообразием свойств, которые он может вычислять, и лицензией с открытым исходным кодом.
Файлы umd.dat соответствуют ансамблям, которые сохраняют количество частиц неизменным на протяжении всего моделирования. Пакет UMD может считывать файлы, полученные в результате вычислений, где форма и объем блока моделирования различаются. Они охватывают наиболее распространенные расчеты, такие как NVT и NPT, где количество частиц N, температура T, объем, V и / или давление, P, остаются постоянными.
Для начала работы функция распределения пар, а также все скрипты, необходимые для оценки межатомных расстояний, как и скрипты видообразования, работают только для ортогональных единичных ячеек, то есть для кубических, тетрагональных и орторомбических ячеек, где углы между осями составляют 90°.
Основными направлениями развития версии 2.0 являются снятие ограничения ортогональности для расстояний и добавление дополнительных возможностей для скриптов видообразования: анализ отдельных химических связей, анализ межатомных углов и реализация второй координационной сферы. С помощью внешнего сотрудничества мы работаем над переносом кода на графический процессор для более быстрого анализа в больших системах.
The authors have nothing to disclose.
Эта работа была поддержана Европейским исследовательским советом (ERC) в рамках исследовательской и инновационной программы Европейского союза Horizon 2020 (номер грантового соглашения 681818 IMPACT to RC), Директоратом по экстремальной физике и химии Обсерватории глубокого углерода и Исследовательским советом Норвегии через свою схему финансирования Центров передового опыта, номер проекта 223272. Мы признаем доступ к суперкомпьютерам GENCI через серию вычислительных грантов eDARI stl2816, к суперкомпьютеру Irene AMD через проект PRACE RA4947 и к суперкомпьютеру Fram через UNINETT Sigma2 NN9697K. FS была поддержана проектом Марии Склодовской-Кюри (грантовое соглашение 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 |