XMD - программа молекулярной динамики. Документация на русском языке

Предпринята попытка перевода страницы документации программного комплекса XMD - http://xmd.sourceforge.net/doc/manual/xmd.html

XMD - программа молекулярной динамики

Автор: Джон Рифкин, jon.rifkin at domen uconn.edu
v2.5.38 18 февраля 2011


Xmd — компьютерная программа для моделирования методом молекулярной динамики.
Принятые в переводе варианты англ. терминов:
array — массив
boundary — граница
box — решетка (кристаллит)
cavity — полость
cell — ячейка
dimensional harmonic well — замкнутый объем
equilibrium volume - равновесный объем (см. также равновесное термодинамическое состояние)
isobaric adiabatic (NPE) ensemble — изобарический адиабатический ансамбль
MC — Монте-Карло
perfect harmonic solid — абсолютное твердое тело
repeating cell — повторяющаяся ячейка (элементарная ячейка)
run - запуск, runs - шаги (моделирования)
system box — система координат или кристаллит или объем решетки
system stress — напряжение системы (внутренняя энергия)
two dimensional solid — двумерное тело
unit cell length - размер (параметр) элементарной ячейки
unit cell — элементарная ячейка
well - объем

1. Возможности


2. Введение


3. Форматы файлов


4. Использование


5. Теория


6. Реализация


7. Обзор команд


8. Команды


9. Команда Fill


10. Команда Write


11. Межатомные потенциалы


12. Технические приемы и Примеры


13. Трудности метода Молекулярной динамики


14. Дополнительные утилиты


15. Ссылки


16. Выражения признательности

1. Возможности

Xmd — компьютерная программа для моделирования методом молекулярной динамики. Предназначена для моделирования процессов в металлах и керамике. Программа имеет следующие возможности:
С точки зрения компьютерных систем
* исходный код на языке C позволяет переносить программу на различные компьютеры;
* программа может быть скомпилирована с помощью функций многозадачности POSIX (Portable Operating System Interface for Unix—Переносимый интерфейс операционных систем Unix— набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой - прим. пер.) для увеличения скорости обработки в многопроцессорных системах (см. раздел параллельных вычислений).
С точки зрения молекулярной динамики
* Стабилизация температуры, а любые изменения моделируются с помощью алгоритма изменения скорости (команда CLAMP);
* Стабилизация давления, используется или алгоритм Андерсена или алгоритм «зажим давления» (команда PRESSURE);
* Для того чтобы давление не поднималось исп. Алгоритм системного расслабления (локального минимума) (команда QUENCH);
* Команда FIX фиксирует выделенные атомы в пространстве;
* Команда CONSTRAIN фиксирует положение выбранных атомов на линии или в плоскости;
* Применение внешней силы к отдельным атомам (команда EXTFORCE);
* Ограничение для выбранных атомов их начальных положений эластичностью постоянных (команда EXSPRING);
* Применение скоростных коэффициентов демпфирования к выбранным атомам (команда DAMP);
* Использование собственного потенциала парного взаимодействия (ППВ) или метод вложенных атомов (EAM) или других (но мы их не используем); (по-другому - Использование парного потенциала, метода Вложенных атомных потенциалов (EAM), потенциала карбида кремния Терсоффа или потенциала Штиллингер-Вебера в системе единиц СИ)
Программный ввод данных
* Все программные действия осуществляются с помощью чтения команд из одного или нескольких командных файлов (обычные текстовые файлы);
* Макропроцессор позволяет использовать командную строку или определять строки в командном файле (команда MACRO) (см. раздел макросы);
* Позволяет использовать «Встроенный калькулятор с переменными», которые можно использовать с командами ввода в командном файле (команда CALC) (см. раздел о Встроенном калькуляторе);
* Есть возможность чтения одного командного файла из другого (команда READ);
* Возможность гибкого создания и редактирования атомной структуры (команда FILL);
* Возможен выбор подмножества атомов с использованием различных шаблонов (команды SELECT, SET и TAG);
* Возможно выполнение действий с выбранными атомами, таких как их перемещение (MOVE), вставка дефектов (SCREW, WAVE), установка типа атома (TYPE), установка массы атома (MASS), вращение выбранных атомов (ROTATE) и т. д.;
* Другие команды (MOVE, DAMP, EXTFORCE и EXTSPRING) позволяют осуществлять ввод значений, являющихся функцией атомных координат.

Вывод данных

* Сохранение результатов моделирования для последующего продолжения (команда WRITE STATE);
* Сохранение системных энергий (команды ESAVE и WRITE ENERGY), атомных стрессов (напряжений) (команды SSAVE и WRITE STRESS), атомных координат (команда WRITE PARTICLE) и другой информации в текстовых файлах во время моделирования;
* Координаты могут быть сохранены в специальных компактных форматах (команды RCV или COR) для дальнейшего использования с другими программами, такими как WMOVIEC, которая производит фильмы;
* Сохранение атомных координат в файле Protein Data Bank для использования с программным обеспечением дисплея, такого как Cerius2 MSI's (команда WRITE PDB), или стандартного формата XYZ (команда WRITE XYZ);
* Встроенные подпрограммы для представления атомной конфигурации в цвете на оборудовании использующем Postscript (команда PLOT).

2. Введение

XMD - программа, которая выполняет CMD (Computer Molecular Dynamics) моделирование. Она может использовать Embedded Atom Method /Метод Вложенных Атомов/ (EAM-потенциалов), Потенциал парного взаимодействия (ППВ), потенциал карбида кремния Терсоффа [1], или Кремниевый потенциал Стиллинджер-Вебера [2]. С XMD вы можете сгенерировать специфическую структуру решетки. С этими структурами решетки вы можете выполнять вычисления, используя как статические методы расчета (расчет энергий или сил — метод молекулярной статики это минимизация потенциальной энергии системы взаимодействия частиц как функции координат [1]), так и динамические (молекулярная динамика). XMD читает командный файл (файл команд), который описывает начальную атомную систему, необходимое моделирование (действия, которые будут выполнены) и результаты, которые необходимо вывести. Этот файл команд - обычный текстовый файл (файл, который может быть прочитан обычным текстовым редактором). Обычные текстовые файлы также используются для записи энергий взаимодействия в процессе моделирования. Специальные файлы формата (файлы, которые не могут быть прочитаны редакторами текста) используются для того, чтобы сохранить координаты частицы (файлы RCV) и завершенных состояний CMD (файлы STA).

3. Форматы файлов

С XMD могут быть использованы различные форматы файлов.
Входные файлы (файлы команд)
Входом для XMD в основном является текстовый файл. Этот файл содержит команды (описанные ниже), которые контролируют моделирование. Такой файл необходим.
Выходные файлы
Выходной файл тоже имеет текстовый формат. Он содержит сообщения и необходимые расчеты, которые генерируются командами из входного файла. Вывод программы есть всегда (на экран или в текстовый файл).
Energy / Stress / Box / Trajectory
(Энергия/Напряжение/Решетка/Траектория)
Эти четыре типа файлов - также текстовые файлы. Они являются дополнительными и содержат информацию, произведенную во время динамического моделирования. Ими управляют команды ESAVE, SSAVE, BSAVE и TSAVE (см. ниже).
COR/RCV
Файлы специального формата (не текстовые файлы), которые содержат позиции атома в зависимости от времени. Выводятся с помощью команд WRITE COR и WRITE RCV. Они могут быть прочитаны XMD или другими программами, такими как MSD, WMOVIEC, STRAIN, и т.д. (см. раздел о вспомогательных программах ниже).
XYZ/PDB
Как и предыдущая пара файлов, содержат позиции атомов. Эти файлы могут быть прочитаны множеством других программ. Они создаются командами WRITE XYZ и WRITE PDB.
STATE
Этот файл - машинный файл, который содержит информацию, необходимую для точного продолжения моделирования. Пишется и читается командами WRITE STATE и STATE.

4. Использование

Вызов XMD зависит от компьютерной платформы. В настоящее время XMD была перенесена на компьютеры с UNIX и IBM PC (под DOS). Для этих систем используется такая командная строка в терминале

xmd infile [ $1 $2 $3 .. $9 ] > outfile

параметры infile и outfile необходимо заменить на имя входного и выходного файла. Символ «>» - «перенаправление вывода» в UNIX и DOS означает что вывод программы будет перенаправлен в файл outfile. Если символ «>» и параметр outfile опущены, то вывод программы будет осуществлен на экран. При использовании DOS пользователь должен ждать до тех пор, пока эта команда завершится, и только после этого запускать другую команду. При использовании UNIX, вы также можете ввести:

nohup XMD infile > outfile &

на IBM Risc 6000, который использует операционную систему AIX, либо

xmd infile > outfile &

для Linux и другого Unix. Эти команды запускают XMD в фоновом режиме. Таким образом, пока программа запущена, Вы также сможете запускать другие команды и программы. «Nohup» и «&» - специальные символы для UNIX.

Вы можете включить 9 дополнительных параметров после имени входного файла обозначенных как $1, $2, .. $9 на примере выше. Эти параметры будут заменены на строки $1, $2, $3, .. $9 во входном файле. Это позволит Вам оставлять некоторые параметры входного файла неуказанными, пока Вы запускаете программу. Например, если Вы хотите запустить моделирование с разными температурами, Вы можете указать строку "1$", где XMD ожидает значение температуры. Затем вы можете написать

xmd infile 100 > outfile

для первого запуска программы, затем

xmd infile 200 > outfile

для другого и запустить моделирование для температур 100 и 200 градусов Кельвина. Для дополнительной информации см. разделы Командная строка и макросы.

По умолчанию, XMD ищет в текущей директории файл с названием config.xmd. Этот файл может содержать обычные команды которые вам нужны для каждого запуска XMD в этой директории. Если XMD не нашла этот файл в текущей директории, поиск файла будет осуществляться в директории где лежит программа, и будет прочитан config.xmd из этой директории. Затем, найден config.xmd или нет, XMD будет прочитан infile.

5. Теория

5.1 Молекулярная Динамика
В методе молекулярной динамики рассчитывается движение для каждого атома. Такой алгоритм осуществляется следующим образом:
(1) Начальные положения и скорости каждого атома определены;
(2) Используются межатомные потенциалы (потенциалы парного взаимодействия - ППВ), силы взаимодействий атомов определены (берутся уже рассчитанными);
(3) Используя ППВ, положения атомов и скорости рассчитывается новое положение через определенный (маленький) временной интервал (time step). Эти новые положения и скорости становятся исходными для шага вычислений 2, шаги 2, 3 ….. (и так далее) повторяются через интервал time step.
Как правило, моделирование молекулярной динамики будет включать тысячи таких временных шагов, каждый временной шаг соответствует доле пикосекунды (10-12 секунды). Этот алгоритм - по существу интеграция ньютоновских уравнений движения в течение времени, решение которых приводит к определенным положениям частицы и скоростям.

5.2 Граничные условия
Моделирование молекулярной динамики ограничено в числе атомов, которые можно моделировать, как правило, в XMD моделирование возможно при значениях между 5 000 и 100 000 атомов. С таким небольшим количеством атомов невозможно моделировать объемный материал, если только не использовать повторяющиеся граничные условия. С повторением граничных условий моделирование проводится в пределах решетки. Атомы, которые проходят через одну границу решетки кристаллита, проходят назад в решетку через противоположную границу. Таким образом, атом вне решетки не бывает (всегда находится внутри расчетной решетки). Не остается свободного пространства, и система моделирует объем. В то время как в теории, любой параллелепипед (такой, как решетка с триклинной симметрией) может использоваться в качестве повторяющейся ячейки, XMD ограниченно использует прямоугольную решетку. Повторяющиеся граничные условия могут быть выключены в любом направлении независимо от других, таким образом каждый может моделировать бесконечно повторяющееся твердое тело (в большинстве случаев), бесконечно повторяющийся плоский лист, бесконечно повторяющийся "провод" или законченный фрагмент материала. Подробнее об этом см. команда BOX.

5.3 Адиабатные и Изотермические Моделирования
В термодинамике системы разделены на два вида - адиабатные и изотермические. Адиабатные системы имеют теплоизоляцию от внешнего мира, никакое тепло не входит в систему и не выходит из нее. Как итог - полная энергия (сумма потенциальных и кинетических энергий) всегда будет оставаться постоянной. Изотермические системы - системы, которые поддерживают постоянную температуру через контакт с термостатом. Оба вида систем могут быть смоделированы в молекулярной динамике. См. раздел Контроль температуры (Temperature Control) для получения дополнительной информации.

5.4 Размер Временного шага (time step size)
Как было сказано выше, - в молекулярной динамике, силы и скорости в одном временном шаге используются, чтобы вычислить итоговые положения атомов для следующего шага. Разницу во времени между этими двумя смежными шагами называют time step size (размером временного шага). Размер временного шага должен быть определен пользователем. В идеале можно было бы использовать самый большой из возможных размер временного шага, которым можно было бы смоделировать самое большое время из возможных. Однако, объединенный алгоритм молекулярной динамики становится неустойчивым при больших размерах временного шага. Это становится очевидным, если рассматривать отдельно взятую частицу в замкнутом объеме /dimensional harmonic well/. Предположим, что эта частица находится в стороне от центра и ее начальная скорость - ноль. Эта частица будет испытывать силу, влекущую ее к центру объема. Результат силы с согласованным размером временного шага приводит к смещению частицы. Маленький временной шаг продвинул бы частицу ближе к центру объема. Слишком большой временной шаг не позволил бы частице оказаться в центре объема, и мог бы переместить частицу в противоположную сторону, даже дальше, чем ее стартовая позиция. Это немедленно вызвало бы проблему. Суммарная энергия частицы увеличится, и последующие шаги при этом большом размере временного шага только еще больше увеличили бы энергию. Это явно нарушает закон сохранения энергии.
Практически это нарушение закона сохранения — явный признак того, что временной шаг является слишком большим. Каждый хочет найти самый большой временной шаг (чтобы не растягивать время вычисления — прим. пер.), который поддержит сохранение энергии. О том, как осуществить поиск оптимального временного шага, см. секцию Технические приемы и Примеры (TECHNIQUES AND EXAMPLES).

5.6 Алгоритмы Постоянного давления (Стабилизации Давления)

Иногда у пользователя возникает желание смоделировать систему, которая может изменить свой объем в зависимости от комбинации приложенного внешнего давления и собственной внутренней энергии системы. У XMD для этого есть два различных метода. Первый, - метод Андерсена [3], который разработан для воспроизведения свойств термодинамики изобарического адиабатного ансамбля (NPE). Метод Андерсена описан более подробно ниже.

Второй метод - метод «зажима давления» (см. команду PRESSURE CLAMP). Этот метод был разработан для XMD. Он автоматически пересчитывает объем системы +/- количество, необходимое для того, чтобы уравновесить оказанное внешнее давление. Метод разработан для того, чтобы определить равновесный объем /equilibrium volume/ как функцию приложенной температуры и давления. Чаще всего этот метод используется, чтобы определить тепловое расширение моделируемого материала.

Метод Постоянного давления Андерсена

Это метод, который поддерживает внешнее давление путем введения искусственной силы на каждый атом. Это имеет преимущество - не создается локальной связи между моделированием и внешним источником давления. Реализуется командой PRESSURE. Используя постоянное давление Андерсена, вы должны назначить массу для внешней системы. Эта масса определяет, как быстро объем системы отвечает на приложенное давление. Без такой массы изменения объема системы были бы мгновенны - явно нефизическая ситуация. Точное значение массы, вероятно, неважно. Хорошая идея - перераспределить массу внешней системы в полную внутреннюю массу (массу всех атомов).
Метод постоянного давления Андерсена не подходит для того, чтобы определить тепловое расширение. Причина этому — во времени для достижения равновесного объема, которого, при использовании этого метода требуется намного больше, чем при использовании метода «зажима давления». Вторая причина состоит в том, что этот метод представляет фиктивное давление, которое пропорционально кинетической энергии системы. Значение внешнего давления задана простым газовым законом:

P = nKT/V

где
N - общее количество атомов, К - постоянная Больцмана, T температура и V средний объем системы.

Метод «Зажима Давления»

"Зажим давления" работает аналогично «Зажиму температуры». Объем решетки (кристаллит) system box автоматически изменяется, чтобы поддержать постоянное давление. Метод работает следующим образом. Пользователь определяет давление, которое он хотел бы поддержать, по умолчанию - ноль. Кроме того, пользователь определяет Модуль Объемной упругости /Bulk Modulus/ для системы. Это может быть как точное значение Модуля Объемной упругости, так и приблизительное. Затем, для каждого шага CMD, вычисляется внутренняя энергия системы (напряжение системы) /system stress /. Комбинируя значения внутренней энергии системы (напряжение системы) и Модуля Объемной упругости, изменение в размере решетки может поддержать желаемое давление,
(dLi/Li)/Cstep = B / (3*Si)
где Li - размер решетки в i-ом шаге, dLi - изменение в этом размере камеры, Si - напряжение в i-ом шаге (напряжение Фойгта Voight stress), B - Модуль Объемной упругости, и Cstep - параметр, который контролирует то, как быстро алгоритм сходится при подходящем размере решетки. По умолчанию Cstep 33, но эта величина может быть изменена пользователем как угодно.

Вычисление напряжения и Теорема о Вириале

Расчет XMD по умолчанию не включает Теорему о Вириале
Sij = mass * Vi * Vj
в вычисление напряжения системы. Это спорный вопрос, но я исхожу из факта, что идеальное гармоническое абсолютно твердое тело термически не будет расширяться, а Теорема о Вириале предсказывает, что будет.
Теорема о Вириале может быть включена в вычисление напряжения. См. подробности в команде STRESS THERMAL .

Геометрия Решетки

При использовании обоих алгоритмов стабилизации давления, одно принимается во внимание при независимом изменении координат (x, y, z) — система должна изменяться равномерно. При равномерном изменении соотношения координат x, y, z решетки остаются теми же, и следовательно система которая была кубической решеткой остается кубической решеткой, тетрагональная решетка остается тетрагональной т.е. поддерживает свое первоначальное c/a (степень тетрагональности решетки) отношение.

6. Реализация

Чтобы эффективно использовать XMD, полезно понимать структуры данных и алгоритмы, которые использует программа.

6.1 Координаты
Возможно, самая очевидная структура данных это координаты частиц. Сохраняется несколько версий этих координат. (1) Текущий Шаг (Current Step). Текущее значение координат используется для интеграции уравнений движения для каждого шага. Эти координаты используются постоянно. Когда задаются команды WRITE RCV или WRITE STATE или WRITE PARTICLE записываются именно эти координаты. (2) Ссылочный шаг (Reference Step). Когда задается команда REFSTEP сохраняются текущие значения координат (факт. из пункта 1). Впоследствии это может быть использовано (вызвано из памяти) как текущее значение координат или для вычисления смещения частицы. (3) Лист окружения (Neighbor list). Только для внутреннего использования. Это копия координат со времени последнего обновления Neighbor list (листа окружения) (см. Neighbor list ниже). Она хранится чтобы посмотреть как далеко текущие координаты сместились со времени последнего обновления и тем самым определяет когда необходимо сделать новый лист окружения.

6.2 Скорость, Сила, и Производные высших порядков
Алгоритм Передаточного Механизма /Gear/ используется для интеграции уравнений движения Ньютона, использующих до 5 производных по времени координат частицы. 1ая и 2ая производные - только скорость и ускорение. Программа может записать скорости и ускорения командами WRITE VELOCITY (записать скорость) и WRITE ACCELERATION (записать ускорение)

6.3 Выбор частицы
Для различных операций на частицах (таких как их перемещение или дублирование) необходимо определить подмножество частиц. Это выполняется с помощью команды SELECT (выбрать). Эта команда использует массив флагов, по одному флагу для каждой частицы. Флаги в массиве устанавливаются вызовом команды SELECT один или более раз. А команда WRITE SEL COR может использоваться, чтобы написать только координаты тех частиц, флаги которых были установлены.

С этим массивом связан массив SET. Команда SET может использоваться, чтобы включать любую частицу в любой из 12 массивов. Сначала командой SELECT выбираем частицы, затем используйте, к примеру, команду SET ADD 4. Позже вы сможете выбрать все частицы из набора 4 с помощью команды «SELECT SET 4». Команды SET и SELECT SET очень полезны для управления отдельными структурами атомов в моделировании.

Отдельно взятый атом может принадлежать более чем одному набору (массиву). Например, у вас может быть набор, содержащий все атомы в решетке, значение координаты «x» которых меньше чем половина решетки. Тогда Вы можете сделать второй набор атомов, значение «y» которых - меньше чем половина решетки. Также вы можете сделать третий набор согласно «z» значениям координат атома. Тогда некоторые атомы будут принадлежать сразу к трем наборам - те атомы, «x», «y» и «z» координаты которых находятся в пределах нижней части решетки.

Связан с этими массивами массив TAG (тег) — один байт информации для каждого атома. Таким образом, каждый атом может иметь один признак TAG величина которого от 0 до 255. Теги не так гибки как наборы (SETs), потому что у каждого атома может быть только одно значение TAG, в то время как атом может принадлежать многим наборам (SETs). Однако, есть 256 значений TAG (и только 12 SETs). Так, используя теги, вы можете сгруппировать атомы в 256 отдельных групп, предполагая что каждый атом, принадлежит только одной группе (по значению TAG — прим.).
Каждый атом имеет значение TAG по умолчанию - 0.
Значения SELECTION, SET и TAG теряются всякий раз, когда прочитан новый набор частиц с помощью команд PARTICLE, COR, RCV и STATE. Иногда желательно читать в координатах COR или RCV команд, но хранить SELECTION, SET и TAG значения от предыдущего набора частиц. Для примера, в моделировании вам могут быть интересны текущие позиции набора частиц, который начинается в сферической области, в шаге 0. Если эти положения частиц сохранены в COR файле в шагах от 0 до 2000, вы можете сделать следующее,

cor input.cor 0
select ellipse 5 5 5 2 2 2
select keep on
cor input.cor 2000
write sel particle

Этот фрагмент читает положения частиц из файла input.cor в шаге 0, и выбирает те частицы, которые сосредоточены в пределах эллипсоида с центром в (5,5,5) с осями длины (2,2,2). Так как длины осей равны, это - сфера. Команда «select keep on», говорит, что SELECT, SET и TAG информация не будет потеряна (забыта), когда будет использоваться команда COR. Следующая команда читает положения атомов в шаге 2000, и, как итог - эти положения записываются в выходной файл.

6.4 Список окружения
Когда мы вычисляем энергию и силы взаимодействий всех атомов, окружение каждого атома должно быть известно. Это окружение вычисляется отдельно и сохраняется для дальнейшего использования в ряде массивов, названных списком окружения (neighbor list). Этот список вычисляется в начале каждого запуска, и он включает все пары атомов, которые попадают внутрь потенциальной отсечки плюс дополнительные 10%. Эти дополнительные проценты гарантируют, что список окружения будет действителен, пока атомы не переместятся настолько, чтобы потребовался новый перерасчет списка окружения. Когда две частицы перемещаются в общей сложности больше чем на 10%, тогда возникает необходимость такого перерасчета. Значение 10% может быть изменено командой NRANGE. Она определяет размер отсечки списка окружения как фактора потенциальной отсечки. Значение по умолчанию - 1.1 (которое приводит к различию в 10 %).

