Как эффективно охладить моделируемый газ с помощью зависящего от времени потенциала?

Я пытаюсь смоделировать конденсацию сильно разбавленного газа (модельного газа, а не реального). Для простоты я ограничиваю моделирование двумя измерениями. Чтобы настроить симуляцию, я беру потенциал между частицами, например потенциал Леннарда-Джонса, добавляю силу гравитации и помещаю частицы в коробку.

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

Эволюция смоделированного газа во времени

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

Таким образом, мой вопрос: как я могу сделать охлаждение более равномерным по времени WRT и по-прежнему основанным на зависящем от времени потенциале, то есть не добавляя никаких членов трения в уравнения движения?

Это симуляция... ничто не мешает вам добавить искусственную неконсервативную силу, которая не мешает вам, даже если она нефизическая. Если вы ограничите его стеной (например, частица теряет 1% своей скорости каждый раз, когда сталкивается с левой стенкой), это не окажет никакого влияния на динамику внутри объема. Разве это не похоже на холодную стену?
@CuriousOne Я бы хотел оставить эту симуляцию с такими процессами, которые я хорошо понимаю. Если я возьму, например, вашу холодную стену, у меня сразу же возникнут вопросы, на которые я, кажется, не могу ответить, например: «Какова будет температура/теплоемкость такой стены?», «Зависит ли температура от энергии каждой частицы, которая попадает в нее? " Кроме того, я хотел бы, чтобы система имела четко определенный лагранжиан, которого у нее не будет, если я добавлю трение или стену, которую вы описываете.
Температура стенки может быть какой угодно (вы знаете полученное распределение Максвелла-Больцмана), а теплоемкость будет бесконечной, как и во всех термодинамических резервуарах. Температура стенки изначально не имеет ничего общего с температурой вашего газа, но в конце концов газ придет в равновесие. Ваша система может иметь четко определенный лагранжиан для вашего газа, но с какой стати вы хотите моделировать бесконечное число степеней свободы в тепловом резервуаре? Они имеют нулевое значение, когда резервуар имеет определенную температуру.
Хм, кажется, одна из проблем, приводящих к неэффективному охлаждению в моделировании, показанном выше, заключается в том, что охлаждаются только горизонтальные степени свободы из-за того, что стенки всегда остаются вертикальными. Их наклон должен повысить эффективность.

Ответы (2)

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

Я работал с симуляциями в Processing раньше и предполагаю, что когда частица сталкивается либо с верхней, либо с нижней стенкой, вы умножаете Y-компонент скорости на -1? Просто умножьте это на что-то вроде -0,95 или любое другое произвольное число, лежащее между -0,9 и -1 (не включая -1).

Я предполагаю, что вы правильно обрабатываете движущиеся граничные условия, так что частица, движущаяся со скоростью в удар о стену со скоростью а заводится со скоростью в + а . То есть он идеально отскакивает в системе Галилея, где стена неподвижна. Возможно, вы обрабатываете столкновения между частицами, возможно, как столкновения в стиле бильярдного шара. Это определенно ускорит термализацию системы — чтобы частицы газа потеряли кинетическую энергию, они могут просто столкнуться с другими частицами, ударившимися о стену, вместо того, чтобы непосредственно удариться о стену.

Если вы сделали и то, и другое, вам нечего делать! Как вы упомянули, очевидно, что нужно увеличить частоту столкновений. Это можно сделать, увеличив температуру, увеличив количество частиц, уменьшив размер ящика или позволив стенкам двигаться медленнее. На самом деле, повышение температуры в вычислительном отношении эквивалентно более медленному движению стенок: в конечном итоге вы увеличиваете скорость частиц, поэтому для сохранения точности вы уменьшаете свой временной шаг, и теперь частицы выглядят с той же скоростью, а стены кажутся медленнее. !

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