Я пытаюсь смоделировать конденсацию сильно разбавленного газа (модельного газа, а не реального). Для простоты я ограничиваю моделирование двумя измерениями. Чтобы настроить симуляцию, я беру потенциал между частицами, например потенциал Леннарда-Джонса, добавляю силу гравитации и помещаю частицы в коробку.
В настоящее время, чтобы охладить газ, я просто расширяю коробку с течением времени. Вот как выглядит выделение газа:
Проблема в том, что как только она станет достаточно большой, полная энергия почти перестанет уменьшаться. Это связано с тем, что частицы со временем реже сталкиваются с движущейся стенкой.
Таким образом, мой вопрос: как я могу сделать охлаждение более равномерным по времени WRT и по-прежнему основанным на зависящем от времени потенциале, то есть не добавляя никаких членов трения в уравнения движения?
Вместо расширения стен все, что вы можете сделать, это понизить «температуру» стен. Поскольку это всего лишь симуляция, вы можете просто предположить, что стенки имеют более низкую температуру, чем частицы. Делая это, когда частицы сталкиваются со стенкой, они теряют часть кинетической энергии.
Я работал с симуляциями в Processing раньше и предполагаю, что когда частица сталкивается либо с верхней, либо с нижней стенкой, вы умножаете Y-компонент скорости на -1? Просто умножьте это на что-то вроде -0,95 или любое другое произвольное число, лежащее между -0,9 и -1 (не включая -1).
Я предполагаю, что вы правильно обрабатываете движущиеся граничные условия, так что частица, движущаяся со скоростью удар о стену со скоростью заводится со скоростью . То есть он идеально отскакивает в системе Галилея, где стена неподвижна. Возможно, вы обрабатываете столкновения между частицами, возможно, как столкновения в стиле бильярдного шара. Это определенно ускорит термализацию системы — чтобы частицы газа потеряли кинетическую энергию, они могут просто столкнуться с другими частицами, ударившимися о стену, вместо того, чтобы непосредственно удариться о стену.
Если вы сделали и то, и другое, вам нечего делать! Как вы упомянули, очевидно, что нужно увеличить частоту столкновений. Это можно сделать, увеличив температуру, увеличив количество частиц, уменьшив размер ящика или позволив стенкам двигаться медленнее. На самом деле, повышение температуры в вычислительном отношении эквивалентно более медленному движению стенок: в конечном итоге вы увеличиваете скорость частиц, поэтому для сохранения точности вы уменьшаете свой временной шаг, и теперь частицы выглядят с той же скоростью, а стены кажутся медленнее. !
Наконец, вспомним, что расширение в вакуум не меняет температуры. Если у вас есть воздушный шар, содержащий газ при температуре внутри металлического ящика, содержащего вакуум, и вы лопаете воздушный шар, газ остается при температуре по мере расширения. Поведение, которое вы наблюдаете, ожидаемо для быстро движущихся стенок контейнера: температура на самом деле не меняется так сильно, как можно было бы ожидать для бесконечно медленно движущихся стенок.
CuriousOne
Руслан
CuriousOne
Руслан