XMD использует два алгоритма списка окружения. Более старый и медленный алгоритм - SORT. Он обрабатывает такие атомы, сортируя по координатам (размерам) x, y или z, в зависимости от того, у какого (атома) значение измерения (факт. удаления от другого атома) больше. Затем сравнивает все пары атомов, у которых отсортированное удаление находится в пределах размера отсечки. Алгоритм работает успешно, когда число атомов - меньше чем 50 000, но становится (сравнительно) медленным когда число атомов увеличивается.

Новый алгоритм списка окружения - CELL. Он делит пространство на кубические ячейки равного размера с размером NRANGE или больше. Затем он сравнивает пары атомов в этой «ячейке окружения» для определения какие атомы входят в «окружение». Алгоритм немного медленнее для маленьких наборов атомов (около 1000), но увеличивает свою мощь, работая быстрее, чем SORT, в ситуации, когда число атомов растет. Алгоритм CELL может стать неэффективным в случае наличия свободной поверхности, и один или более атомов оставляют объем и перемещаются через вакуум, т.к., поскольку атомы уходят, необходимо больше ячеек, чтобы заполнить пространство. Если это происходит, Вы можете или использовать повторяющиеся граничные условия, такие, чтобы дать свободные поверхности, или использовать более медленный алгоритм SORT.

6.5 Внешние Силы
Термин «внешняя сила» означает силу, которая применена внешним агентом, другими словами, силу, которая не связана с атомами непосредственно. Для некоторых моделей необходимо применить внешнюю силу к определенным, или даже ко всем частицам. Иногда такое случается в моделированиях дефектов. Каждый атом может испытать уникальную внешнюю силу, единственное ограничение – это удобство (или неудобство) применения сил. Команда EXTFORCE применяет одно значение внешней силы к выбранным частицам.

6.6 Скоростное демпфирование

В некоторых моделях желательно смягчить атомное движение, например чтобы поглотить колебания решетки, произведенные скоростными перемещениями (moving dislocation). Это может быть сделано командой DAMP. Эта команда назначает смягчение для выбранных частиц. Сила изменяется добавлением смягчения,
-Fdamp * v
где Fdamp - векторная сила демпфирования (смягчения), а «v» - вектор скорости.

6.7 Температурный контроль

В молекулярной динамике обычно необходимо управлять температурой моделирования. Есть два типа контроля: температурная установка (инициализация) и температурная поддержка. Как правило, в начале моделирования положение каждой частицы определено, но скорости не известны, только желаемая температура известна. Команда ITEMP назначит случайные скорости на все частицы с соответствующим распределением Максвелла-Больцмана для указанной температуры. У команды также есть возможность назначения скоростей только в одном или двух из трех x, y, z направлений (оставляя другие скорости неизменными). Это может применяться для моделирования двух- или одномерного (имеется в виду пространство) тела, т.к. если все начальные координаты ограничены плоскостью или линией, и нормали всех скоростей к плоскости или линии, равны нулю, то частицы будут оставаться ограниченными необходимой геометрией. Скорости по умолчанию равны нулю в начале запуска и , если система (расчет) уже запущена, вы можете задать нулевое значение скоростей самостоятельно (используя команду ITEMP 0). Температурная поддержка применяется чтобы получить симуляцию (имитацию) постоянной температуры. Часто это будет имитировать явление, которое высвобождает тепло, такое как фазная трансформация или окончание действия внешней силы, или, возможно, это будет имитировать систему, которая поглощает тепло. В случае поддержки «приблизительно постоянной температуры» применим так называемый «температурный зажим». Это алгоритм, который масштабирует (scales) мгновенные скорости, чтобы привести температуру к требуемому значению. Масштабирование выполняется умножением компонент (проекций) скорости каждой частицы на некий фактор. Обычно вы не хотите достичь проектируемой температуры за один шаг, потому что такое изменение температуры будет слишком резким. Ранние моделирования использовали именно схему, которая производила определенный (market) шум в высокочастотном диапазоне фононного (phonon) спектра. Таким образом, вместо скоростей вычисляется 33 (значение по умолчанию) корень этого «фактора одного шага». Это имеет приближенный эффект достижения требуемой температуры после 33 шагов. Это число вместе с проектируемой температурой задается командой CLAMP. Если зажим не определен (или определен отрицательный зажим) тогда поддержка температуры выполнена и имитированы результаты адиабатического процесса. Такая имитация используется для тестирования стабильности процесса (и, следовательно, размер шага по времени, см. раздел Теория выше). Если общая энергия заявленная программой для адиабатной имитации не постоянна, тогда наш любимый «временной шаг» слишком большой. См. раздел TECHNIQUES ниже для большей информации по настройке временного шага. Обратите внимание, что на температуру также можно повлиять командой VELOCITY.

6.8 Подавление
В некоторых опытах желательно "подавить" (как вариант перевода - "загасить") движения атомов в процессе динамических симуляций. Целью такого подавления является быстро расслабить систему до текущего локального минимума потенциальной энергии. Такое расслабление действует чтобы изменить атомное движение, но отличается от алгоритма, используемого командой CLAMP. В то время как CLAMP изменяет скорости (увеличивает или уменьшает) чтобы поддерживать определенную температуру, подавление устанавливает атомные скорости в ноль, когда соблюдены определенные условия. XMD в настоящее время реализует два стиля "подавления". В первом методе скорость каждого атома (всех атомов) обнуляется, когда полная потенциальная энергия повышается по отношению к предыдущему временному шагу. Во втором методе, скорость отдельного атома обнуляется каждый раз, когда его энергия в одиночку поднимается по отношению к предыдущей стадии. Повышение энергии для конкретного атома определяется рассчетом для каждого атома. Всякий раз, когда эта величина является отрицательной для атома, его скорость устанавливается в ноль. Подавление управляется с помощью команды QUENCH.

6.9 Фиксирование (определение) Положений Частицы в Молекулярной Динамике
Для моделирований в молекулярной динамике размерности решетки для повторяющейся расчетной решетки всегда зафиксированы, в настоящее время нет никаких сведений о динамических моделированиях с переменной решеткой. Однако отдельные частицы могут еще быть зафиксированы, используя команду FIX. Например, чтобы изучить структуру какого-либо преобразования, вы можете пожелать, чтобы структуры BCC и FCC были зафиксированными в противоположных концах решетки (чтобы гарантированно знать, что ни BCC, ни FCC структуры не исчезнут полностью из решетки), и позволять атомам совершать промежуточное движение свободно, чтобы изучить получающееся расположение. Информация, о том, как именно установлены частицы, хранится в массиве флагов, по одному для каждой частицы. Команда FIX [ON|OFF] установит или напротив, сбросит флажки в конкретный момент времени для выбранных частиц. Первоначально все флажки сброшены. Частицы, которые зафиксированы, полностью эквивалентны другим частицам настолько, насколько есть силы и энергетические связи между ними, но их положения не обновлены, и установлено нулевое значение их скоростям и более высоким производным времени. Когда частицы зафиксированы, они не могут внести кинетическую энергию в систему. Однако, когда атому сообщается кинетическая энергия, (используя команды ESAVE или WRITE EKIN), она вычисляется подсчетом как для зафиксированных, так и для свободных частиц. С другой стороны, когда температура вычислена (об этом значении сообщает команда WRITE TEMP), она будет являться температурой только свободных частиц (то есть, полная системная кинетическая энергия, разделенная на число свободных частиц).

6.12 Что такое RUN (шаг)
Как правило каждое исследование содержит серию RUN-ов (шагов). Для помощи в последующей идентификации термина (run), скажем, что пользователь программы может назначить номер run (с помощью команды RUN) который будет сохранен в файлах STATE и RCV, созданных с помощью XMD. Кроме того, каждый шаг моделирования идентифицирован числом, начинающимся с 0 для первого шага (то есть фактически координаты частицы перед первым шагом моделирования). В дополнение к вышеупомянутым выходным файлам, шаг также сохраняется в ESAVE, BSAVE и файлах SSAVE. Дополнительная идентификация может быть обеспечена заданием пользователем заголовка (title), введенного с помощью команды TITLE. Заголовок составляется из 8 строк ASCII каждая может состоять из набора до 80 символов, он сохраняется в файлах STATE, RCV и COR и записывается в вывод команды PLOT. Текущее значение run, step (шага) или title может быть показано в стандартном выводе программы, через команды WRITE RUN, WRITE STEP или WRITE TITLE.

6.14 Формат файла COR
Формат файла COR - замена для формата файла RCV. Его разработка не была ограничена требованием пересылки файлов по обычным телефонным линиям (медленной модемной связью — прим. пер.). Главные различия между форматами COR и RCV:
• в COR-файле типы атомов задаются вместе с координатами,
• координаты частицы сохранены как двухбайтовые целые числа (то есть целые числа между 0 и 65355).
• RDF (radial distribution function) не сохранена в COR файл и
• COR файл не использует коды ASCII, следовательно его трудно (даже невозможно) отредактировать обычным редактором текста.
Другая информация, которая хранится в COR файле
• Число частиц,
• Граничные условия,
• Запуск и Номер Шага,
• Заголовок,
• Энергии - Кинетическая, Потенциальная, Полная и "Энергия Воды" ????????.

6.15 Чертежи (диаграммы) атомов (подразумевается вывод графической информации)
XMD может сделать графический вывод атомов, участвующих в моделировании. Это делается командами PLOT. С этими командами Вы можете
* назначить различные символы, размеры и цвета к атомам,
* выбрать ориентацию вывода,
* определить количество страниц,
* вывести 'хвосты' (линии, которые исходят от каждого атома, чтобы показывать их движение),
* вывести связи (линии, соединяющие атомы в пределах определенного расстояния друг от друга),
* установить направление вывода (как правило, файл или устройство) и формат (как правило, Postscript).

6.16 Команда REPEAT
Часто моделирования XMD включают повторяющиеся блоки инструкций. Чтобы их легче использовать, есть команда REPEAT. REPEAT - простая команда цикла, которая выглядит так,
repeat 10
cmd 100
write cor +femelt.cor
end
Все команды между REPEAT и END в этом примере будут повторены 10 раз. У Вас могут даже быть команды REPEAT внутри других команд REPEAT (т. е. возможны вложения одной команды REPEAT в другие).

6.18 Макросы
XMD позволяет использование "Макросов". Первый вариант использования - позволяет установить параметры в командной строке. Например, если Вы запускаете XMD с входным файлом femelt.xm следующей командой

xmd femelt.xm third 1200

тогда аргументы "third" и "1200" могут использоваться в качестве переменных 1$ и 2$ в файле femelt.xm следующим образом,

#
# Read initialize lattice and dynamics commands from another file
#
read femelt.pos
#
# Initialize temperature to "1200"
#
itemp $2
#
# Instruct XMD to save energies to file "third.e"
#
esave 10 $1.e
#
# Perform dynamics
#
cmd 1000

Вы можете использовать до 9 параметров командной строки с именами от $1 до $9.
Вы можете также использовать команду MACRO, чтобы установить макро-определение с любым именем. Например,

...
macro $file femelt
...
esave 10 $file.e
bsave 10 $file.b
ssave 10 $file.s
cmd 1000

