Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Новиков. Магистерская диссертация.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
523.12 Кб
Скачать

3 Обзор существующих работ

Первые попытки смоделировать газ и дым в кинематографе были произведены в середине 80-х годов XX века. Одними из первых исследователей в этой области были Дж. Гарднер, который в работе [2] предложил математическую модель для моделирования и визуализации разных типов облаков, а также У. Ривз, описавший в [3] создание спецэффектов с использованием частиц. Но работах того времени исследователи даже не пытались моделировать физическую суть эффектов.

Решение системы Навье-Стокса было слишком тяжелым для компьютеров того времени. Но дело было не только в произвольности – исследователи не знали, как управлять полученной субстанцией. Активно начали развиваться подходы, представляющие дым, как систему частиц с некоторой силой влияющих друг на друга. Такой подход обладает не слишком высоким качеством, но высокой производительностью, поэтому зачастую использовался в компьютерных играх. Подобные методы развиваются до сих пор. Например, в работе [4] предлагается алгоритм моделирования дыма, когда нужна высокая производительность, но качество не так важно.

Положение дел оставалось таким вплоть до появления статьи Н. Фостера [5], содержащей детальное описание алгоритма моделирования воды на основе решения уравнений Навье-Стокса. В дальнейшем при участии Дж. Стэма была опубликована серия работ [6, 9], в которой при визуализации дыма среда также описывалась с помощью трёхмерных уравнений Навье-Стокса. Здесь жидкость и газ уже описывались, как эйлерова среда, но на некоторых этапах решения системы уравнений представлялись набором частичек. Поэтому такие алгоритмы стали называть полулагранжевыми. Алгоритм Стэма[9] до сих пор считается каноническим, и на нем основано большинство последующих работ.

Для того, чтобы моделирование дыма было детальным нужно использовать особые процедуры, восстанавливающие завихрения, потерянные при расчётах грубыми методами[6], либо производить расчёты на очень больших сетках. Тут и встают вопросы памяти и производительности.

Графические ускорители хорошо показали себя в подобных задачах. В работах [10] и [11] удалось реализовать грубое моделирование дыма в реальном времени. В работе [12] реализован алгоритм из [9] на GPU, но использованием старых технологий. Он не оптимизирован, и возможно использование только одного GPU. В работах [24] и [25] показано решение первого этапа вычислительного алгоритма – полулагранжевой адвекции – на одном и нескольких GPU соответственно. В работе [23] была проведена попытка ускорить вычисления другого этапа алгоритма – проекции – за счёт использования многосеточного решателя. В работе [19] показан общий прирост производительности при использовании многосеточных солверов. В работах [26, 27] авторы реализуют multi-GPU решатель с методом PIC для адвекции, но не используют многосеточный метод на этапе проекции.

4 Постановка задачи

В данной работе за основу взят алгоритм из [9]. Моделируемая среда рассматривается как невязкий несжимаемый газ. Данные упрощения были сделаны из соображений, что расчёты будут проводиться на грубой сетке, и, таким образом, эффект вязкости в любом случае будет утерян. А так как скорость распространения дым, а заметно меньше скорости звука, то сжимаемостью также можно пренебречь. Рассматриваемый процесс описывается следующей системой трёхмерных уравнений Эйлера:

где и p - искомые вектор скорости и давление, а – известная внешняя сила, например, описанная далее сила плавучести.

Так как плотность считается константной и, в данном случае, равной единице, то в рассматриваемой системе имеется четыре неизвестных и четыре уравнения. На внешних границах имеющей форму параллепипеда области Gext, в которой будут проводиться расчёты, заданы естественные условия, позволяющие газу беспрепятственно входить и выходить из области. На границах объектов произвольной формы, расположенных внутри области Gint наложены условия не протекания, препятствующие попаданию дыма внутрь объектов. Начальное распределение искомых величин задаётся аниматором исходя из того, что за эффект он хочет воспроизвести, и в общем случае представляется заранее известными функциями U0 и p0, которые должны быть согласованы с граничными условиями.

Данная задача является основой для моделирования различных эффектов, таких как дым, огонь, облака – любых жидких и газообразных сред. Чтобы обеспечить моделирование именно дыма, в решаемую систему необходимо добавить ещё две неизвестные скалярные величины — концентрацию c и температуру T дыма, который перемешивается и свободно распространяется вместе с основным газом. Именно эти величины в дальнейшем будут визуализироваться, в то время как газ считается бесцветным. Чтобы описать эту смесь из двух веществ, в введённую ранее систему добавляются два дополнительных уравнения адвекции, которые описывают процесс перемещения вещества в заданном поле скоростей и, как следствие, изменения его концентрации. После этого осталось дополнительно задать начальное распределение температуры и плотности дыма через также предоставленные аниматором функции:

И ввести обратную связь, чтобы тяжёлые клубы дыма опускались под действием силы тяжести, а потоки горячего воздуха восходили вверх – уже упомянутую силу Бузинеска. Для этого достаточно расписать функцию внешней силы следующим образом:

Где – сила тяжести, Tamb - температура окружающей среды, а α и β - положительные константы, определяющие интенсивность процесса распространения дыма. Решив данную задачу для отрезка времени , мы получим данные, достаточные для наложения требуемого спецэффекта.