Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dissertation

.pdf
Скачиваний:
71
Добавлен:
13.05.2015
Размер:
5.41 Mб
Скачать

61

получить средние по времени равновесные параметры моделируемой системы методом молекулярной динамики.

Необходимость в моделировании системы микроканонического ансамбля на практике возникает очень редко. Как правило, возникает необходимость в контроле температуры и/или давления в системе. Для этого применяют специальные алгоритмы – термостаты и баростаты.

Опишем лишь наиболее применяемые термостат и баростат Берендсена, которые мы используем в нашей работе. Подробный обзор техник контроля температуры и давления может быть найден, например, в [137]. Из отечественных работ по методам молекулярно-динамического моделирования при постоянных давлении и/или температуре можно отметить алгоритмы В.А. Рябова [138], которые также успешно применяются (см., например, [139]).

Термостат Берендсена [140] основан на введении знакопеременного трения согласно уравнению

dT(t) T0 T(t) , dt

где T(t) , T0 - текущая и требуемая температуры системы соответственно, -

постоянная времени. На каждом временном шаге скорости частиц масштабируются множителем

1 1t TT(0t) 1 ,

где 1 - постоянная времени релаксации.

С применением данного термостата связано несколько проблем [141]

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

62

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

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

Применение баростата Берендсена основано на использовании аналогичного подхода. Давление в системе изменяется согласно уравнению

dP(t) P0 P(t), dt

где P(t), P0 - текущее и требуемое давление в системе, - постоянная времени. Для корректировки давления на каждом временном шаге линейные размеры системы масштабируются множителем 1/ 3

 

 

r' 1/3r,

1

 

t

(P P(t)),

T

 

 

 

0

 

 

 

2

 

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

2 . Баростат Берендсена не вносит значительных изменений в уравнения движения [137] и достаточно прост в реализации.

У описанных термостата и баростата имеется недостаток, связанный с отсутствием статистических флуктуаций в моделируемых системах с постоянными температурой и/или давлении. Так, баростат Берендсена не описывает статистический ансамбль систем с постоянным давлением [137],

так как для его реализации необходимы временные флуктуации давления в системе. Термостат Берендсена также не в состоянии описывать канонический ансамбль, так как для реализации данного ансамбля необходимы флуктуации мгновенной температуры в системе [129]. Однако

63

на практике пренебрегают различиями между изокинетической молекулярной динамикой и молекулярной динамикой со статистическими флуктуациями температуры, как и между изобарической молекулярной динамикой и молекулярной динамикой со статистическими флуктуациями давления [129].

2.2.3.Разработка алгоритмов численного моделирования

ипрограммного пакета MDOMP

2.2.3.1.Реализация алгоритмов метода молекулярной динамики

Расхождение результатов, приведенных на рисунке 9, привело к необходимости разработки нового программного комплекса. В

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

деформирования, молекулярной статики.

Имеется возможность моделирования в приближениях парных потенциалов, ЕАМ, ADP. Программный комплекс поддерживает только табулированный формат потенциалов. Формат потенциалов в ЕАМ приближении выполнен аналогичным формату еам/alloy программы

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

Структура расчетного модуля является стандартной и изображена на рисунке 11.

Для анализа результатов имеется возможность расчета функций парного радиального распределения атомов, коэффициентов Стейнхардта

64

[142, 143], обеспечивающих распознавание кристаллической структуры

численными методами.

Рисунок 11 - Структура разработанного расчетного модуля программного комплекса MDOMP

65

2.2.3.2. Снижение нагрузки на CPU

Прежде всего, необходимо было определить методы снижения нагрузки на центральный процессор компьютера. Одним из наиболее эффективных методов является метод списка Верле (метод списка соседей) [131]. В данном методе создается массив, в который для каждого атома записываются номера атомов, находящихся в пределах радиуса rv . Величина rv превышает радиус обрезания потенциала RC на величину d (скин-слой) (рисунок 121). Перестроение списка соседей необходимо произвести в том случае, если один из атомов сместился на расстояние d с момента предыдущего построения списка. Параметр d выбирается из соображений наибольшего быстродействия. При малом d построение списка соседей будет менее затратным для CPU (центральное процессорное устройство - central processing unit), однако в этом случае необходимо более частое перестроение списка. При большей величине d, построение будет более затратным, однако перестроение будет происходить реже. В наших расчетах оптимальное значение параметра d составляет (0,3-0,5) Å. Наиболее часто список перестраивается при наличии в системе водорода из-за высокой подвижности атомов. Самая высокая частота перестроения списка в этом случае составляла 1/25 (МД-шагов)-1.

d

rv

RC

Рисунок 12

Рисунок 13

1 Рисунки 12, 13 взяты из [129]

66

Сложности возникают при построении списка Верле, так как без применения специальных алгоритмов вычислительные затраты будут пропорциональны N2 (N – число частиц во всей системе). Эффективным методом решения данной проблемы является применения метода разбиения пространства на ячейки [129, 144] (рисунок 13). В данном методе пространство расчетной области делится на ячейки с размером rv . Поскольку регистрация атомов по ячейкам требует выполнения ~ N операций, а

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