Заметьте, что в команде нет знака равенства (=). Не путайте эту команду с командой CALC! Макро-имя не учитывает регистр букв, $file и $FILE идентичны. Макро-имена могут быть любой длины и могут состоять из любой комбинации букв и чисел, также они могут начинаться с числа. Вы можете даже изменить значение параметра макроопределения установленного в командной строке.

8. Команды

\ (обратный слеш)
Это не настоящая команда, но специальный символ, который может использоваться для расширения команды до нескольких строк. Когда последний символ в команде «\», то следующая строка в командном файле добавляется к концу текущей строки. Команда может содержать несколько строк, но ограничена 1024 символами (где-то около 12-20 строк).

# (знак решётки)

* (звёздочка)

Используются для комментариев в файлах инструкций (командных файлах). Линии, в которых первым непустым знаком является решетка или звездочка, будут проигнорированы.

BOX [SCALE] xbox ybox zbox
Определяет размер решетки (в ангстремах). Размер решетки имеет значение когда (1) выполнется вычисление с повторением граничных условий (см. раздел ПОВЕРХНОСТЬ (SURFACE)), и (2) при записи файла RCV (см. RCV). Если выбрана опция SCALE, то любые существующие координаты будут повторно промасштабированы (относительно предыдущего размера решетки), чтобы соответствовать новому размеру. (3) - без определения box программа ругается при выполнении моделирования cmd (прим. si).

BSAVE nskip file
Заставляет CMD сохранять номер шага и x, y и z размеры камеры каждый из nskip шагов в файле file. Это полезно для контроля размера решетки, когда используется команда PRESSURE, которая позволяет изменять размер решетки.

CALC {expression..}
CALC - обширная команда, которая обеспечивает простой язык для вычислений. Например, если задана команда

CALC x = 2^(1/3)

то создается переменная x, которая равна 2 в степени 1/3. Позже можно записать команду

SCALE x

которая задает масштаб для всех частицы (и решетки) 2^(1/3). Эта переменная может также быть выведена с помощью

WRITE X

(см. команду WRITE ниже). Кроме того, во всех командах, которые требуют в своем синтаксисе числа, может использоваться алгебраическое выражение (при том условии, что нет вставленных пробелов). В таком случае вы можете использовать команду

SCALE 2^(1/3)

Разрешенные операторы: + - * / ^ () =
Также позволены функции, такие как: sin() cos() tan() exp() log() log10() acos() asin() atan() abs() sqrt() int() rand(). Функции sin(x), cos(x) и tan(x) предполагают, что угол x будет измерен в радианах. Функции asin (x), acos (x) и atan (x) возвращают угол в радианах. Функция exp(x) возвращает e^x. Функция log(x) возвращает логарифм с основанием e от x, log10 (x), возвращает логарифм с основанием 10. Функция abs(x) возвращает абсолютную величину (модуль) x. Функция sqrt (x) возвращает квадратный корень x. Функция int(x) возвращает целую часть числа x. Функция rand(x) возвращает случайное число из равномерного распределения между 0 и x.
Есть две встроенные константы: пи(pi) и e.
Может быть до 128 наборов переменных, созданных в одной программе. См. больше в разделе CALC, в секции РЕАЛИЗАЦИЯ.

CLAMP [SEL] {temp [cstep] | OFF }
Поддерживает температуру и для MC и для CMD моделирований. Для MC temp используется в качестве температуры Больцмана, а cstep проигнорирован.
Для CMD скорости частиц промасштабированы (T/temp)(1/(2*cstep)) в каждом временном шаге CMD. Здесь T - мгновенная системная температура. Применение этого фактора имеет эффект принуждения скоростей частицы к значению, соответствующему для температуры temp. Параметр cstep используется, чтобы управлять скоростью, с которой приближаются к целевой температуре. Если temp установлен в -1, то никакой температурный зажим не используется (это было бы адиабатной системой). См. секцию о Температурном Контроле.
XMD может поддержать до 4 отдельных групп частиц при различных температурах. Когда опция SEL используется, temp и cstep или OFF установки применяются к выбранным частицам, параметры настройки CLAMP для всех других частиц остаются неизменными. Когда команда CLAMP дана без выбора SEL, тогда для всех частиц установлено то же самое.

CONSTRAIN CAVITY ELLIPSOID spring xcenter ycenter zcenter xaxis yaxis zaxis
CONSTRAIN CAVITY SPHERE spring xcenter ycenter zcenter radius
Эта команда помещает эллипсоидальную "полость" в моделирование. Стены полости отражают частицы. Когда частица проходит в стену, она испытывает силу упругости, выталкивающую ее обратно. Сила равна
F = 1/2 * spring * dq ^2
где dq - нормальное расстояние от стены до частицы, и spring - константа упругости. Как только частица проходит назад из стены, она больше не чувствует силу. Только одна полость может присутствовать в моделировании. Все частицы будут зависеть от стены. (xcenter, ycenter, zcenter), определяет центр полости. Для сферической полости radius - радиус. Для эллипсоидальной полости, (xaxis, yaxis, zaxis) x, y, z полуось, аналогичная сферическим радиусам. Они измеряют расстояние от центра эллипса до поверхности эллипса в x, y, z направлениях. Пожалуйста, запомните следующие вещи о команде CONSTRAIN CAVITY.

COR file [ [run] step]
Читает из COR-файла шаг step. Если шаг step определен, тогда данные для этого шага будут прочитаны; иначе первый шаг в файле будет прочитан. Если такого шага нет в файле, тогда выдается сообщение об ошибке, и программа продолжается. Если определен run (это подразумевает, что step также определен), то только данные, относящиеся к run-step прочитаны. Если step определен без run и два COR шага имеют один и тот же номер шага, то только первый будет прочитан. Когда и run, и step определены, и никакого шага в COR не найдено, выдается сообщение об ошибке, и программа продолжается.
COR команда отличается от команды RCV, главным образом, потому что, читает типы частиц так же, как и координаты.

DISP [SEL] { CLEAR | MOVE [scale] | READ n | REFCALC | SCALE scale }
Эта команда манипулирует смещениями (сдвигами). Каждая частица может иметь смещение, связанное с ней. Эти смещения могут использоваться, чтобы переместить частицы. Смещения могут быть записаны, используя команду WRITE DISP (см. команду WRITE). Вы не можете выписать смещения, пока Вы не используете команду DISP, чтобы создать их.
Заметьте, однако, что результаты команды PLOT DISP не затронуты этой командой. Для команды PLOT DISP смещения вычисляются независимо.

CLEAR
CLEAR обнуляет смещения. Если SEL определен, то только выбранные частицы, а точнее их смещения будут обнулены. Без выбора SEL все смещения обнуляются (и память, требуемая для смещений, освобождается).
MOVE
Опция MOVE добавляет смещения к текущим частицам. Опция SEL заставляет переместиться только выбранные частицы.
READ
READ n читает входные данные значений смещений. Смещения должны последовать на следующей строке с полными значениями для каждой координаты всех частиц (или выбранных частиц, если опция SEL установлена).
REFCALC
REFCALC устанавливает смещение в разницу между текущими частицами и эталонными??? частицами (current - reference). Если опция SEL установлена, затрагиваются только выбранные смещения.
SCALE
SCALE Масштабирует все смещения (или выбранные смещения, если SEL установлена) в выбранном масштабе.

ERASE file
Стирает файл с именем file. Это полезно, если Вы хотите добавить шаги моделирования в конец файла, но сначала Вы хотите очистить файл, как показано в этом примере,

erase aucrack.cor
repeat 10
cmd 1000
write cor +aucrack.cor
end

ESAVE nskip file
Заставляет MC и CMD сохранять энергию каждый из nskip шагов в файле file. Для моделирования MC (Монте Карло) два числа сохраняются в каждом соответствующем шаге: номер шага и полная потенциальная энергия (в этом порядке). Для CMD сохраняются четыре числа: номер шага, полная энергия (потенциальная плюс кинетическая энергия), потенциальная энергия, и кинетическая энергия. Заметьте, что потенциальная энергия включает энергии связанные с внешними силами, как определено командами EXTSPRING и EXTFORCE.

EUNIT [ ERG | EV | JOULE | K | uname uvalue ]
Устанавливает единицы измерения для энергии: эрг, электрон-вольт, джоуль, Кельвин или другие придуманные пользователем имена uname и единицы uvalue. Собственное пользовательское значение uvalue - отношение единицы uname к эргам. Все энергии, напечатанные программой (или через команду ESAVE или через команду WRITE ENERGY), будут в определенных EUNIT единицах. Силы, прочитанные или написанные командой EXTFORCE, или командой WRITE FORCE, будут в указанных единицах на сантиметр. Векторы упругости, прочитанные командой EXTSPRING, будут в указанных единицах на сантиметр в квадрате. Если никакого параметра не будет задано в командной строке EUNIT, тогда текущее значение uname-uvalue и будет напечатано. Значением по умолчанию для EUNIT является Кельвин (по-другому, значение по умолчанию - инверсия константы Больцмана).

EXTFORCE { CLEAR | [ formula [ formula .. ] ] fx fy fz }
Применяет внешнюю силу к выбранным атомам, равную fx, fy, fz. Если опция CLEAR определена, тогда силы на всех атомах обнуляются ("все атомы" означает не только выбранные атомы). Единица для сил - энергетическая единица, определенная командой EUNIT (по-умолчанию - эрги), разделенная на сантиметры.

EXTFORCE связана с потенциальной (и полной) энергией, записанной командой ESAVE, но не с энергией, написанной командой WRITE ENERGY. Энергия для атома под внешней силой это:

E = - F (r — r0)

где F - приложенная сила, r - положение атома, и r0 - положение атома в то время, когда команда EXTFORCE была запущена. Так, например, эта энергия - ноль, если атом не движется. Внешние силы, созданные с этой командой, будут сохранены в файле состояния (см. команду WRITE STATE).
Выражения для fx fy и fz могут содержать переменные x, y и z, которые будут равняться координатам каждого перемещенного атома. Таким образом, Вы можете применить внешнюю силу, которая является функцией положения отдельного атома. Дополнительное выражение formula может определять одну или более переменных для последующего использования в выражениях fx, fy и fz. См. команду MOVE для примера.

ITEMP SEL temp [X|Y|Z] [X|Y|Z] ..
Назначает произвольные скорости соответствующие температуре temp для всех частиц. Назначенные скорости выбраны случайно, но соответствуют распределению Больцмана. Обычно случайные значения назначены на все компоненты скорости, x, y и z. Однако, выполняя одно- или дву- мерное моделирование, у Вас появится желание назначить скорости только на определенные компоненты. Определяя специфические направления, такие как X, Y или Z Вы можете указать значения только на нужные компоненты. Оставшиеся компоненты (невыбранные) будут установлены в ноль. Как пример, если Вы управляете двумерным моделированием в плоскости «x,y», команда будет выглядеть как

ITEMP 100 X Y

назначит скорости в x и y направлениях, и установит z компонент в ноль. Кроме того, если все частицы имеют одни те же координаты z, то движение будет ограничено xy плоскостью. См. также команду СКОРОСТЬ (VELOCITY).

LABEL nlabel
Эта команда сопровождается nlabel линиями текста, nlabel не должен превысить 8. Текст используется, чтобы добавить примечания к файлам моделирований, и сохраняется в COR, RCV и файлах состояния, а также в выводе с помощью PLOT.

MACROF name format variable
Эта команда похожа на команду MACRO, но может назначать переменные команды CALC (variable) в "макросы". Например, если вы хотите записать индивидуальный COR файл для каждого шага моделирования, сделайте следующее

repeat 5
cmd 40
macrof fname simul%03d nstep
write cor $fname.cor
end

