- •1 Обозначения и сокращения
- •Введение
- •3 Обзор существующих работ
- •4 Постановка задачи
- •5 Метод решения
- •5.1 Расщепление
- •5.2 Адвекция
- •5.3 Проекция
- •6 Выбор метода выполнения этапа проекции
- •7 Полный многосеточный метод
- •8 Реализация этапа проекции
- •8.1 Входные данные
- •8.2 Сглаживатель
- •8.3 Расчёт невязки
- •8.4 Расчёт нормы невязки
- •8.5 Операторы огрубления и пролонгации
- •8.6 Взаимодействие между несколькими gpu
- •8.7 Результаты тестирования и валидации
- •9 Результаты
- •10 Список литературы
5 Метод решения
5.1 Расщепление
Для
решения введённой ранее системы уравнений
предлагается задействовать вариацию
метода расщепления, в рамках которого
для перехода с i -ого на i + 1 временной
слой должны быть выполнены три действия.
Во-первых, исключив давление из уравнения
сохранения момента импульса, необходимо
вычислить предварительное значение
вектора скорости
:
Во-вторых, требуется обеспечить несжимаемость газа, для чего вычисляется актуальное значение давления путём решения уравнения Пуассона:
А в предварительный вектор скорости вносится соответствующая поправка:
В-третьих, необходимо найти новые значения для плотности и температуры дыма:
5.2 Адвекция
Отдельно
стоит остановиться на схеме численного
решения уравнений адвекции, которые
нужны для вычисления величин
Если для этого использовать аппроксимацию
конечной разностью, как это сделано в
выкладках выше, то не удастся обеспечить
абсолютную устойчивость метода, а
наличие данного свойства является
крайне важным в силу ограниченности
вычислительных мощностей. Поэтому в
рассматриваемом алгоритме используется
полулагранжевый подход, в рамках которого
на этапе решения уравнений адвекции —
и только на нём — жидкость представляется
набором частиц, расположенных в центрах
ячеек специальной сетки (MAC
grid,
см Рисунок 1) и обладающих соответствующими
характеристиками.
Например,
в случае температуры это означает, что
для узла с номером (I,
j,
l)
требуется вычислить величину
,
где
-
шаг по пространству. После этого
значение на следующем временном слое
будет определено как
.
Очевидно, что компоненты вектора
практически всегда будут дробными,
поэтому для вычисления искомой величины
температуры необходимо провести
интерполяцию значений из восьми ячеек
сетки, расстояние которых до узла (i −vx
, j −vy , l –vz)
не превышает
.
Если
же индексы выходят за пределы расчётной
области, то соответствующее значение
определяется исходя из граничных
условий.
Рисунок 1: Одна ячейка MAC-сетки
Важно заметить, что при переходе от этапа адвекции к этапу проекции мы будем считать, что все значение скоростей заданы на гранях, и направлению этих скоростей соответствуют орты, являющиеся нормалями граням к ячеек MAC решетки. Давление же для каждой частички нашей субстанции определенно в центрах ячеек.
5.3 Проекция
Другим этапом решения исходной задачи является этап проекции. Он является наиболее ресурсоемким во всей предложенной схеме. Этот этап численно эквивалентен решению внешней задачи Неймана для уравнения Пуассона [17]:
где
Разностная аппроксимация данной задачи выглядит так:
А ее решение сводится к решению системы линейных алгебраических уравнений.
Так как реализация этапа адвекции на GPU достаточно подробна описано в работах [24-27] в данной работе не будет уделено внимание их реализации. Алгоритм работы этапа адвекции приведен лишь для введения понятия MAC-сетки, и описания требований к солверу для проекции. Основное внимание в этой работе будет уделено этапу проекции.
