Жидкость
Описание
Гидродинамика сглаженных частиц (ГСЧ) — это один из распространенных методов моделирования жидкостей и газов. Он отличается простотой программирования и понимания процесса в отличие от моделирования на сетке. Этот метод был впервые предложен для моделирования астрофизических явлений, но сейчас используется также для моделирования жидкостей, газов и процессов деформации в твердых телах.
При моделировании ГСЧ жидкость представляется набором частиц, каждая из которых обладает набором физических характеристик, как-то: положение , скорость , масса . По этим значениям для частиц восстанавливается значение физических величин во всех точках простанства. Для частиц определяется длина сглаживания , на расстоянии которой свойства частиц «сглаживаются».
Вклад каждой частицы в значение физической величины в точке определяется так называемой функцей ядра . Чаще всего в качестве функции ядра используются Гауссова функция и полиномиальные сплайны. Значения последних равны нулю для частиц, расположенных дальше, чем на от точки . Это позволяет эффективнее расчитывать модель, игнорируя ничтожно малый вклад далёких частиц.
Любая физическая величина в точке может быть рассчитана по следующей формуле:
где — значение величины в точке , — плотность частиц в точке . Например, плотность может быть вычислена следующим образом:
Для расчёта движения частиц в ГСЧ моделируются силы давления, вязкости и поверхностного натяжения.
Давление для частицы расчитывается исходя из её плотности:
где — это плотность окружающей среды, а — коэффициент жесткости (сжимаемости). Этот параметр необязателен, но позволяет точнее настроить систему. Сила давления расчитывается по следующей формуле:
Вязкость — это эффект, который возникает при «трении» слоёв жидкость друг о друга. Сила вязкости зависит от скоростей соседних частиц и вычисляется по формуле:
где — коэффициент вязкости.
Сила поверхностного натяжения расчитывается следующим образом:
где — коэффициент поверхностного натяжения.
Для различных величин могут использоваться различные функции ядра, наиболее точно описывающие вклад соседних частиц. Для большинства величин достаточно хорошо подходит функция :
Тем не менее, для лучшего эффекта несжимаемой жидкости при расчёте плотности лучше воспользоваться специальной функцией ядра:
Таким образом, моделирование заключается в пошаговой обработке системы частиц. Каждый шаг включает в себя для каждой частицы:
- нахождение соседних частиц;
- вычисление плотности;
- вычисление давления;
- расчёт сил: давление, вязкость и поверхностное натяжение;
- добавление гравитации и расчёт ускорения;
- пересчет скорости и положения;
- проверку ограничений (стенки);
- отрисовку.
Минимальные требования (базовая часть)
Базовая реализация проекта, в которой должны разбираться все участники, должна содержать:
- визуализацию и моделирование заданной сцены с жидкостью;
- загрузку начального состояния сцены из файла.
Расширенный интерфейс (индивидуальная часть)
Расширенный интерфейс должен добавлять хотя бы 2 различные возможности к базовому интерфейсу. Ниже перечислены возможные варианты расширения интерфейса, однако этим списком они не ограничены:
- меню выбора сцены;
- меню выбора способа моделирования (различные ядровые функции);
- редактор сцены;
- настройки свойств жидкости;
- управление моделированием:
- пауза/продолжение;
- ускорение/замедление;
- перемотка;
- интерфейс сохранения/загрузки текущего состояния сцены;
- отображение поверхности жидкости;
- и т.д.
Расширенные возможности моделирования (индивидуальная часть)
Расширенное моделирование должно добавлять хотя бы 2 различные возможности к базовому моделированию жидкости:
- оптимизация расчёта:
- быстрое нахождение соседних частиц;
- автоматически подстраиваемая под каждую частицу длина сглаживания (чтобы в её окрестности всегда находилось примерно одно и то же кол-во частиц);
- многофазные жидкости (разнородные частицы, вязкость и поверхностное натяжение действует только между частицами одного типа);
- взаимодействие с движущимися объектами (мяч, пропеллер и т.п.);
- и т.д.
Работа с базой данных (индивидуальная часть)
Модуль для работы с базой данных должен предоставлять хотя бы 2 различных возможности:
- база сцен;
- база жидкостей и других объектов сцены;
- и т.д.