Этот код запишет файлы simul040.cor, simul080.cor, simul120.cor, .. simul200.cor. Параметр format следует стандарту языка C для команды printf() и может быть следующим %d %i %u %x %f %e . Смотрите информацию по команде языка C - printf(). В некоторых вариантах Unix, вы можете почерпнуть информацию о printf с помощью команды
man printf

MASS mass
Назначает массу на все выбранные частицы (единицы — атомные единицы массы).

MC nstep temp
Выполняет моделирование MC для шагов nstep и с температурой temp. Курс моделирований Монте Карло находится под влиянием команд CLAMP и SIZE. Команда ESAVE влияет на выход этих моделирований.

MOVE [ formula [formula .. ] ] xdisp ydisp zdisp
Перемещает выбранные частицы на xdisp, ydisp и zdisp. Выражения для xdisp, ydisp и zdisp могут содержать переменные x, y и z, которые будут равняться координатам каждого перемещенного атома. Таким образом, Вы можете применить смещение, которое является какой-то функцией для отдельных атомов. Дополнительное выражение formula может инициализировать (устанавливать) одну или более переменных для последующего использования в выражениях xdisp, ydisp и zdisp. Как пример, предположим, что мы хотим использовать команду MOVE, чтобы переместить атомы от точки (x0, y0, z0) на величину exp (-r/5), где r - расстояние от точки (x0, y0, z0). Мы можем использовать следующий код, чтобы сделать это,

CALC x0=5.0
CALC y0=5.0
CALC z0=5.0
MOVE dx=x-x0 dy=y-y0 dz=z-z0 r=sqrt(dx^2 + dy^2 + dz^2) /
dx*exp(-r/5) dy*exp(-r/5) dz*exp(-r/5)

Первые три оператора CALC устанавливают значения для x0, y0 и z0, которые будут служить центром атомных смещений. Команда MOVE устанавливает четыре переменные, dx, dy, dz и r, которые используются, чтобы определить смещения. Заметьте, что последние три выражения - фактические смещения. Также заметьте использование знака наклонной черты влево, "/". Когда этот знак - последний знак на линии, команда продолжается на следующей строке. Знак наклонной черты влево может использоваться для любого числа строк, пока получающаяся команда не превышает объем в 1024 знака. Это приблизительно 12 - 20 строк.

PLOT BOND { OFF | ON lo hi }
Выводит "связи" между атомами. Все атомы, расстояния между которыми lo и hi ангстрем будут связаны линиями.

PLOT DEVICE { CANON | POSTSCRIPT }
Определяет принтер, который будет использоваться для вывода. Установки по умолчанию зависит от инсталляции.

PLOT DISP { ON | OFF | SCALE scale }
Включает\выключает вывод смещения. Если REFSTEP был задан в программе ранее (см.п.6.1), то, когда даётся команда PLOT, атомные смещения будут отражены в выводе (если включено ON). SCALE определяет масштаб увеличения для линий смещения.

PLOT LABEL { ON | OFF }
По умолчанию XMD печатает описание каждой страницы вывода (лейбл), которое включает номер шага, и до восьми линий, определенных командой LABEL. Чтобы сделать вывод без лейбла, используйте команду PLOT LABEL OFF.

PLOT LAYER nlayer [layer1 [layer2 ..... ]]
Выбирает слои для вывода частиц. nlayer - число слоев, на которые разделен кристаллит (в направлении, определенном PLOT ORIENT). Если параметры layer1, layer2, и т.д. определены, то выводятся только эти слои. Иначе выводятся все слои.

PLOT ORIENT { X/Y | Y/X | Y/Z | Z/Y | X/Z | Z/X }
Выбирает ориентацию вывода. По умолчанию - y/x ( y - вертикальное направлении и x - горизонтальное). Ориентация y/x означает, что "y" направление выводится вертикально, и "x" направление выводится горизонтально. Z направление используется, чтобы разделить слои (см. PLOT LAYER выше).

PLOT PAGE page
Число страниц, используемое для команды PLOT. По умолчанию - одна.

PLOT SYMBOL [FILL|FILLALL] [ RGB red green blue | HSB hue saturation brightness ] { AST | CIR | CRO | DIA | ITR | NON | SQR | TRI } radius
Назначает символ на все выбранные частицы. Без опций FILL или FILLALL, символы круга, алмаза, треугольника и квадрата печатаются как черные контуры. С опцией FILL символы заполняются указанным цветом (RGB или варианты HSB), но все еще обведены черным контуром. С выбором FILLALL черный контур не выводится, только символ, выполненный в цвете. RGB и варианты HSB назначают цвет для атома (цвет по умолчанию является черным). См. секцию 6.15 - Использование цвета в диаграммах, чтобы узнать о значении параметров цвета. radius определяет расстояние от центра символа к самой удаленной точке. Если команда SYMBOL не задана, тогда SYMBOL CIR 0.25 принят автоматически. Список вариантов символа см. ниже:
AST asterisk - (*) звездочка
CIR circle - окружность
CRO cross
DIA diamond - "алмаз"
ITR inverted triangle (point downward)
NON no symbol
NUM index number for particle - номер частицы
SQU square
TRI triangle - треугольник
Опция NUM печатает номер частицы вместо символа. Это полезно для нахождения местоположения определенной частицы. Опция NON не печатает символ. Это необходимо, когда Вы хотите вывести "связи", но не хотите выводить символов.

PLOT WRITE [SEL] [[+] file ]
Помещает команды для принтера (Canon LBP или PostScript, в зависимости от определения в команде DEVICE) описывающие вывод решетки в выходной файл, определенный в командной строке или в файл, определенный в этой команде. Если опция [+] включена перед названием файла, то информация добавляется к концу файла. Если опция SEL включена, выводятся только выделенные частицы. Перед вызовом PLOT должны быть назначены символы для атомов (см. команду PLOT SYMBOL). Кто-то также может украсить диаграмму используя DISP, PAGE или LAYER.

POSVEL [ADD] np
Читает последовательно типы частицы, координаты и скорости. Единицы для координат - ангстремы, единицы скорости - см/секунда. С опцией ADD прежний выбор сохраняется, и новые частицы добавляются к списку выбора. Без опции ADD программа забывает обо всех предыдущих выборах, и выбирает новые частицы. Параметр np является числом частиц для чтения программы. Для каждой частицы вводится свой тип, и отдельная строка с координатами после POSVEL как показано ниже.

POSVEL 4
1 1/4 1/4 1/4 0 0 0
2 1/4 3/4 3/4 0 0 0
2 3/4 1/4 3/4 20.0 0 0
2 3/4 3/4 1/4 -20.0 0 0

POTENTIAL SET { EAM ntype | PAIR ntype | STILL | TERSOFF }
Устанавливает тип потенциала. EAM выбирает Метод Вложенных Атомов, и ntype определяет число элементов, (или типов атома) используемых в моделировании. Так же PAIR используется для парных потенциалов. Последующие команды должны определить точную форму потенциальных функций. См. секцию о Межатомных Потенциалах.
Опция STILL выбирает потенциал Cтиллинжер-Вебера для кремния, опция TERSOFF выбирает потенциал Терсофа для карбида кремния.

PRESSURE ANDERSEN xmass [ ymass [ zmass ] ]
PRESSURE CLAMP bulkmodulus [ cstep ]
PRESSURE OFF
PRESSURE EXTERNAL pressureX [ pressure Y [ pressure Z ] ]
PRESSURE { ISOTROPIC | ORTHORHOMBIC }

Эти команды управляют алгоритмом постоянного давления XMD (см. секцию Стабилизация Давления/Методы Постоянного Давления). По умолчанию алгоритм постоянного давления выключен, следовательно, размер решетки зафиксирован.
Команды PRESSURE ANDERSEN включает алгоритм постоянного давления Андерсена. С этим алгоритмом должны быть определены одна или более масс. Если только xmass определен, то масса объема - то же самое во всех трех направлениях. Если только xmass и ymass определен, то zmass равен величине ymass.
Команда PRESSURE CLAMP включает "зажим давления". Это требует определения Модуля Системной упругости в единицах Mbars. Дополнительная параметр cstep определяет, как быстро размер решетки колеблется в ответ на внутреннее напряжение.
Команды PRESSURE OFF выключает и PRESSURE ANDERSEN и алгоритмы PRESSURE CLAMP (заметьте, что только один алгоритм может использоваться одновременно).
Команда PRESSURE EXTERNAL устанавливает внешнее давление системы. Внешнее давление не будет иметь никакого эффекта до тех пор, пока используются алгоритмы PRESSURE ANDERSEN или PRESSURE CLAMP. По умолчанию внешнее давление - ноль. Вы можете также оказать различное давление в этих X, Y и Z направлениях, используя PRESSURE CLAMP (Вы получите ошибку, используя PRESSURE ANDERSEN во время Вашей первой CMD или QUENCH команды). Если только одно давление (давление X) определено, то все давления равны. Если два давления определены (давление X, давление Y) тогда давление Z равно давлению Y. Вы можете определить три давления, чтобы сделать независимыми X, Y и Z давления.
Команда PRESSURE { ISOTROPIC | ORTHORHOMBIC } управляет симметрией повторяющейся решетки. С PRESSURE ISOTROPIC (по умолчанию) решетка сокращается или расширяется однородно (изотропно - вне зависимости от направления), таким образом, кубическая решетка останется кубической решеткой, и четырёхугольная решетка поддержит свое a/c отношение, и т.д. PRESSURE ORTHORHOMBIC позволяет x, y и z значениям изменять размер независимо, который может привести к начальной кубической решетке, теряющей ее кубическую симметрию, и четырёхугольной решетке, теряющей свое a/c отношение, и даже свое a/b отношение.

QUENCH nstep [nquench]
Аналогична команде CMD. Выполняет CMD для nstep числа шагов, но применяет один или второй алгоритм гашения (подавления) результирующих скоростей, как способ расслабить атомные конфигурации. Если nquench равно 1 (по умолчанию), то всякий раз, когда повышается потенциальная энергия относительно предыдущего временного шага, все скорости обнуляются. Если nquench равно 2, то, когда у любой отдельной частицы есть f.v

REFSTEP [CLEAR | COPY | SWAP]
Когда используется без параметров, то текущие частицы, смещения, типы и RDF будут скопированы в ссылочный шаг (см.п.6.1). Опция CLEAR стирает всю информацию, ранее хранившуюся в ссылочном шаге. Опция SWAP переключает ссылочный и текущий шаг. Опция COPY копирует ссылочный шаг в текущий шаг, пока сохраняется содержание ссылочного шага.

REMOVE
Удаляет выбранные частицы из списка текущих частиц и ссылочных частиц.

ROTATE xaxis yaxis zaxis xcenter ycenter zcenter angle
Эта команда вращает выбранные частицы по указанной оси данным углом (в градусах). Направление оси задано вектором xaxis yaxis zaxis (величина вектора проигнорирована). Координаты xcenter ycenter zcenter вычисляют местонахождение оси в пространстве, определяя точку, через которую должна пройти ось. Вращение следует "правилу правой руки", это означает, что когда большой палец правой руки указывает в направлении оси, остающиеся пальцы, которые загнуты, указывают в направлении положительного вращения.

RUN run
Устанавливает номер шага run. Используется командами PLOT, STATE и WRITE RCV (см. 6.12 Что такое run).

SCALE xscale [yscale [zscale]]
Задается масштаб для решетки и частиц xscale, yscale и zscale соответственно в x, y и z направлениях. Если zscale опущен, он задан как yscale, так же если yscale опущен, он задан как xscale.

