Алгоритм интегрирования по времени
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Основным компонентом программ, использующих метод молекулярной динамики, является алгоритм интегрирования по времени. Он необходим, чтобы проинтегрировать уравнения движения взаимодействующих частиц и найти их траектории.

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

Конечно, эти схемы приближенными, и, поэтому, существуют ошибки, связанные с ними. Они классифицируются так:

Ошибки обрывания, связанные с точностью метода конечных разностей по отношению к истинному решению. Метод конечных разностей обычно базируется на ряде Тейлора, оборванном на некотором члене. Эти ошибки не зависят от программной реализации метода, они присущи самому алгоритму.

Ошибки округления, связаны с ошибками, возникающими при программной реализации алгоритма. Например, такие ошибки возникают из-за конечного числа цифр, используемых в компьютерной арифметике.

Оба типа ошибок можно уменьшить, уменьшая . Для больших  ошибки обрывания доминируют, но они быстро уменьшаются, когда  уменьшается. Например, алгоритм Верле имеет ошибки обрывания пропорциональные  для каждого временного шага интегрирования. Ошибки округления падают более медленно с уменьшением  и доминируют в пределе малых . Использование 64-битной точности (соответствующую “двойной точности” в Fortrane) помогает сохранить ошибки округления минимальными.

В молекулярной динамике наиболее часто используемым алгоритмом интегрирования по времени является, вероятно, так называемый алгоритм Верле [5]. Основная идея состоит в том, чтобы записать разложение Тейлора до третьего порядка вперед и назад по времени. Пусть  обозначает скорость,  - ускорение и  - третью производную от  по . Тогда имеем:

  . (4)

Складывая эти 2 выражения получаем

  . (5)

Это основная формула алгоритма Верле. Так как мы интегрируем уравнения Ньютона, то  есть просто сила, деленная на массу, и сила в свою очередь есть функция положения :

  . (6)

Видно, что ошибка обрывания алгоритма, когда система эволюционирует в течении времени , есть величина порядка , даже если третья производная не появляется в явном виде. Этот алгоритм в тоже время является простым для программной реализации, точным и стабильным, что объясняет его большую популярность при МД моделировании.

Проблема с этой версией алгоритма Верле состоит в том, что скорости явно не вычисляются. Хотя они не нужны для временной эволюции, но их знание иногда необходимо. Кроме того, они нужны для вычисления кинетической энергии , чья оценка необходима чтобы проверить сохранение полной энергии . Это один из наиболее важных тестов, указывающих, что МД моделирование выполняется корректно. Можно вычислить скорости из положений использую формулу

  . (7)

Однако, ошибки, которые дает это выражение, порядка  а не .

Чтобы преодолеть эту трудность, были развиты варианты алгоритма Верле. Они дают точно ту же траекторию и отличаются переменными, которые хранятся в памяти. Leap-frog алгоритм есть один из таких вариантов.

Лучший реализацией того же основного алгоритма есть так называемый алгоритм Верле со скоростью, когда положение скорости и ускорения в момент времени  получается из тех же величин в момент времени следующим образом:

  . (8)

Заметим, что необходимо 9N ячеек памяти, чтобы сохранить 3N положений, скоростей и ускорений, но нам не нужно одновременно хранить значения любой из этих величин для двух различных времен.



Процедура минимизации

 

Чтобы моделировать деформацию при нулевой температуре используется процедура минимизации, которая позволяет поддерживать систему вблизи локального минимума энергии все время. Деформация и минимизация выполняются одновременно. Алгоритм минимизации представляет собой модифицированный алгоритм МД. После каждого шага по времени МД для каждого атома вычисляется скалярное произведение между импульсом и силой. Для атомов, скалярное произведение для которых отрицательно, импульс зануляется, так как эти атомы движутся в направлении, в котором потенциальная энергия возрастает. Таким образом, кинетическая энергия атомов удаляется, тогда как потенциальная энергия приближается к локальному минимуму энергии вдоль направления движения атома. Такая процедура минимизации быстро сдвигает систему в окрестность локального минимума энергии, но полной сходимости не получается, так как полная сходимость требует числа шагов по времени порядка числа степеней свободы системы. Однако, обычно увеличении числа шагов процедуры минимизации приводит лишь к малым изменениям в эволюции системы.



