Списки ячеек
Списки ячеек (также иногда называемые списками ячеек ) — это структуры данных в молекулярно-динамическом моделировании, предназначенные для поиска всех пар атомов в пределах заданного предельного расстояния друг от друга. Эти пары необходимы для расчета короткодействующих несвязанных взаимодействий в системе, таких как силы Ван-дер-Ваальса или ближнедействующей части электростатического взаимодействия при использовании суммирования Эвальда .
Алгоритм
[ редактировать ]Списки ячеек подразделяют область моделирования на ячейки с длиной ребра, большей или равной радиусу отсечки вычисляемого взаимодействия. Частицы сортируются по этим ячейкам, и взаимодействия вычисляются между частицами в одной и той же или соседних ячейках.
В своей самой базовой форме несвязанные взаимодействия на предельном расстоянии рассчитываются следующим образом:
- для всех соседних пар ячеек делать
- для всех делать
- для всех делать
- если затем
- Вычислить взаимодействие между и .
- конец, если
- конец для
- для всех делать
- конец для
- для всех делать
- конец для
Поскольку длина ячейки не менее во всех измерениях, внутри нет частиц друг друга можно пропустить.
Учитывая симуляцию с частицы с однородной плотностью частиц, числом ячеек пропорционально и обратно пропорциональна радиусу среза (т.е. если увеличивается, увеличивается и количество клеток). Среднее количество частиц на ячейку поэтому не зависит от общего числа частиц. Стоимость взаимодействия двух ячеек находится в . Количество пар ячеек пропорционально количеству ячеек, которое снова пропорционально количеству частиц. . Общая стоимость поиска всех парных расстояний в пределах заданного отсечения равна , что значительно лучше, чем вычисление попарно расстояния наивно.
Периодические граничные условия
[ редактировать ]В большинстве симуляций периодические граничные условия используются, чтобы избежать наложения искусственных граничных условий. Используя списки ячеек, эти границы можно реализовать двумя способами.
Клетки-призраки
[ редактировать ]В подходе с призрачными ячейками блок моделирования оборачивается дополнительным слоем ячеек. Эти ячейки содержат периодически упакованные копии соответствующих ячеек моделирования внутри домена.
Хотя данные (а также, как правило, вычислительные затраты) удваиваются для взаимодействий через периодическую границу, этот подход имеет то преимущество, что его легко реализовать и очень легко распараллелить, поскольку ячейки будут взаимодействовать только со своими географическими соседями.
Периодическая упаковка
[ редактировать ]Вместо создания призрачных ячеек пары ячеек, которые взаимодействуют через периодическую границу, также могут использовать вектор периодической коррекции. . Этот вектор, который можно сохранить или вычислить для каждой пары ячеек. , содержит поправку, которую необходимо применить, чтобы «обернуть» одну ячейку вокруг домена так, чтобы она соседствовала с другой. Попарное расстояние между двумя частицами и затем вычисляется как
- .
Этот подход, хотя и более эффективен, чем использование ячеек-фантомов, менее прост в реализации (пары ячеек необходимо идентифицировать по периодическим границам, а вектор необходимо вычислить/сохранить).
Улучшения
[ редактировать ]Несмотря на сокращение вычислительных затрат на поиск всех пар в пределах заданного расстояния от к , алгоритм списка ячеек, указанный выше, все еще имеет некоторую неэффективность.
Рассмотрим расчетную ячейку в трех измерениях с длиной ребра, равной радиусу среза. . Вычисляется попарное расстояние между всеми частицами в ячейке и в одной из соседних ячеек. У ячейки 26 соседей: 6 имеют общую грань, 12 имеют общий край и 8 имеют общий угол. Из всех вычисленных парных расстояний только около 16% на самом деле будут меньше или равны . Другими словами, 84% всех вычислений парных расстояний являются ложными.
Один из способов преодоления этой неэффективности — разбить область на ячейки с длиной ребра меньше . Тогда парные взаимодействия вычисляются не только между соседними ячейками, но и между всеми ячейками внутри. друг друга (впервые предложено в [1] и реализованы и проанализированы в [2] [3] и [4] ). Этот подход может быть доведен до предела, когда каждая ячейка содержит не более одной частицы, что снижает количество ложных оценок парных расстояний до нуля. Однако этот выигрыш в эффективности быстро компенсируется количеством ячеек. которые необходимо проверять при каждом взаимодействии с клеткой , который, например, в трех измерениях, растет кубически пропорционально длине ребра ячейки. Установка длины края , однако уже снижает количество ложных оценок расстояния до 63%.
Другой подход изложен и протестирован в Гонне, [5] при котором частицы сначала сортируются вдоль оси, соединяющей центры ячеек. Этот подход генерирует только около 40% ложных вычислений парных расстояний, но требует дополнительных затрат из-за сортировки частиц.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Аллен, член парламента; Диджей Тилдесли (1987). Компьютерное моделирование жидкостей . Оксфорд: Кларендон Пресс.
- ^ Мэттсон, В.; Б.М. Райс (1999). «Расчеты ближайших соседей с использованием модифицированного метода связанного списка ячеек». Компьютерная физика. Коммуникации . 119 (2–3): 135. Бибкод : 1999CoPhC.119..135M . дои : 10.1016/S0010-4655(98)00203-3 .
- ^ Яо, З.; Ван, Ж.-С.; Лю, Г.-Р.; Ченг, М. (2004). «Улучшенный алгоритм списка соседей в молекулярном моделировании с использованием метода разложения ячеек и сортировки данных». Компьютерная физика. Коммуникации . 161 (1–2): 27–35. arXiv : физика/0311055 . Бибкод : 2004CoPhC.161...27Y . дои : 10.1016/j.cpc.2004.04.004 . S2CID 7686860 .
- ^ Хайнц, Теннесси; Хюненбергер, PH (2004). «Алгоритм быстрого построения парных списков для молекулярного моделирования в периодических граничных условиях». Журнал вычислительной химии . 25 (12): 1474–86. дои : 10.1002/jcc.20071 . ПМИД 15224391 . S2CID 10464744 .
- ^ Гонне, Педро (2007). «Простой алгоритм для ускорения расчета несвязывающих взаимодействий в клеточном моделировании молекулярной динамики». Журнал вычислительной химии . 28 (2): 570–573. дои : 10.1002/jcc.20563 . ПМИД 17183605 . S2CID 31993082 .