SCREW xburgers yburgers zburgers xorg yorg zorg [ xref yref zref ]
Применяет смещения к выбранным частицам, чтобы сформировать винтовую дислокацию в ранее идеальной решетке. xburgers, yburgers, zburgers, являются компонентами Вектора Бюргерса (Вектор Бюргерса (b) — количественная характеристика, описывающая искажения кристаллической решётки вокруг дислокации). xorg, yorg, zorg, определяют точку, через которую проходит линия винта. Дополнительные xref, yref, zref, определяют ссылочное направление (reference direction), непараллельное Вектору Бюргерса (которое является также направлением линии дислокации винта). Эта ссылка вместе с линией дислокации винта определяет ссылочную плоскость (reference plane). Все атомы в пределах этой ссылочной плоскости подвергаются нулевому смещению. Если никакого ссылочного направления не определено, используется произвольное. Смещение каждого атома дает
di = b * sin(ai))
где di - смещение атома, ai - угол, сделанный в ссылочной плоскости, линией, соединяющей атом i и начало координат, и b - Вектор Бюргерса.

SEED seed
Генерирует случайное число с МО seed. Генератор случайных чисел используется как ITEMP так и для случайных шагов командой MC.

SELECT
Вот полная форма команды SELECT со всеми возможными опциями

SELECT [AND | OR | NOT | XOR ]
{ ALL
| BOX x1 y1 z1 x2 y2 z2
| EATOM lo hi
| ELLIPSE xc yc zc xr yr zr
| ILIST nlist i1 i2 i3 ....
| INDEX i1 [i2 [iskip]]
| LAYER {x|y|z} nlayer l1 [l2 [l3 [..] ] ]
| NEAR n [ INDEX index | POINT x y z | SET set ]
| NEAR [ n ] RADIUS r1 r2 [ INDEX index | POINT x y z | SET set ]
| PLANE xn yn zn x1 y1 z1 x2 y2 z2
| SET set
| TAG tag
| TYPE type
| VELOCITY [ ABS ] { X | Y| Z | MAG } lo hi }

Эта команда выбирает подмножество частиц согласно заданным критериям. AND выбирает только те частицы, которые были ранее отобраны И соответствуют текущим критериям. OR выбирает частицы, которые принадлежат либо одной либо другой группе. NOT выбирает те частицы, которые не соответствуют данным критериям. XOR выбирает либо те частицы, которые были ранее отобраны, либо те, которые соответствуют текущим критериям, но не те и другие сразу.

ALL
выбирает все частицы.

BOX x1 y1 z1 x2 y2 z2
выбирает все частицы в пределах решетки, противоположные углы которой (x1, y1, z1) и (x2, y2, z2).

EATOM lo hi
выбирает все атомы, потенциальная энергия которых попадает между lo и hi, где единицы определены командой EUNIT (по умолчанию - эрги). Важно: Эта команда использует энергии, которые были вычислены для атомов, когда команды WRITE ENERGY, WRITE EATOM, CMD, QUENCH или MC были выполнены. Эта команда НЕ будет повторно вычислять энергии.

ELLIPSE xc yc zc xr yr zr
выбирает частицы в пределах эллипса, с центром в (xc, yc, zc) и с размерами по осям (xr,yr,zr).

ILIST nlist / i1 i2 i3 ...
выбирает все частицы, индексы которых перечислены. nlist - число индексов в списке. Список индексов помещается в последующих строках.

INDEX i1 [i2 [iskip]]
выбирает частицы, пронумерованные от i1 до i2. Если i2 опущен, тогда только частица i1 отбирается. Если iskip включен, тогда только каждая iskip-ая частица, начинающаяся c i1 и не превышающая i2, будет отобрана.

LAYER {x|y|z} nlayer l1 [l2 [l3 [..] ] ]
делит моделирование на nlayer слоев в x, y, или z направлениях и выбирает те атомы в слое(ях) l1, l2... Если имеют место повторяющиеся граничные условия, тогда эта опция делит камеру на nlayer количество слоёв, иначе опция делит пространство между maximum и minimum частицами в выбранном направлении.

NEAR n [ INDEX index | POINT x y z | SET set ]
выбирает n количество самых близких частиц к атому или точке. Если не определены опции, то выбирается n самых близких атомов к первому из в настоящее время выбранных атомов ('первый' атом - атом с самым низким индексом). С опцией SET эта команда выбирает n самых близких атомов к первому атому в наборе (снова, 'первый' атом - атом с самым низким индексом). Если используется опция INDEX, то команда выбирает n самых близких атомов к частице с соответствующим индексом. В этих трех случаях не отбирается сам атом, а только его окружение. Если опция POINT используется, команда выбирает n самых близких атомов к координате x, y, z.

NEAR [ n ] RADIUS r1 r2 [ INDEX index | POINT x y z | SET set ]
подобно предыдущей команде, эта выбирает самые близкие атомы к 'первому' атому из отобранных в настоящее время атомов, или от данного набора SET, или соседствующих атомов с заданными INDEX, или POINT в x, y, z опциями. Однако, эта команда отбирает атомы только между r1, r2 ангстремов от оригинального атома или пункта. Если дополнительная величина n задана, не более, чем n самых близких атомов между r1, r2 ангстремов будет отобрано.

PLANE xn yn zn x1 y1 z1 x2 y2 z2
выбирает частицы между двумя параллельными плоскостями. Плоскости нормальны по отношению к вектору (xn, yn, zn). Эти две плоскости проходят через точки (x1, y1, z1) и (x2, y2, z2) соответственно.

SET set
выбирает все частицы в указанном наборе (диапазоны значений набора от 1 до 8).

STRESS THERMAL { ON | OFF }
Большинство (все?) вычисления термодинамики включают элемент атомных скоростей (вириал) когда вычисляется внутреннее напряжение. По-умолчанию XMD не включает этот элемент но включает только внутреннее напряжение, которое возникает непосредственно из сил взаимодействия. Если Вы хотите включить этот элемент используйте команду
STRESS THERMAL ON
Это спорный вопрос, я думаю, его можно решить, рассмотрев внутренние напряжения и тепловое расширение абсолютно твердого тела. Такое твердое вещество НЕ расширяется с повышением температуры, но оно расширяется, если вириальный член является правильным. Во всяком случае, истина, видимо где-то здесь :)

TAG tag
выбирает все частицы с указанным значением признака (диапазон значений от 0 до 255).

TYPE type
выбирает все частицы типа type.

VELOCITY [ ABS ] { X | Y| Z | MAG } lo hi
выбирает частицы со скоростями между lo и hi. Можно использовать эти X, Y или Z компоненты скорости, также можно использовать опцию ABS, чтобы запросить абсолютную величину скорости. Опция MAG сравнивает величину скорости, когда выбор ABS не имеет значения. Единицами измерения для X, Y, Z и MAG - сантиметры в секунду.

SURFACE { ON | OFF } { X | Y | Z } [X|Y|Z|ON|OFF] ...
Определяет, свободная поверхность или повторяющиеся граничное условие используется с MC и CMD (см. страницу 7). SURFACE ON X Y Z создает свободную поверхность в x, y и z направлениях. SURFACE OFF X Y ON Z создает свободную поверхность в z направлении и повторяющиеся граничные условия в x и y направлениях. По умолчанию, повторяющиеся граничные условия присутствуют во всех трех направлениях. Когда есть свободная поверхность, это измерение решетки игнорируется.

TYPE type

Устанавливает тип выбранного атома. Тип атома - важное свойство, которое определяет силы взаимодействия в потенциальной модели (см. Межатомные потенциалы).

TYPELIST [SEL] ntype

Считывает ntype количество типов из входных строк, следующих за командой. Эти типы устанавливаются для всех существующих частиц (или для выделенных частиц). ntype может быть меньше или больше количества частиц (или выбранных частиц). Если меньше, тогда изменяются только первые ntype частицы. Если больше, то дополнительные типы игнорируются.

TYPENAME t1 name1 [ t2 name2 ] [ t3 name3 ] ... [tn namen]

Ассоциирует тип t1 (t2, и т.д.) с элементом name1 (name2, и т.д.). Это используется чтобы назначить "нормальные" имена для атомов (FE, NA), которые будут использованы вместо типа атомов, установленного в программе для следующих выходных форматов (WRITE XMOL и WRITE PDB).

VELOCITY { LINEAR | ANGULAR} dx dy dz magnitude
Устанавливает полную линейную или угловую скорость для выбранных частиц. Для линейного случая, (dx, dy, dz) определяет направление скорости, и magnitude - величина скорости (в сантиметрах в секунду).
Для угловой скорости, (dx,dy,dz) - направление вращательной оси, и magnitude - угловая скорость (в радианах в секунду). Ось помещена через центр массы выбранных частиц. Направление положительной угловой скорости следует правилу правой руки: если большим пальцем правой руки указывать вдоль оси, то остальные согнутые пальцы руки указывают на направление положительного вращения.

VERBOSE { ON | OFF }
Включает или выключает комментарии на выходе. В настоящее время только команда WRITE ATOM делает комментарии.

WAVE phase dx dy dz kx ky kz
Перемещает выбранные частицы волной (волнообразно). Новое положение каждой частицы
r' = r + d sin (k · r)
где d - вектор волны (dx,dy,dz), и k (kx, ky, kz). r - оригинальная координата частицы, измеренная от начала координат и r' - новая координата частицы.

9. Команда FILL

Команда FILL используется для создания решетки. По существу, Вы определяете область, которая будет содержать решетку, и вы определяете геометрию решетки и ориентацию. Затем программа создает координаты атомов, которые соответствуют вашим требованиям.
Решетка генерируется с помощью FILL PARTICLE и FILL CELL, команд, которые Вы разработаете. Команда FILL PARTICLE определяет набор атомов, которые находятся в заданной области. Команда FILL CELL определяет три вектора, которые описывают, как именно атомы располагаются в этой области.

9.1 FILL Пример 1: Заполнение сферы

Здесь пример где создается сфера с заполнением решеткой B2

fill boundary sphere 4.0 2.0 2.0 2.0
fill particle 2
1 0.0 0.0 0.0
2 0.5 0.5 0.5
fill align 2 2 2
fill cell
1 0 0
0 1 0
0 0 1
fill orient 1 1 0 1 -1 0 0 0 1
fill go

Сфера с центром в точке (2, 2, 2) и имеет радиус 4 ангстрема, как определено командой FILL BOUNDARY. Команда FILL PARTICLE дает координаты и типы для атомов повторяющейся ячейки. Имеются 2 атома для повторяющейся ячейки решетки В2 (решетка В2 имеет размещение атомов BCC-решетки, но двухатомного класса (вида) ). Команда FILL CELL говорит что ячейка является повторяющейся путем 3 смещений (1,0,0), (0,1,0) и (0,0,1). Команда FILL ORIENT говорит что частицы и перемещения будут переориентированы так что из (1,0,0), (0,1,0) и (0,0,1) станут (110), (1-10) и (001). Команда FILL ALIGN говорит что начало повторяющейся ячейки (где согласно команде FILL PARTICLE располагается первый атом) будет лежать в точке (2,2,2) в решетке. Поэтому в данном примере, атом типа 1 будет помещен в центр заполненной сферы. Команда FILL GO говорит XMD, что мы ввели всю информацию и пора создать частицы. Значения по умолчанию используются для любой информации, которая не была введена. Иногда (обычно) используется не только команда FILL GO. Если к.л. информация определена, более ранние команды становятся командами по умолчанию для более поздних команд.

