Pull to refresh

OpenFOAM на практике

Reading time3 min
Views27K

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
Tags:
Hubs:
Total votes 28: ↑28 and ↓0+28
Comments6

Articles