Вычисление сил

 

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

Третий шаг состоит в оптимизации алгоритма поиска атомов, ближайших к данному атому. Дело в том, что прямолинейный перебор всех атомов, вычисление расстояний до них и отбрасывание тех атомов, расстояние до которых превышает радиус обрезания , требует количества операций пропорционального , где  - число атомов в системе. Следовательно, с ростом  число требуемых операций быстро возрастает, и поэтому выполнение вычислений сильно замедляется, а, для больших , делается практически невыполнимым. Таким образом, чтобы избежать этого замедления нужен алгоритм, для которого число требуемых операций росло бы с  линейно, а не квадратично. В принципе такой алгоритм прост – нужно перебирать не все атомы, а только достаточно близкорасположенные. Такое утверждение представляет собой тавтологию, пока не конкретизировано понятие близкорасположенных атомов. Чтобы сделать это, разобьем ячейку моделирования на более мелкие субячейки. Тогда близкорасположенные к данному атому будут атомы, которые расположены в субячейках, соседних с субячейкой, содержащей данный атом или в субячейках соседних с соседними.

Удобно разбить ячейку моделирования на субячейки – параллелепипеды (прямоугольники в двумерном случае). Вследствие сильного отталкивания на малых расстояниях, атомы не могут подходить близко друг к другу. Поэтому можно выбрать такие размеры субячеек, что в каждой из них будет находится не более одного атома.

Таким образом, алгоритм поиска атомов, удаленных от данного атома на расстояние не больше радиуса обрезания , выглядит следующим образом. По номеру атома находим координаты атома и по ним субячейку, в которой находится атом. Затем находим субячейки, удаленные от нее на расстояние не более чем . Атомы, расположенные в этих субячейках, и будут искомыми (см. рис.1). Чтобы найти номер атома, хранящегося в заданной субячейке, удобно ввести массив, каждый элемент которого соответствует определенной субячейке. В этом элементе массива будет хранится номер атома, расположенного в этой субячейке, или нуль, если субячейка пуста. Элементы этого массива обновляются на каждом шаге по времени МД. Ясно, что изложенный алгоритм обеспечивает линейный рост числа операций с ростом числа атомов  в системе. Вариации этого алгоритма используются в программах МД “Gromex”[6], “MOLDY”[7], “DL_POLY”[8] и др.

Возможна и другая организация вычислений, которая будет удобна для организации параллельных вычислений. Именно для вычисления сил, действующих на данный атом, можно перейти от суммирования по близлежащим атомам, к суммированию по близлежащим субячейкам (см рис.1). Будем двигаться последовательно по субячейкам первого ряда. Дойдя до конца первого ряда, перейдем в начало второго ряда и т.д.

 

                                 
                                 
                                 
          1 2 3 4                
          5 6 7 8                
          9 10 11 12                
                                 
                                 
                                 
                                 

Рис.1 Схема поиска ближайших атомов.

 