9.2 FILL Пример 2: Создание Алмазной Кубической Решетки
В этом примере мы заполняем всю камеру моделирования алмазной кубической решеткой. Алмазная кубическая решетка сделана путем дублирования пары атомов, используя повторяющиеся векторы ячейки для решетки FCC. Так как мы не использовали команду FILL BOUNDARY, FILL BOUNDARY BOX предполагает, что система координат (или кристаллит) это область заполнения.

box 8 8 8
fill particle 2
1 0 0 0
2 1/4 1/4 1/4
fill cell
0 1/2 1/2
1/2 0 1/2
1/2 1/2 0
fill go

9.3 FILL Пример 3: Дублирующая (двойная) Плоскость
#
# Twinning plane in Diamond SiC lattice
#
#
# Box commensurate with [11-2] [111] [1-10] orientation
#
box 6*sqrt(6)/2 4*sqrt(3) 10*sqrt(2)/2
#
# Align particles so
# (1) box boundaries fall midway between adjacent planes
# (2) two twinned grains are properly aligned
#
fill align sqrt(6)/12 2*sqrt(3)-sqrt(3)/8 sqrt(2)/8
#
# Basis atoms for Diamond SiC
#
fill particle 2
1 0 0 0
2 1/4 1/4 1/4
#
# Cell vectors for fcc/diamond primitive lattice
#
fill cell
0 1/2 1/2
1/2 0 1/2
1/2 1/2 0
#
# Fill bottom y half of box
#
fill orient 1 1 -2 1 1 1 1 -1 0
fill boundary box 0 0 0 6 2.75 2
fill go
#
# Fill top y half of box
#
fill orient -1 -1 2 1 1 1 -1 1 0
fill boundary box 0 2.75 0 6 5.50 2
fill go

9.4 Команды FILL

FILL ALIGN x y z
Вы можете использовать эту команду, чтобы удостовериться, что один из сгенерированных атомов будет иметь координаты (x, y, z). Эти команды заставляют тип атома расположенного в (0,0,0) в команде FILL PARTICLE расположиться в координатах (x, y, z). Если (x, y, z) находятся вне области заполнения , то, если бы решетка была расширена за пределами области, атом был бы в (x, y, z). Заметьте что, если никакого атома не будет в (0,0,0) в команде FILL PARTICLE, то атом не появится и в (x, y, z).

FILL BOUNDARY BOX x1 y1 z1 x2 y2 z2
Делает заполненную область (область заполнения) прямоугольником с координатами (x1, y1, z1) и (x2, y2, z2) в противоположных углах. Эта область направлена вдоль осей координат.
Если параметр boundary не определен, то FILL BOUNDARY BOX предполагает область совпадающую с системой координат (определяется командой BOX). Если ни команда FILL BOUNDARY BOX, ни BOX не была определена запуск FILL GO завершается ошибкой.

FILL MARGIN margin
Иногда, когда используется команда FILL, чтобы произвести частицы в двух или больше соседних областях, частицы в соседних регионах могут лежать слишком близко друг к другу. Это может вызвать проблему при вычислении энергий или сил, поскольку некоторые потенциальные модели терпят неудачу, когда атомы слишком приближены (закрыты) один к другому. Чтобы предотвратить это, можно выбрать margin. После того, как граница заполнена, частицы затем продвигаются к центру границы так, чтобы минимальное расстояние от любой частицы до стен границы было бы margin (единицы измерения - ангстремы). Значение margin по умолчанию - ноль.
FILL PARTICLE npart
Эта команда подобна команде PARTICLE см. выше. Данная команда определяет ряд атомов, который будет повторен, чтобы заполнить область. npart - это число атомов. За этой командой должны следовать npart линий, по одной линии для каждого атома, и со своим типом атома на каждой линии (число между 1 и 255) и x, y и z координатами для этого атома.

10. Команда Write

Команда Write используется XMD для вывода информации (за исключением ESAVE, BSAVE, SSAVE и команды TSAVE). Есть три модификатора, которые могут использоваться с некоторыми опциями WRITE: FILE, SEL и NOHEAD.
Опция FILE [+]filename направляет вывод в указанный файл. Опция + добавляет вывод в конец указанного файла. Иначе файл переписывается.
Опция SEL указывает только те значения, которые принадлежат к выбранным атомам, (см. SELECT выше).
Опция NOHEAD запрещает WRITE выводить заголовок. Некоторые команды WRITE делают вывод в несколько линий. Эта команда предшествует выводу с линией заголовка. Например, команда WRITE PARTICLE напишет что-то, наподобие следующего:
PARTICLE 10
1 0.0 0.0 0.0
2 0.5 0.5 0.5
... (8 more lines)

Если Вы не хотите выводить заголовок (первая строка), то используйте опцию NOHEAD следующим образом: "WRITE NOHEAD PARTICLE". Эта опция наиболее часто используется вместе с опцией FILE.
Далее подробное описание каждого параметра.

WRITE [FILE [+]filename] BOX
Пишет соответствующий параметр. Заметьте, что каждый из вышеупомянутых параметров - константы, которые установлены или пользователем или по умолчанию. Все эти значения описаны выше в разных формах команд.

WRITE [SEL] COR [+]filename
Пишет информацию о текущем шаге в COR формате в файл filename. Если опция [+] включена, то информация добавляется к концу файла. Иначе файл будет перезаписан.

WRITE [ FILE [+]filename ] [SEL] [AVG|MIN|MAX] [NOHEAD] PARTICLE
Записывает тип и координаты каждой частицы или выбранных частиц. Единицы для координаты - ангстремы.
Опции AVG, MIN and MAX пишут среднее значение, минимум и максимум x, y, z координат для выбранных частиц. В этом случае вывод программы отличается от нормального вывода для частиц и похож на один из следующих,
AVG_POSITION x y z
MIN_POSITION x y z
MAX_POSITION x y z
вместо нормального
PARTICLE n
type1 x1 y1 z1
type2 x2 y2 z2
type3 x3 y3 z3
...
WRITE [ FILE [+]filename ] [SEL] [AVG|MIN|MAX] [NOHEAD] POSVEL
Записывает тип, координаты и скорость каждой частицы или выбранных частиц. Координаты - ангстремы, скоростные единицы - см/сек.
Опции AVG, MIN and MAX пишут среднее значение, минимум и максимум x, y, z координат и скоростей для выбранных частиц. В этом случае вывод программы отличается от нормального вывода для координат и скоростей и похож на один из следующих,
AVG_POSVEL x y z
MIN_POSVEL x y z
MAX_POSVEL x y z

WRITE [ FILE [+]filename ] [NOHEAD] RDF nbin rmin rmax [type1 type2]
Writes a table of the Radial Distribution Function. This table is a histogram of the number of atom pairs between a given range of separations. nbin is the number of bins in the histogram, and rmin and rmax are the minimum and maximum value of separation included in the table (units are in angstroms). The output from this command is the header line of the format.
Записывает таблицу Радиальной функции распределения. Эта таблица - гистограмма количества атомных пар распределенных в порядке расстояний между ними. nbin - количество столбцов гистограммы, rmin и rmax - минимальное и максимальное расстояние между атомами.

If the optional type fields type1 and type2 are supplied, then only the RDF between these two types of atoms is written.
Если опции type1 и type2 добавлены, то записывается радиальная функция только для этих типов атомов.

RDF nbin rmin rmax
which echoes back the input parameters followed by nbin lines. Each line has two number on it, the first is the value of the separation at the center of the bin, and the second is the number of atom pairs in that bin.

Такой пример выведет nbin строк. Каждая строка будет иметь 2 числа - первое это количество атомов в центре диапазона, второе - всего в этом диапазоне.

WRITE [ FILE [+]filename ] [NOHEAD] [AVG|MIN|MAX] [SEL] VELOCITY
Записывает (выбранные [SEL]) скорости в см/сек.
Опции AVG, MIN и MAX запишут среднее значение, минимум и максимум x, y, z скоростей для выбранных частиц. В этом случае выводимые скорости отличаются от нормальных скоростей и вывод похож на один из следующих,

AVG_VELOCITY x y z
MIN_VELOCITY x y z
MAX_VELOCITY x y z

WRITE [ FILE [+]filename ] [NOHEAD] [SEL] VAR [i|g|t|s|ti|m|x|y|z|vx|vy|vz|ep|text] ...
Выводит запрошенные данные для каждого атома или выбранного атома, по одной строке для каждого атома. Доступные типы данных:

