О программе PartsLV версия 1. 6

Владимир Евгеньевич Липатов
О программе PartsLV версия 1.6

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

Моделирование происходит в объёме. 3-е измерение отображается как градация серо-зелёных оттенков частиц.

Вы можете заполнить пространство случайно разбросанными частицами (кнопка Fill). Количество частиц указать можно в таблице слева. Предыдущая суперпозиция частиц сбрасывается.

Вы можете запустить или продолжить анимацию (кнопка Run).
Вы можете остановить анимацию (кнопка Stop).

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

Для расчёта взаимодействия используется система уравнений:
da += (A – B*cos(r / T)) / r^2;
dv = dv / K + da;
x += dv;

Где:
da – вектор сил взаимодействия. Он аккумулируется по всем частицам для каждой частицы. Алгоритм порядка N^2.
A – скважность кривой взаимодействия. Принято за 1.
B – амплитуда кривой взаимодействия. Принято за 2.
r – дистанция между любой парой частиц.
T – эквивалент периода кривой взаимодействия. Это дистанция смены сил притяжения и отталкивания.
dv – вектор скорости частицы.
K – делитель скорости частицы. Он гасит инерцию для моделирования сопротивления среды.
x – вектор координат частицы.

Снизу окна программы находятся 2 бегунка для управления T (периодом смены сил) и K (делителем скорости). Они перемещаются в ограниченных диапазонах. Вы можете управлять ими даже во время процесса расчёта. Это позволяет видеть – как параметры влияют на анимацию частиц.

Программа написана на C# 2.0.
Исходный код и исполняемый файл доступны по ссылке:
https://yadi.sk/d/H8eHDStI3N5Udv
Следите за обновлением версий.

Демонстрация: https://youtu.be/sL5Xs0KGUxQ


Делитель скорости К - он же коэффициент сопротивления среды, был введён не случайно. Без него частицы просто пролетают мимо и получается броуновское движение.
Была поставлена цель - реализовать самоорганизацию частиц в подобие атомов и молекул.
Показанный результат позволяет сделать вывод о том, что в процессе самоорганизации одну из главных ролей играет сопротивление среды. А это значит, что зарождение жизни возможно только в жидкостях.

Вторым фактором самоорганизации является периодическая гармоническая функция, которая определяет смену сил притяжения и отталкивания. Это было необходимо сделать для реализации атомных и химических связей.

Подбор параметров позволяет реализовать ряд интересных конфигураций и процессов:
1. Броуновское движение,
2. Сферы,
3. Атомное ядро,
4. Выбросы протуберанцев,
5. Молекулярные соединения,
6. Спонтанные пульсирующие фейерверки,
7. Текучесть,
8. Спиральное движение, и т.д.

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

Таким образом, можно моделировать процессы атомного ядра, молекул, бактерий, звёзд и галактик. Теперь можно оценить затраты вычислительных ресурсов. Возьмём простейший микроорганизм. Это порядка 100 - 1000 частиц по каждому измерению. Получается всего от 10^6 до 10^9 частиц. Далее, мы имеем алгоритм порядка N^2. Следовательно, потребуется 10^12 – 10^18 проходов. При этом, каждый проход потребует порядка 1000 машинных тактов. Это значит, что современный процессор с тактовой частотой порядка гигагерц, может выдать картинку за 10^6 – 10^12 секунд. Это очень долго.
Можно разбить пространство на ячейки, учитывая взаимодействие частиц только внутри соседних ячеек. Это позволит существенно оптимизировать нагрузку в десятки и сотни тысяч раз. Кроме этого, можно задействовать вычислительные ресурсы нескольких видеокарт. Задача идеально распараллеливается. Предполагаю, что это позволит обрабатывать модель за приемлемое время.