Прошлые домены не функционирует! Используйте адрес
ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
Хочу сделать что-то отдаленное похожее на протопланетный диск. Чтобы множество частичек притягивались друг к другу за счет гравитации и формировали "тела" разных масс, вращающихся по своим орбитам. Пока ничего отдаленно похожего не это нет, может здесь мне и помогут.
Я хочу, чтобы частички могли слипаться и удерживаться. Для этого решил ввести "межмолекулярные" взаимодействия. В итоге между частичками есть:
1) Гравитационная сила, пропорциональная G/r (вроде так она должна выглядеть в плоском мире). Потенциал - Gln(r).
2) Сила, сформированная потенциалом Морзе. Сам потенциал имеет вид (1-exp(-a(r-r0))^2. Сила выглядит немного посложнее.
Какие сейчас есть проблемы:
1) Не факт, что потенциал Морзе оптимален в моем случае. Надо подумать, чем его можно заменить.
1) Надо как-то подобрать параметры G, a и r0, чтобы все это выглядело нормально и задуманный протопланетный диск мог при этих параметрах эволюционировать.
2) Надо подумать о способе интегрирования. Сейчас у меня простой алгоритм Рунге-Кутты, который я попробовал сделать симплектным для сохранения энергии в системе.
3) С интегратором связана и другая проблема. При не очень маленьких шагах dt одна частица может сильно налететь на другую, в результате чего на следующем шагу между ними появляется огромная сила оттакливания. Они отскакивают друг от друга в разные стороны с большой скоростью - никаким законом сохранения энергии здесь и не пахнет. По этой самой причине я отказался от потенциала Леннарда-Джонса - там он еще круче, поэтому это проблема выражена ярче.
4) Скопления из трех и больше частичек нестабильны и периодически выкидывают кого-то из себя. По-моему, это не очень хорошо. Видимо, надо как-то убирать из них энергию, смоделировав испускание излучения с колебательных/электронных уровней молекул.
5) Надо подумать об оптимизации. Сейчас вся оптимизация заканчивается на обрубании межмолекулярных сил при относительно большом расстоянии. В принципе я думаю поделать плоскость на квадраты, в каждом квадрате считать межмолекулярные силы между частицами в этом и соседних квадратах; а гравитацию считать только между квадратами.
Может, еще по ходу дела в голову придут другие проблемы и задачи.
На видео - частички на небольшом друг от друга расстоянии.
Сам код находится здесь: https://github.com/grogno/Proto/blob/master/Proto.py
Требуется pygame и numba