i Номер атома (Index number).
g Номер тега (Tag number).
t Тип атома (Type number).
s Текущий шаг (Current time step number).
ti Текущее время в секундах (Current time (in seconds)).
m Масса в атомных единицах (Mass (in atomic mass units)
x,y,z Координаты X, Y, Z в сантиметрах (X, Y or Z coordinate in centimeters).
vx,vy,vz Скорости по X, Y, Z в сантиметрах в секунду (X, Y or Z velocity in centimeters per second).
ep Потенциальная энергия в текущих энергетических единицах (Potential energy in current energy units (see EUNIT command)).
ek Кинетическая энергия (Kinetic energy in current energy units (see EUNIT command).
tm Мгновенная температура (Instantaneous temperature (in Kelvin).
df Степени свободы (Degrees of freedom (see NOTE below).

Дополнительный "text" - произвольная текстовая строка без пробелов, которая не соответствует символам для данных (см. выше) - должен быть выведен "как есть". Эта опция полезна, если Вы хотите вставить в вывод VAR символ-"разделитель", используя затем UNIX команду "grep" для обработки.
С WRITE VAR, Вы можете повторить результаты многих других write-команд, таких как WRITE PARTICLE, WRITE VELOCITY, WRITE POSVEL, WRITE EATOM и т.д.
ЗАМЕЧАНИЕ: атом может иметь 0, 1, 2 или 3 степени свободы, в зависимости от того, зафиксирован ли этот атом, ограничен ли по отношению к линии, ограничен ли по отношению к плоскости, или свободен. См. описание команд FIX и CONSTRAIN для дополнительной информации.

11. Межатомные Потенциалы

В данный момент времени команда POTENTIAL задокументирована частично. Рекомендуемый способ для использования потенциалов состоит в том, чтобы получить существующий файл потенциалов, который сделает необходимые вызовы команды POTENTIAL. Свяжитесь с разработчиком XMD за дополнительной информацией (Джон Рифкин, jon.rifkin@uconn.edu).

11.4 Создание Потенциалов EAM
Практически большинство потенциалов EAM (т.е. сделанных по методу Вложенных Потенциалов), из любого источника, сохранены как текстовые таблицы. Данный документ описывает, как адаптировать такую текстовую таблицу для использования с XMD. Все что вам потребуется - это редактор текста. Как только Вы преобразовали текстовый документ в формат для чтения XMD, Вы должны сохранить потенциал в отдельном файле. Таким образом, может быть получен легкий доступ к такому файлу, как файлу входа в XMD (используюя команду READ).
Вот часть действий, если Вы пытаетесь сделать потенциальный файл XMD.

#
# This is an example XMD potential file
#
eunit eV
potential set eam 2
#
potential pair 1 1 10 0.0 5.0
900.0 800.0 700.0 600.0 500.0 400.0 300.0 200.0 100.0 0.0 #
potential dens 1 10 0.0 5.0
900.0 800.0 700.0
600.0 500.0 400.0
300.0 200.0 100.0 0.0
#
potential embed 1 20 0.0 1000
....

1. Линии, начинающиеся со знака решетки (#), являются комментариями, и могут быть помещены куда угодно в пределах файла.
2. Вы должны сообщить XMD, какие энергетические единицы Вы используете для своей потенциальной таблицы. Команда

EUNIT (unit)

где (unit) может быть или eV, ERG, K, JOULE, или

EUNIT (name) (value)

где (name) — имя единицы, которое Вы определяете, и (value) - число эргов в одной из таких единиц (см. команду EUNIT).
Вы можете определить эту команду более, чем один раз, что полезно, если не все Ваши таблицы используют те же самые энергетические единицы.
3. Затем, Вы должны дать понять XMD, что используете потенциал EAM и число типов атомов в этом потенциале. Команда для этого,
POTENTIAL SET EAM n
где n - число типов. Таким образом, если у Вас есть сплав с двумя составляющими элементами, Вы должны использовать команду
POTENTIAL SET EAM 2
4. Затем, Вы должны определить каждую функцию EAM отдельной таблицей. Если, например, у Вас будет 2 типа атомов, Ni и Al, тогда будет 7 функций EAM: две электронные функции плотности (по одной для каждого типа атома), две вложенные функции (снова по одному для каждого типа), и три парных функции (одна для взаимодействий Ni-Ni, одна для Al-Al, и одного перекрестного потенциала для взаимодействия Ni-Al).
В общем случае должно быть (5n + n^2)/2 EAM функций для n типов атома.
Такие таблицы вводятся командами, такими как

atom types table size range
---------- ---------- ---------
POTENTIAL PAIR 1 1 2000 1.2 6.3

POTENTIAL DENS 1 2000 1.2 6.3

POTENTIAL EMBED 1 1000 0 20.0

Эти команды работают следующим образом.

• POTENTIAL - Идентифицирует команду как тип потенциала.
• PAIR, DENS, EMBED - Идентифицирует таблицу либо как потенциал пары, либо как электронную плотность либо как функцию вложенного потенциала.
• (тип(ы) атома) - Определяют, какому типу атома принадлежит функция. Отметим, что функции потенциала пары требуют двух целых чисел, так как в модели EAM потенциал пары зависит от обоих типов участвовавших атомов. Функции электронной плотности и вложенная функция зависят только от типа атома, производящего электронную плотность (функция DENS) или типа атома, получающего электронную плотность (EMBED функция).
• (размер таблицы) - целое число, которое определяет число значений в таблице, которые следуют за этой командой.
• (диапазон) - Два числа, которые определяют входной диапазон для таблицы. В примере выше для парного потенциала, и для электронной функции плотности входные расстояния принимаются от 1.2 до 6.3 ангстремов. Для любого расстояния менее, чем разрешенный диапазон, функция EAM остановит программу. Для любого расстояния больше, чем диапазон (отсечка функции) функция обнулится.
5. Последней идет таблица (последними идут такие столбцы). Число значений в таблице должно соответствовать числу, определенному выше. Первое значение в таблице – значение функции в начале диапазона – последнее значение в конце диапазона.
Таким образом, для потенциала пары или функции электронной плотности, последнее число в таблице должно быть нулем, так как функция должна перейти в ноль при отсечке. Точно так же для вложенной функции первое значение в документе должно быть нолем, так как это должен быть ноль, когда электронная плотность - ноль.

12. Технические приемы и Примеры

12.1 Создание Решетки B2
Решетки создаются командой FILL (хотя они могут также быть созданы, используя команду DUP). Следующий код создаст решетку B2 с размером элементарной ячейки 2.88, ориентированную [100], [010], [001] по направлениям (x, y, z) в пространстве.

# create a b2 lattice using atoms types 1 and 2
#
# make repeating box
box 4 4 4
#
# Use fill command to generate atom positions
#
fill particle 2
1 1/4 1/4 1/4
2 3/4 3/4 3/4
fill go
#
# scale lattice to 2.88 unit cell lengths
#
scale 2.88

Код создает решетку из 4х4х4 элементарных ячейки, каждая с атомом типа 1 в углу и типа 2 в центре. Команда MOVE центрирует частицы внутри повторяющихся границ. Это используется для минимизации “заворачиваний”, которые случаются когда частицы проходят через стену решетки. По центрированию частиц в box, позиция отдаленных атомов так далеко от границ насколько возможно.?????????????????

12.2 Создание решетки L12
Предыдущий код сгенерировал решетку B2 с размером элементарной ячейки 2,88, ориентированную [100], [010], [001] по направлениям (x, y, z) в пространстве. Решетка L12 представляет из себя FCC (Face Centred Cubic, по другому ГЦК — гранецентрированная кубическая решетка — прим.). Решетка FCC - с одним типом атомов в углах и с другим на гранях, например Ni3Al. Следующий код создаст решетку L12 с размером элементарной ячейки 4.183, ориентированную [100], [010], [001] по направлениям (x, y, z) в пространстве.

# CREATE A L12 LATTICE USING ATOM TYPES 1 AND 2
#
# make repeating box
#
box 4 4 4
#
# Generate atom positions
#
fill particle 4
1 1/4 1/4 1/4
2 1/4 3/4 3/4
2 3/4 1/4 3/4
2 3/4 3/4 1/4
fill go
#
# Scale lattice to 4.183 unit cell length
#
scale 4.183

12.4 Поиск Оптимального Временного шага
Как было объяснено выше в разделе ТЕОРИЯ, РАЗМЕР ВРЕМЕННОГО ШАГА (см. страницу 3), это оптимальный размер временного шага, во время проведения моделирования молекулярной динамики. Физически этот размер временного шага - приблизительно от 0.0333 до 0.01 от наименьшего периода колебаний в моделировании. Наименьший период колебаний наиболее сильно зависит от используемого потенциала, и менее сильно от особенностей структуры решетки и температуры. Оптимальный временной шаг здесь найден методом проб и ошибок, а тестирование сделано с адиабатным моделированием. Ниже у нас есть входной файл для такого моделирования методом «проб и ошибок».

#
# Trial and error to find optimum time step size
#
# Read potential for nial
read /cmd/nial.pot
#
# Make repeating box and lattice (in units of a0)
#
box 6 6 6
fill particle 2
1 1/4 1/4 1/4
2 3/4 3/4 3/4
fill go
#
# Scale up to units of angstroms (2.8712 unit cell)
#
scale 2.8712
#
# Save energies from every dynamics step in file "timestep.e'
#
esave 1 timestep.e
#
# Set particle masses (in atomic mass units)
#
select type 1
mass 58.71
select type 2
mass 26.982
#
# Set adiabtic simulation at starting temperature of 200K
#
clamp off
itemp 200
#
# Vary time step
#
# Set initial timestep size variable
calc stepsize = 4e-16
# Do 6 separate runs of 20 steps each
repeat 6
# Set timestep size using dtime command
dtime stepsize
# 20 steps of dynamics (energies are written to tempstep.e file)
cmd 20
# Double the time step size
calc stepsize = 2 * stepsize
end

Команда ESAVE записывает четыре колонки чисел в выходной файл: временной шаг, суммарная энергия, потенциальная энергия и кинетическая энергия. При осуществлении на практике, полная системная энергия (вторая колонка) будет колебаться, особенно где-то в первых 10 шагах моделирования (прежде, чем более высокие производные по времени будут иметь возможность быть инициализированы в ходе интеграции). Пользователь должен сам решить, какое количество колебания приемлемо. В прошедших колебаниях от 1 до 5000 полной системной энергии за двадцать временных шагов это было позволено. Это полезно для построения значения временного шага (при контроле энергии), чтобы определить, когда система становится нестабильной.

12.5 Инициализация Температуры
Инициализация энергии может быть осуществлена при помощи единственной команды ITEMP. Однако необходимо иметь в виду, как перераспределение кинетической энергии в системе может влиять на моделирование. Чаще всего решетка со всеми атомами в начале моделирования находится в положении, с самым низким значением энергии для этой решетки. Когда к этой «идеальной» решетке добавляется кинетическая энергия, приблизительно половина её переходит в потенциальную энергию, необходимую для перемещения атомов в их идеальные положения. После короткого периода времени (скажем, 200 временных шагов) температура решетки достигнет величины, равной половине величины той температуры, когда впервые была использована команда ITEMP.

12.6 Нахождение Равновесия Константы Решетки
Часто у пользователя возникает необходимость в моделировании определенной структуры решетки, но он не уверен точности константы решетки (постоянной решетки), или в ее температурной зависимости. Конечно, в случае тетрагональной или орторомбической решетки, есть 2 или 3 константы решетки. Важно использовать правильные показатели константы решетки, проводя моделирование, иначе система будет введена в условие стресса. Так как материалы расширяются с увеличением температуры, константа решетки должна быть определена для каждой температуры моделирования. Как Вы найдете равновесие константы решетки (решеток) в зависимости от температуры? Самый легкий путь - использовать команду PRESSURE CLAMP.
Эта команда позволяет решетке моделирования регулировать свой размер в соответствии с оказанным давлением (как правило, нулевым давлением) и движением решетки. Записывая размер решетки используя команду BSAVE, Вы можете контролировать размер решетки и ее зависимость от временного шага, также можете определить средний размер(ы) решетки. Вот пример, где мы вычисляем размер решетки для Меди при 600 градусах Кельвина.

#
#  Finding the equilibrium lattice constant at 600K for Copper
#
# Read potential for nial
read /cmd/cu.pot
#
# Make repeating box and lattice (in units of a0)
#
box 6 6 6
fill particle 4
1  1/4 1/4 1/4
1  1/4 3/4 3/4
1  3/4 1/4 3/4
1  3/4 3/4 1/4
fill go
#
# Scale up to units of angstroms (3.61)
#
scale 3.61
#
# Save box size from every dynamics step in file "constant.b'
#
bsave 10 constant.b
#
# Set particle masses (in atomic mass units)
#
select type 1
mass 63.55
#
#  Set time step size
#
dtime 5e-15
#
# Set temperature clamp and starting temperature at 600K
#
clamp 600
itemp 600
#
#  Set pressure clamp
#
pressure clamp 1.37
#
#  Equilibrate for 10000 steps
#
#
cmd 10000

Файл constant.b будет содержать x, y, и z размеры решетки, измеренные через каждые 10 шагов. В этом примере размеры решетки увеличиваются в начале моделирования до тех пор, пока не достигают значения равновесия при 600 K, а затем колеблются вокруг этого значения. Можно рассчитать x, y и z размеры решетки вместе, чтобы получить средний размер решетки (после того, как равновесие достигнуто). В нашем примере размер решетки - 6 констант решетки (в примере камера составлена из 6x6x6 элементарных ячеек).
Если Вы моделируете тетрагональную или орторомбическую решетку, нужно использовать опцию PRESSURE ORTHORHOMBIC, так, чтобы x, y и z размеры решетки могли изменяться независимо. По умолчанию отношение между x, y и z размерами решетки сохраняется.

15. Ссылки

1. J. Tersoff, "Modeling solid-sate chemistry: Interatomic potentials for multicomponent systems", Phys Rev B 39 (8), 5566 (15 Mar 1989).
2. F. H. Stillinger and T. A. Weber, "Computer Simulation of local order in condensed phases of silicon", Phys Rev B 31 (8) 5262 (14 Apr 1985).
3. H. C. Andersen, "Molecular dynamics simulations at constant pressure and/or temperature", J Chem Phys 72 (4) (15 Feb 1980).
4. N. Metropolis et al., "Equation of State Calculations by Fast Computing Machines", J Chem Phys, 21 (6) (June 1953).

16. Выражение признательности

XMD написана Джоном Рифкин jon.rifkin at domen uconn.edu из University of Connecticut. Много полезных идей было внесено Philip C. Clapp, Charlotte Becquart, Elena Sevilla, Zeng Pei, Rongde Ge, Sha Xianwei, Wang Xianowei и другими.

Эта программное обеспечение было разработано и протестировано в Linux и Gnu C compiler.