~ N.

В ряде случаев более эффективным оказывается применение метода ячеек непосредственно в вычислении сил без применения списка Верле

[129]. Однако из общих соображений ясно, что для кристаллических систем,

когда подвижность атомов не столь высока как в жидкостях или газах,

наилучшим вариантом решения проблемы снижения нагрузки на CPU будет применение списка Верле, для построения которого применяется метод ячеек.

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

MakeTable() представляет собой реализацию такой процедуры (Алгоритм 1).

67

//DomainSize[i] – размер расчетной области вдоль направления i;i=0,1, 2 (OX, OY, OZ)

//QnCell[i] – количество ячеек,на которые разбивается расчетная область; i=0,1,2

//MRadCutTot= Rcut + d; Rcut – радиусобрезания,d – толщина скин-слоя;

intMakeTable()

{

QnInTab = 0; // количество элементов массива ячеек

intx,y, z;

 

for(inti=0; i < 3; i++)

//вычисление размера ячейки

CellSize[0] = DomainSize[0]/QnCell[0];

for(inti=0; i < 3; i++)

//вычисление радиуса обрезания в единицах размера ячейки

MRadCutTot_in_cell[i] = (int)(MaxRadCutTotal/CellSize[i])+1;

//заполнение таблицы для составления списка Верле for (z=-MRadCutTot_in_cell[2]; z<=MRadCutTot_in_cell[2]; z++)

for (y=-MRadCutTot_in_cell[1]; y<=MRadCutTot_in_cell[1]; y++)

for (x=-MRadCutTot_in_cell[0]; x<=MRadCutTot_in_cell[0]; x++)

{

QnInTab++;

table[QnInTab][0]=x;

table[QnInTab][1]=y;

table[QnInTab][2]=z;

}

cout<< \t Building table....OK \n;\\вывод сообщенияоб успешном построении таблицы return 0;

}

Алгоритм 1 - Модуль программы, отвечающий за разбиение пространства на ячейки при построения списка Верле

Ниже приводится код модуля программы для построения списка Верле

(Алгоритм 2).

68

void InterMassiveBuilding()

{

/* проверка необходимости вызова функции MakeTable() из-за изменения размеров расчетной области */

//обнуление элементов массивов

//регистрация атомов по ячейкам

//addX,addY, addZ – координаты соседней ячейки относительно текущей

//с– номер ячейки для текущего атома,nc– номер ячейки для соседнего атома

//p,d2– вспомогательные

intaddX,addY,addZ, p,__break=0, c, nc; double d2;

// определение режимов OpenMP и переход кпараллельной части кода omp_set_num_threads(NumOfThreads);

#pragma omp parallel for private(k,addX,addY,addZ, __break,d2, c, nc) for (inti=0;i <QnAt;i++) // циклперебора по номерам атомов

{

/* запоминание текущих координат атомов для определения момента последующего перестроения списка */

intr[3];

for (intm = 0; m < 3; m++) CoordRebuild[i][m] = coordinate[i][m];

/* определение номера ячейки для текущего атома for (intm = 0; m < 3; m++)

r[m] = (int)(coordinate[i][m]/CellSize[m]); c=AtCell(r[m]);

Алгоритм 2 - Модуль построения списка Верле. Продолжение на

следующей странице

69

// циклперебора по ячейкам пространства в области расположения i-го атома for(intnum=1; num <= QnInTab; num++)

addX=cx+table[num][0];

addY=cy+table[num][1];

addZ=cz+table[num][2];

// проверка граничных условий

// nc– номер соседней ячейки

nc= QnCell[0]*QnCell[1]*addZ + QnCell[0]*addY+ addX; // текущий атом – i,атом изсоседней ячейки - j while (j!=0)

{

j = CellFun(c,nc); d2=d2fun(i,j);

if (d2 < MaxRadCutTotal2)

{

NeighbQn[i]++;p=NeighbQn[i]; // порядковый номерсоседа

At_Neighb[i][p] = k;// заполнение списка Верле

}

}

}///i<=QnAt// конец параллельной части кода

// Сообщение об успешном построении списка Верле cout<< \t Building Verletlist....OK \n;

return;

}

Алгоритм 2 - Модуль построения списка Верле

70

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

2.2.3.3. Построение параллельных модулей с применением технологии

OpenMP

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

времени работы программы уходит на расчет сил, действующих на атомы,

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

Как следствие, возникает необходимость модифицирования именно этих функций.

Для ускорения выполнения данных функций было рассмотрено применение центрального многоядерного процессора CPU. Инструментом для создания многопоточного приложения выбрана свободно распространяемая технология OpenMP (open multiprocessing) [145]. В

настоящее время технология OpenMP является основным средством программирования для компьютеров с общей памятью [146]. Методику

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]