Если в субячейке находится атом, то вычисляем силу, действующую на него, со стороны ближайших атомов, расположенных в близлежащих субячейках. Если же субячейка пуста, то переходим к следующей. Отметим при этом, что, например, для атома находящегося в субячейке 6 (см. рис.1) необходимо вычислить силу, действующую со стороны атомов расположенных в субячейках 1, 2, 3, 7. Силы, действующие со стороны атомов, расположенных в субячейках 5, 9, 10, 11 в силу третьего закона Ньютона, с точностью до знака уже известны. Они были вычислены, когда вычислялись силы, действующие на атомы, расположенные в этих субячейках. Таким образом, в данной организации вычислений, необходимо рассматривать лишь половину близлежайших субячеек. Далее, при переходе к смежной субячейке 7 нет необходимости исследовать все близлежащие субячейки для поиска находящихся в них близко расположенных атомов. Необходимо лишь исследовать ячейки 4 и 8. И к найденным в них атомам, добавить атомы, найденные для ячейки 6, за исключением атомов находящихся в субячейках 1 и 6. Таким образом, информация о ближайших атомах для данной субячейки не теряется, а используется при поиске ближайших атомов для смежной субячейки. Это естественно приводит к ускорению вычислений.

Периодичность

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



Начальное состояние

 

В данной работе будут исследоваться с помощью МД кристаллы. Рассмотрим размещение совершенного кристалла в прямоугольной ячейке моделирования в случае периодичности в одном направлении. Периодическая структура самого кристалла накладывает ограничения на размер ячейки моделирования в направлении периодичности. Действительно, если в вершине, находящейся на одной из сторон ячейки моделирования находится атом кристалла, то эквивалентный атом кристалла должен быть в эквивалентной вершине, находящейся на другой из тождественных сторон. Это приводит к ограничениям на возможную длину ячейки моделирования в направлении периодичности и возможные ориентации кристаллографических осей кристалла относительно сторон ячейки моделирования. Возможны такие ориентации кристалла, при которых указанное выше требование выполнить точно невозможно.

Рис.2 Периодичность ячеек моделирования и размещение кристалла в ячейке моделирования.

 

Если же ориентация кристалла выбрана удачно, то длина ячейки моделирования может принимать значения кратные некоторой величине. Однако, на самом деле, эти ограничения не очень существенны. Для всех длин ячейки моделирования и ориентаций кристалла можно найти близкие к ним значения этих величин, для которых условие будет выполняться точно. Рецепт состоит в том, чтобы просто совместить указанную эквивалентную вершину с ближайшим эквивалентным атомом кристалла.

Если есть периодичность (см. рис. 2) и по второму направлению, то должно выполняться аналогичное требование и для второго направления. При этом необходимо заметить, что ориентация второй стороны для прямоугольной ячейки моделирования уже задана, поскольку она перпендикулярна первой стороне. Поэтому её длина будет кратна некоторой величине.

Если не принять специальных мер при подготовке начального состояния системы, то в ней возникают коллективные движения - колебания. Это связано с тем, что система может оказаться в сжатом или растянутом состоянии из-за несоответствия температуры системы с постоянной кристаллической решетки. Другими словами это тепловое расширение (сжатие) системы. Такие колебания имеют большой период и слабо затухают. Накладываясь на исследуемый процесс (например, деформирование системы) они смазывают картину этого исследуемого процесса. Следовательно, от этих колебаний необходимо избавиться. Это можно сделать несколькими способами. Во-первых, подождать пока колебания затухнут. Однако из-за большого периода и малого затухания это требует большого времени. Во-вторых, попытаться подогнать постоянную решетки кристалла к температуре. Опыт показывает, что, сделав несколько попыток, можно полностью исключить колебания. В-третьих, такую подгонку можно выполнить автоматически. О том, как это можно сделать, будет сказано ниже.

В МД моделировании часто возникает необходимость иметь систему в состоянии, характеризуемом определенной температурой. Однако, как мы можем получить систему с заданной температурой? Другими словами, как мы можем контролировать систему?

Для изменения температуры необходимо так изменить скорости частиц, чтобы получить желаемую температуру. В алгоритме Верле со скоростью, обсуждаемом выше, это может быть выполнено заменой уравнения

  (9)

на уравнение

  , (10)

где  желаемая температура, и  текущая температура. Такая модификация означает, что мы больше не следуем уравнениям Ньютона и, что полная энергия больше не сохраняется.



Дата: 2019-05-29, просмотров: 182.