Как я могу включить переменное число частиц в моделирование броуновской динамики?

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

Кто-нибудь знает хороший способ сделать это? Каковы некоторые распространенные ловушки?


Основой моего моделирования является уравнение Ланжевена с избыточным демпфированием.

г Икс г т "=" Д к Б Т ( Ф я н т + Ф с ) .
В моем случае у меня анизотропная диффузия, поэтому у меня в основном есть уравнение Ланжевена для каждой степени свободы каждой частицы; 2 направленных и 1 вращательный. Случайное движение частиц включено в стохастическую силу, создаваемую стандартным винеровским процессом. Точечные пятна, прикрепленные к частицам, опосредуют взаимодействия притяжения, тогда как отталкивание описывается стандартным потенциалом мягких сфер. Система поддерживается при постоянной температуре (включенной в моменты хаотического движения). Меня интересуют самособирающиеся структуры в конце моделирования, т.е. кластеры разных размеров.

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

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

Я бы предпочел иметь теоретическую поддержку моей идеи, такую ​​как, например, великие канонические симуляции Монте-Карло.

Вы задаете вопрос по программированию? Или вопрос по физике?
На самом деле сочетание того и другого. Я знаю, что существуют алгоритмы больших канонических ансамблей для подходов Монте-Карло. Я ищу что-то подобное для моделирования BD.
Я просто думаю вслух. Если вы до сих пор работали с площадью квадрата или прямоугольника, вы могли бы попробовать это с тором: молекула, проходящая через правый край, снова появится на левом краю. То же самое касается верхнего и нижнего края. Затем вы можете вырезать меньший прямоугольник из поверхности тора, и вы получите переменное количество частиц.
Хочу поблагодарить Вас за термин "грандиозный канонический Моне-Карло". Поиски этого заставили меня натолкнуться на некоторые интересные вещи, о которых я должен узнать. Вы меня чему-то научили своим вопросом.
@EricDuminil Я использую периодические граничные условия, применяемые к прямоугольной поверхности, разве это не эквивалентно тору?

Ответы (2)

Введение рождения и уничтожения частиц в броуновскую динамику будет связано с теми же проблемами, что и в молекулярной динамике. Вы можете использовать стандартные великие канонические движения Монте-Карло (GCMC) в своей динамической схеме. Практическая опасность состоит в том, что, приняв ход, последствия для динамики будут иногда драматичны: очень большие силы между частицами, а значит, и очень большие смещения. Чтобы избежать этого, были придуманы схемы постепенного добавления частиц или даже введения в лагранжиан непрерывного параметра, который контролирует появление дополнительных частиц. В Agarwal et al, New J Phys , 17 , 083042 (2015)., который находится в открытом доступе, они рассматривают некоторые из этих методов. Однако, как они отмечают, такие подходы не получили широкого распространения и несколько неудобны. Думаю, то же самое можно сказать и о подходе, предложенном Агарвалом. Я бы не рекомендовал идти по этому пути, но, по крайней мере, вы можете рассмотреть эти альтернативы с подходящей адаптацией от молекулярной динамики к броуновской динамике.

Вот еще одна возможность. Используйте Монте-Карло вместо броуновской динамики. Шкала времени несколько вымышлена, но частицы по-прежнему будут реалистично рассеиваться, и, возможно, вы в любом случае отказываетесь от полностью реалистичной динамики, добавляя движения GCMC, которые позволяют частицам появляться и исчезать.

Есть промежуточное решение. Броуновская динамика без инерции использует алгоритм

р ( т + дельта т ) "=" р + Д к Т ф дельта т + 2 Д дельта т г
где Д - коэффициент диффузии, Т температура, ф сила, действующая на частицу (частицы), и г набор независимых нормализованных гауссовских случайных чисел. Можно показать, что это (почти) эквивалентно "Smart Monte Carlo" (SMC), возвращаясь к старой статье Rossky et al., J Chem Phys , 69 , 4628 (1978) . Существенное отличие состоит в том, что SMC применяет стадию принятия/отклонения к вышеуказанному шагу, основанному на несколько сложной формуле, включающей силы в начале и в конце. Это гарантирует сэмплирование правильного ансамбля и может спасти вашу симуляцию от последствий больших сил, если вы только что добавили/удалили частицы, используя обычную процедуру GCMC. Это зависит от того, готовы ли вы отказаться от (маленького, О ( дельта т 2 ) ) доля шагов продвижения.

Этот подход также может быть связан с "гибридным методом Монте-Карло" (HMC), Duane et al., Phys Lett B , 195 , 216 (1987) . Просто замените Д "=" ( к Т / 2 м ) дельта т в приведенном выше уравнении, чтобы дать

р ( т + дельта т ) "=" р + 1 2 ( дельта т 2 / м ) ф + к Т м дельта т г
Это имеет форму стандартного алгоритма (скорость Верле) для молекулярной динамики, где последний член соответствует выбору случайных скоростей в начале каждого шага из распределения Максвелла-Больцмана. В HMC вы также записываете остальную часть алгоритма скорости Верле, чтобы опережать скорости, вычислять изменение кинетической энергии на шаге, добавлять его к изменению потенциальной энергии и использовать результирующую общую энергию в приеме Метрополиса / критерий отказа. Затем скорости отбрасываются и генерируются заново в начале следующего шага. Оказывается, это то же самое, что и SMC, но проще записать. Причина малой доли отклоненных ходов, О ( дельта т 2 ) , более очевидно: полная энергия сохраняется до этого порядка.

Если ваша броуновская динамика имеет неинерционный характер, я бы порекомендовал такой подход:

  1. Вставляйте/удаляйте частицы с интервалами (между шагами продвижения по времени), используя стандартный большой канонический метод Монте-Карло.
  2. Включите решение Metropolis о принятии/отклонении шагов продвижения по времени, как описано выше, что означает, что небольшая часть ходов будет отклонена, но гарантирует, что будет выбран правильный ансамбль.

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

Большое спасибо, что нашли время ответить на мой вопрос. Я решил провести моделирование BD, чтобы иметь легкий доступ к положению каждой частицы. С BD также можно естественным образом учитывать гибкость интерфейса привязки. Ваше последнее предложение может сработать, но я думаю, что реализация (изменения в моем исходном коде) займет очень много времени. Тем не менее, вы упомянули несколько интересных вещей, и я проверяю их одну за другой.

Ваш вопрос достаточно широкий. Так что мой ответ будет довольно широким.

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

  • Внимательно ли вы записали предположения, которые будете использовать при расчетах? Может быть, такие вещи, как постоянная температура, отсутствие потока жидкости, пренебрежение гравитацией и т. д. Вы должны искать сделанный вами выбор, который влияет на то, как вы выполняете вычисления, а не тривиальные детали, которые не имеют никакого значения.
  • Уделяли ли вы должное внимание обычным приземленным вопросам качества и правильности программного обеспечения? Яда-яда, полезные имена переменных, структурированная программа, базовое тестирование, хотя бы минимальное документирование поведения программы, простота ввода, разумная организация вывода и т. д.
  • Вы правильно нормализовали свой расчет? В ваших расчетах может быть 1 миллион частиц, но в реальном эксперименте задействовано гораздо больше молекул. У вас есть разумный способ масштабировать это? Это относится к каждому аспекту вашего расчета. Как установить температуру рабочего материала? Как установить плотность? Как масштабировать подсчеты? И так далее.
  • Сохранили ли вы количества, которые должны быть сохранены? Вы хотите изменить номер частицы. Соответствует ли он физическому процессу в вашем эксперименте? Например, частицы, проходящие границу вашего эксперимента. Или у вас может быть место, куда вы вводите частицы. Возможно, вам нужно беспокоиться об энергии, общей массе или соотношении типов частиц.
  • У вас есть представление о том, как вещи, которые должны измениться, на самом деле меняются? Итак, вы вводите новые частицы и наблюдаете, как они совершают броуновское движение. Изменяет ли это каким-либо важным образом местные условия? Плотность, вязкость, температура и т.д.
  • У вас есть подсчеты, которые имеют смысл? Возможно, вы ищете плотность частиц в разных местах. Вы считаете правильные вещи и считаете их разумно?
  • У вас есть условия системы в разумных значениях? Итак, частицы движутся в броуновском движении. Есть ли у вас разумные значения скорости, с которой они двигаются? Какое среднее расстояние они проходят перед столкновением? На какой угол они двигаются? Изменение энергии при столкновении?
  • У вас есть какой-то авторитетный источник данных для проверки? Некоторыми часто используемыми источниками являются эксперименты, расчеты в какой-либо другой программе, точность которых известна, или ручные расчеты с известной точностью.