Ссылка на видео с лучшим описанием и подробнейшей инструкцией по сборке
- для работы проекта необходима библиотека SFML, которую можно установить командой
sudo apt-get install libsfml-dev
- сборка происходит с помощью утилиты cmake, так что cmake должен быть установлен:
sudo apt-get install cmake
- в терминале переходим в папку (пишем
cd <путь к папке>
), в которой хотим оставить проект - пишем:
git clone git@github.com:Shulliikkk/sph-toy-star.git
cd sph-toy-star
cmake -S. -B build
-- эта команда запустит cmake и скажет ему, где расположен сам проект и в какой папке его собиратьcmake --build build
-- собираем проектbuild/SPH-STAR
-- запуск программы ("SPH-STAR" -- всего лишь исполняемый файл)
- лучшим решением будет перейти на линукс :>
Метод SPH основан на разбиении сплошной среды на дискретный набор частичек, каждая из которых имеет массу
Таким образом, влияние всех частиц на свойства другой частицы оценивается в соответствии с плотностью в точках пространства, где они находятся, и расстоянием до интересующей частицы. Математически это описывается функцией ядра
!!!Disclaimer: дальше пойдут формулки, всем слабонервным отойти от экрана O_O
Значение любой физической величины
Так, например, плотность пространства в точке нахождения частицы
Это очень важная формулка, она нам пригодится в дальнейшем.
Вернемся к нашему проекту. Пусть газо-пылевое облако (будущая звезда) состоит из
где
Свяжем плотность среды и давление через уравнение политропы:
А таже представим внешние силы как сумму гравитационной и вязкостной состовляющий (она вводится для того, чтобы рассчет мог прийти к устойчивому решению):
Более подробно о данной модели звезды можно почитать в статье Монагана-Прайса(2004).
Как уже говорилось ранее, в работе используется ядро на основе функции Гаусса, оно выглядит следующим устрашающим образом:
Также нам понадбится его производная:
Формулку для плотность пространства, в точке нахождения i-й частички мы уже с вами получили, вспомним её и улыбнемся, она имеет более простой вид:
Теперь запишем сердце нашего расчета, дискретизированное уравнение Эйлера, позволяющее вычислить движение всех частичек:
Осталась самая малость - численно проинтегрировать его, сделаем это методом Эйлера: