Списки ячеек

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

Алгоритм

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

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

В своей самой простой форме несвязанные взаимодействия для предельного расстояния вычисляются следующим образом: г с {\displaystyle r_{c}}

для всех соседних пар клеток делают ( С α , С β ) {\displaystyle (C_{\alpha },C_{\beta })}
для всех делают p α C α {\displaystyle p_{\alpha }\in C_{\alpha }}
для всех делают p β C β {\displaystyle p_{\beta }\in C_{\beta }}
r 2 = x [ p α ] x [ p β ] 2 2 {\displaystyle r^{2}=\|\mathbf {x} [p_{\alpha }]-\mathbf {x} [p_{\beta }]\|_{2}^{2}}
если тогда r 2 r c 2 {\displaystyle r^{2}\leq r_{c}^{2}}
Вычислите взаимодействие между и . p α {\displaystyle p_{\alpha }} p β {\displaystyle p_{\beta }}
конец, если
конец для
конец для
конец для

Поскольку длина ячейки составляет по крайней мере одну во всех измерениях, ни одна частица, находящаяся друг в друге, не может быть пропущена. r c {\displaystyle r_{c}} r c {\displaystyle r_{c}}

При моделировании с частицами с однородной плотностью частиц количество ячеек пропорционально и обратно пропорционально радиусу отсечения (т. е. если увеличивается, то увеличивается и количество ячеек). Следовательно, среднее количество частиц на ячейку не зависит от общего количества частиц. Стоимость взаимодействия двух ячеек составляет . Количество пар ячеек пропорционально количеству ячеек, которое, в свою очередь, пропорционально количеству частиц . Общая стоимость нахождения всех попарных расстояний в пределах заданного отсечения составляет , что значительно лучше, чем наивное вычисление попарных расстояний. N {\displaystyle N} m {\displaystyle m} N {\displaystyle N} N {\displaystyle N} c ¯ = N / m {\displaystyle {\overline {c}}=N/m} O ( c ¯ 2 ) {\displaystyle {\mathcal {O}}({\overline {c}}^{2})} N {\displaystyle N} O ( N c ) O ( N ) {\displaystyle {\mathcal {O}}(Nc)\in {\mathcal {O}}(N)} O ( N 2 ) {\displaystyle {\mathcal {O}}(N^{2})}

Периодические граничные условия

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

Клетки-призраки

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

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

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

Периодическое обертывание

Вместо создания фантомных ячеек, пары ячеек, которые взаимодействуют через периодическую границу, могут также использовать периодический вектор коррекции . Этот вектор, который может быть сохранен или вычислен для каждой пары ячеек , содержит коррекцию, которую необходимо применить для «обертывания» одной ячейки вокруг домена, чтобы она соседствовала с другой. Попарное расстояние между двумя частицами и затем вычисляется как q α β {\displaystyle \mathbf {q} _{\alpha \beta }} ( C α , C β ) {\displaystyle (C_{\alpha },C_{\beta })} p α C α {\displaystyle p_{\alpha }\in C_{\alpha }} p β C β {\displaystyle p_{\beta }\in C_{\beta }}

r 2 = x [ p α ] x [ p β ] q α β 2 2 {\displaystyle r^{2}=\|\mathbf {x} [p_{\alpha }]-\mathbf {x} [p_{\beta }]-\mathbf {q} _{\alpha \beta }\|_{2}^{2}} .

Этот подход, хотя и более эффективен, чем использование фиктивных ячеек, менее прост в реализации (необходимо идентифицировать пары ячеек по периодическим границам, а вектор необходимо вычислить/сохранить). q α β {\displaystyle \mathbf {q} _{\alpha \beta }}

Улучшения

Несмотря на снижение вычислительных затрат на поиск всех пар в пределах заданного предельного расстояния от до , алгоритм списка ячеек, описанный выше, все еще имеет некоторые недостатки. O ( N 2 ) {\displaystyle {\mathcal {O}}(N^{2})} O ( N ) {\displaystyle {\mathcal {O}}(N)}

Рассмотрим вычислительную ячейку в трех измерениях с длиной ребра, равной радиусу отсечения . Вычисляется попарное расстояние между всеми частицами в ячейке и в одной из соседних ячеек. У ячейки 26 соседей: 6 имеют общую грань, 12 имеют общее ребро и 8 имеют общий угол. Из всех вычисленных попарных расстояний только около 16% будут фактически меньше или равны . Другими словами, 84% всех вычислений попарных расстояний являются ложными. r c {\displaystyle r_{c}} r c {\displaystyle r_{c}}

Одним из способов преодоления этой неэффективности является разбиение домена на ячейки с длиной ребра меньше . Тогда парные взаимодействия вычисляются не только между соседними ячейками, но и между всеми ячейками внутри друг друга (впервые предложено в [1] и реализовано и проанализировано в [2] [3] и [4] ). Этот подход может быть доведен до предела, при котором каждая ячейка содержит не более одной частицы, тем самым уменьшая количество ложных парных оценок расстояния до нуля. Однако этот выигрыш в эффективности быстро компенсируется количеством ячеек , которые необходимо проверить для каждого взаимодействия с ячейкой , которое, например, в трех измерениях, растет кубически с обратной величиной длины ребра ячейки. Однако установка длины ребра в , уже уменьшает количество ложных оценок расстояния до 63%. r c {\displaystyle r_{c}} r c {\displaystyle r_{c}} C β {\displaystyle C_{\beta }} C α {\displaystyle C_{\alpha }} r c / 2 {\displaystyle r_{c}/2}

Другой подход описан и протестирован в Гонне, [5] , в котором частицы сначала сортируются вдоль оси, соединяющей центры ячеек. Этот подход генерирует только около 40% ложных парных вычислений расстояния, но несет дополнительные затраты из-за сортировки частиц.

Смотрите также

Ссылки

  1. ^ Аллен, MP; DJ Tildesley (1987). Компьютерное моделирование жидкостей . Оксфорд: Clarendon Press.
  2. ^ Мэттсон, В.; Б. М. Райс (1999). «Расчеты ближайших соседей с использованием модифицированного метода списка связанных ячеек». Computer Physics Communications . 119 (2–3): 135. Bibcode : 1999CoPhC.119..135M. doi : 10.1016/S0010-4655(98)00203-3.
  3. ^ Яо, З.; Ван, Дж.-С.; Лю, Г.-Р.; Ченг, М. (2004). «Улучшенный алгоритм списка соседей в молекулярном моделировании с использованием метода разложения ячеек и сортировки данных». Computer Physics Communications . 161 (1–2): 27–35. arXiv : physics/0311055 . Bibcode : 2004CoPhC.161...27Y. doi : 10.1016/j.cpc.2004.04.004. S2CID  7686860.
  4. ^ Хайнц, TN; Хюненбергер, PH (2004). «Быстрый алгоритм построения парного списка для молекулярного моделирования при периодических граничных условиях». Журнал вычислительной химии . 25 (12): 1474–86. doi :10.1002/jcc.20071. PMID  15224391. S2CID  10464744.
  5. ^ Гонне, Педро (2007). «Простой алгоритм ускорения вычисления не связанных взаимодействий в моделировании молекулярной динамики на основе клеток». Журнал вычислительной химии . 28 (2): 570–573. doi :10.1002/jcc.20563. PMID  17183605. S2CID  31993082.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Cell_lists&oldid=1117704247"