OpenFOAM на практике

Open FOAM


image

OpenFOAM — свободно распространяемый инструментарий вычислительной гидродинамики для операций с полями (скалярными, векторными и тензорными). На сегодня является одним из «законченных» и известных приложений, предназначенных для FVM-вычислений.В частности пакет позволяет решать задачи гидродинамики ньютоновских и неньютоновских вязких жидкостей как в несжимаемом, так и сжимаемом приближении с учётом конвективного теплообмена и действием сил гравитации. Для моделирования турбулентных течений возможно использование RANS-моделей, LES- и DNS-методов. Возможно решение дозвуковых, околозвуковых и сверхзвуковых задач.

В основе пакета лежит набор библиотек, предоставляющих инструменты для решения систем дифференциальных уравнений в частных производных как в пространстве, так и во времени. Рабочим языком кода является ООП C++. В терминах данного языка большинство математических дифференциальных и тензорных операторов в программном коде (до трансляции в исполняемый файл) уравнений может быть представлено в удобочитаемой форме, а метод дискретизации и решения для каждого оператора может быть выбран уже пользователем в процессе расчёта. Таким образом, в коде полностью инкапсулируются и разделяются понятия расчетной сетки (метод дискретизации), дискретизации основных уравнений и методов решения алгебраических уравнений.

Задача

Решим задачу обтекании бесконечного квадратного цилиндра.Жидкость несжимаемая и вязкая.
Для подобных задач множество экспериментальных данных. Поэтому в конце мы сможем сравнить результаты численного моделирования.
image
Где U=(u,v)-безразмерная скорость,p -безразмерное давление, Re — число Рейнольдса.

Для дискретизации расчетной области используются блочные сетки. Построение производиться средствами утилиты blockmesh, пакета OpenFOAM. Область разбивается на непересекающиеся ячейки, имеющие кубическую форму. Для учета двухмерности на передней «front» и на задней границе области «back», параллельных плоскости течения, используются специальные граничные условия.

Граница Переменная Тип граничных условий
«Front», «back» U, p empty
«Inlet», «outlet» U FixedValue
«Inlet», «outlet» p FixedValue
«Bottom», «top» U ZeroGradient
«Bottom», «top» p ZeroGradient
«Square» U ZeroGradient
«Square» p FixedValue

Схема разбиения

image
Бесконечная область заменяется ограниченной областью, которая представляет собой прямоугольный параллелепипед, в центре которой помещен квадратный цилиндр. Выбор трехмерной области решения проводиться в соответствии с особенностью программного обеспечения. В OpenFOAM не предусмотрено решение 2D задач.

Дискретизация системы уравнения движения в данном вычислительном пакете OpenFOAM производиться по методу конечных объемов FVM (Finite-volume method). Локализация дискретных значений скорости и давления производится в центрах ячеек построенной расчетной сетки.

image

Слагаемое Схема аппроксимации в пакете OpenFOAM Порядок аппроксимации
Производная по времени Euler Первый
Градиент давления Gauss linear Второй*
Конвективное слагаемое Gauss limitedCubicV 0.2 Первый/второй
Лапласиан Gauss linear corrected Второй*

*- в некоторых областях, характеристики сетки могут снизить порядок точности.

Решение

Решение задачи производится при помощи утилиты icoFoam в основе которого лежит алгоритм PISO. Основные шаги представлены на схеме. Итерационная процедура основана на последовательном решении уравнений для скоростей и давления.

image

Для решения системы линейных уравнений для p был использован солвер PCG (предварительно сопряженных градиентов). Чтобы задать начальное приближение использовалась солвер GAMG (многосеточный метод с V циклом), со сглаживанием Гаусс-Зейделя. Для решения системы линейных уравнений для U было использовалась солвер PBiCG (предварительно бисопряженных градиентов), с солвером DILU (Diagonal incomplite-LU) для начальных приближений.

Задача Метод решения Параметры
Для давления PCG preconditioner GAMG, tolerance 1e-6; relTol 0;
Предобуславливатель GAMG Smoother GaussSeidel; agglomerator faceAreaPair; mergeLevels 1; relTol 0;

nCellsInCoarsestLevel 10;cacheAgglomeration true;
Для скоростей PbiCG solver PbiCG;preconditioner DILU; tolerance 1e-06; relTol 0;

Preconditioner– предобуславливатель,
Tolerance – максимально допустимое значение модуля невязки,
Smoother – метод сглаживания,
Agglomerator –аггломератор,
nCellsInCoarsestLevel – число ячеек на самой грубой сетке.

Применяется метод (domain decomposition) декомпозиции расчетной области. Область решения делится на 4 подобласти меньшего размера, которые рассчитываются на различных ядрах процессора.

image

Результаты

image

Зависимость Cd от числа Рейнольдса.

▲- OpenFOAM, ∎- Davis&Moore (1982) — - — - — Шушанта Дутта(2008) ∙∙∙∙∙ Гера (2010)
Наши результаты практически совпали с результатами других исследователей. Однако, для скошенных сеток результаты значительно отличны от экспериментальных.

Ну и красивая картинка обтекания.
image

Применение в других областях

Lamborghini Aventador
image


Трахея

image


Эргономика




Официальный сайт OpenFOAM

P.S. Первый мой пост на habrahabr
  • +28
  • 18,5k
  • 6
Поделиться публикацией

Комментарии 6

    0
    1. «Ну и красивая картинка обтекания» это дорожка Кармана.
    2. А почему бы не привести задачу обтекания круглого цилиндра. Там более сложное течение для расчета.
    3. Также интересны времена. Мне кажется все очень медленно.
    4. Есть вещи, которые иногда надо учитывать, а в этом подходе я не заметил. Например Навье-Стокса для несжимаемой жидкости для краткости в двумерном случае
    (1) u_x + u_y=0
    (2) u_t + u u_x + v u_y = -p_x + 1/Re(u_xx + u_yy)
    (3) v_t + u v_x + v v_y = -p_y + 1/Re(v_xx + v_yy)
    Если (2)_x + (3)_y — (1)_t — u (1)_x — v (1)_y + 1/Re((1)_xx + (1)_yy) = u_x^2 + 2 v_x u_y + v_y^2 + p_xx + p_yy = 0
    Т.е. не учитывая полученное уравнение, в которое время явно не входит Вы не сможете правильно сформулировать условия на границы и в начальный момент времению

    Автору большое спасибо. Читал все с удовольствием, но я не верю в универсальные решатели. Возможно для инженеров самое то. Конечно порадовало отсутствие метода конечных элементов.
      0
      По поводу МКЭ, читал в обзоре РФЯЦ-ВНИИЭФ по методам нестационарной газовой динамики, что в зарубежной литературе популярен МКО, хотя, похоже, большинство пакетов реализуют МКЭ. Почему это так, не знаю, с МКЭ никогда не работал. Но вот для задач подземной гидродинамики и трубопроводных систем вполне хватает МКО.
      0
      Прошу простить мое невежество, если я правильно понимаю, то OpenFOAM предназначен для конечно-элементных/конечно-объемных вычислений. А существуют ли подобные «законченные и известные приложения», предназначенные для конечно-разностных вычислений?
        0
        Уровня OpenFOAM, пожалуй, только Overture. Есть конечные разности и объемы.
          0
          Посмотрите еще Gerris и NaSt3DGP.
            0
            До этого только Gerris как-то попадал в поле моего зрения — так что огромная благодарность с моей стороны =)

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое