Случайно инициализирующий ансамбль частиц в «игрушечной» компьютерной модели

Я программирую "игрушечную" модель и хочу инициализировать ( позиции , импульсы ) ансамбля частиц в трехмерном пространстве с использованием однородного (псевдо) генератора случайных чисел. Но я немного растерялся: предположим, ансамбль характеризуется макроскопической термодинамической температурой Т . Тогда как вы используете равномерный rng для реалистичного (достаточно реалистичного) распределения кинетической энергии частиц, которые воспроизводят соответствующую статистическую сумму?

Кроме того, предположим, что ансамбль ограничен конечной рамкой. Я намеревался просто равномерно распределить начальные позиции случайным образом в ( Икс , у , г ) . Но влияют ли на это границы ящика или нет? Должна ли (средняя) числовая плотность частиц зависеть от расстояния от стен или как? И то же самое для направления импульса, т. Е. Я намеревался использовать https://math.stackexchange.com/questions/44689/ для равномерного распределения начальных направлений в каждом телесном угле. Насколько это (не)реалистично и как правильно учитывать границу поля?

Действительно интересный вопрос - интуиция подсказывает, что вы хотели бы использовать нормальное распределение для импульсов, но не мое поле, и эй, интуиция...
Будет ли вычислительная наука лучшим местом для ответа на этот вопрос?
@EmilioPisanty Может быть, поскольку таких моделей должно быть много, много, много, и любой, кто знаком с ними, предположительно может ответить на вопрос. Я пробовал гуглить, но, как ни странно, не смог найти существующие модели, чей код, документация ответили на него. Таким образом, с точки зрения «основных принципов», я думаю, что этот форум был бы более подходящим.

Ответы (2)

Как инициализировать скорости?

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

п ( в ) "=" ( 2 π м к Б Т ) 3 / 2 опыт ( м в 2 2 к Б Т )

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

Как инициализировать позиции?

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

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

Спасибо, лимон (это твист или ломтик? :). Я пытался гуглить, но не смог составить запрос, который выдал бы ваше более четкое объяснение. Конечно, у меня была сама функция разбиения, но я как-то не понял, насколько просто ее применить.

Общее правило состоит в том, что распределение в фазовом пространстве взвешивается е Е / к Т где Е это энергия.

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

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

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

Однако выбор случайного угла немного запутан; более простой способ - отметить, что е п 2 факторизует как

е п 2 "=" е п Икс 2 е п у 2 е п г 2
поэтому вы можете просто выбрать каждую составляющую импульса независимо, как гауссиан. Опять же, поскольку кинетическая энергия не зависит от положения, вам не нужно делать никаких корректировок для «нахождения рядом со стеной».

Спасибо, кнжоу. Я попытался «проверить» оба ответа, но se просто снимает отметку с одного, когда я проверяю другой. Да, почти идеальный газ на данный момент, хотя я подумал о добавлении взаимодействия, подобного Ван-дер-Ваальсу, и, возможно, опробую его для «rev 2.0».