Алгоритмик не пробегал?

Сообщение №5718 от *БИОМАССА* 08 октября 2001 г. 12:08
Тема: Алгоритмик не пробегал?

Приветствую!
Обращаюсь к Господам Физикам и примкнувшим к ним Программерам. Есть необходимость прямого моделирования
хаотического движения "шариков" с соударениями между
собой и стенками "сосуда". Пусть, для простоты, двумерный
случай. Число "шариков" - по возможностям "пентюха III".
Взаимодействия - абсолютно упругие.
Есть ли где готовый алгоритмик? Буду очень признателен.
Пожалуйста, не предлагайте решений из 3D-программ. Мне
нужен сам алгоритм.
Заранее весьма и весьма благодарен!


Отклики на это сообщение:

> Приветствую!
> Обращаюсь к Господам Физикам и примкнувшим к ним Программерам. Есть необходимость прямого моделирования
> хаотического движения "шариков" с соударениями между
> собой и стенками "сосуда". Пусть, для простоты, двумерный
> случай. Число "шариков" - по возможностям "пентюха III".
> Взаимодействия - абсолютно упругие.
> Есть ли где готовый алгоритмик? Буду очень признателен.
> Пожалуйста, не предлагайте решений из 3D-программ. Мне
> нужен сам алгоритм.
> Заранее весьма и весьма благодарен!

У меня гос в свое время как раз был на эту тему - я моделировал газ из малого числа молекул в круглом или квадратном бильярде и смотрел как распределение Гиббса превращается в распределение Максвелла. Занятно было.

Идея была весьа простой: для заданого ансамбля - т.е. координат и скоростей - вычислить время ближайшего соударенияЮ, между любымы двумя шариками. Это время дается решением тривиального квадратного уравнения, зависящего от координат и скоростей. Определишь время - проитнегрируешь до него, поменяешь скорости - и тд.

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

Так что алгоритм выглядит так:

Для каждой пары вычислить время соударения
Заполнить массив времен и соответствующий индекс
while (true)
{
Отсортировать индекс по времени
Взять минимальное время
Проитнегрировать координаты
Вычесть минимальное время из всех времен
Обновить скорости соударившихся шаров
Пересчитать времена будущих соударений каждого шара из соударившейся пары с каждым другим шаром в ансамбле
Добавить данные времена в массив
}

За исключением вырожденных случаев, вероятность тройным и более-арных соударенийй мала и ей можно пренебречь.


> У меня гос в свое время как раз был на эту тему - я моделировал газ из малого числа молекул в круглом или квадратном бильярде и смотрел как распределение Гиббса превращается в распределение Максвелла. Занятно было.

Мог бы ты коротко сформулировать отличие распределения Гиббса от распределения Максвелла.


> Мог бы ты коротко сформулировать отличие распределения Гиббса от распределения Максвелла.

Я на втором курсе думал, что первое - частный случай второго.


> > Мог бы ты коротко сформулировать отличие распределения Гиббса от распределения Максвелла.

> Я на втором курсе думал, что первое - частный случай второго.

Второе - микроканоническое, первое - макроскопическое. Второе - не частный, а предельный случай первого.
Это было где-то в 5м томе.


> > > Мог бы ты коротко сформулировать отличие распределения Гиббса от распределения Максвелла.

> > Я на втором курсе думал, что первое - частный случай второго.

> Второе - микроканоническое, первое - макроскопическое.
> Второе - не частный, а предельный случай первого.
> Это было где-то в 5м томе.

Ne ponyal. Raspredelenie Gibbsa eto i est' mikrocanonicheskoe raspredelenie
w_n = 1/Z exp(-E_n/T).
Esli est' svobodnye chastitsy H = -p^2/2m budet E ~ mv^2/2,
w(v) ~ exp(-mv^2/T). A esli prointegrirovat' po telesnomu uglu (prosto domnozhit' na 4pi v^2) to poluchitsa raspredelenie dlya modulya skorosti
w(!v!) ~ v^2 exp(-mv^2/2),
kotoroe nazyvaetsa raspredeleniem Maxwella. Konechno po doroge ty perehodish ot kvantovyh chastits k klassicheskim - nado ispol'zovat' pravilo Bora-Zommerfelda i ne zabyt' pro statistiku chastits (v nizhnom meste podelit' na N!).


> > > > Мог бы ты коротко сформулировать отличие распределения Гиббса от распределения Максвелла.

> > > Я на втором курсе думал, что первое - частный случай второго.

> > Второе - микроканоническое, первое - макроскопическое.
> > Второе - не частный, а предельный случай первого.
> > Это было где-то в 5м томе.

> Ne ponyal. Raspredelenie Gibbsa eto i est' mikrocanonicheskoe raspredelenie
> w_n = 1/Z exp(-E_n/T).
> Esli est' svobodnye chastitsy H = -p^2/2m budet E ~ mv^2/2,
> w(v) ~ exp(-mv^2/T). A esli prointegrirovat' po telesnomu uglu (prosto domnozhit' na 4pi v^2) to poluchitsa raspredelenie dlya modulya skorosti
> w(!v!) ~ v^2 exp(-mv^2/2),
> kotoroe nazyvaetsa raspredeleniem Maxwella. Konechno po doroge ty perehodish ot kvantovyh chastits k klassicheskim - nado ispol'zovat' pravilo Bora-Zommerfelda i ne zabyt' pro statistiku chastits (v nizhnom meste podelit' na N!).

Пардон, написанное мною в последнем посте верно с точностью до наоборот. Именно Гиббс- это микроканоническое, собственно как у меня и было написано в более раннем посте.

Только если количество частиц мало, то распределение Гиббса по скоростям (точнее, квадратам скоростей) записывается через дельта - функции. Полученное распределение можно проинтегрировать по пространству и получить функцию распределения для модуля скорости, явно зависящую от полного количества частиц. Эта функция в пределе переходит в Максвела.

Эта процедура работает даже без привлечения квантов.


Физика в анимациях - Купить диск - Тесты по физике - Графики on-line

Реклама:
Rambler's Top100