OpenFOAM. Открытая интегрируемая платформа для численного моделирования задач механики сплошных сред

Содержание

Слайд 2

Что такое OpenFOAM:

Среда разработки и численного решения задач МСС
Основной язык программирования —

Что такое OpenFOAM: Среда разработки и численного решения задач МСС Основной язык
C++
Операционная система — любая POSIX совместимая
Полностью модульная платформа, реализующая метод конечных объёмов для решения дифференциальных уравнений в частных производных

Слайд 3

Краткие сведения

Краткие сведения

Слайд 4

Задачи OpenFOAM:

Гидродинамика ньютоновских и неньютоновских вязких жидкостей как в несжимаемом, так и

Задачи OpenFOAM: Гидродинамика ньютоновских и неньютоновских вязких жидкостей как в несжимаемом, так
сжимаемом приближении с учётом конвективного теплообмена и действием сил гравитации. Для моделирования турбулентных течений возможно использование RANS-моделей, LES- и DNS-методов. Возможно решение дозвуковых, околозвуковых и сверхзвуковых задач;
Задачи теплопроводности в твёрдом теле;
Многофазные задачи, в том числе с описанием химических реакций компонент потока;
Задачи, связанные с деформацией расчётной сетки;
Сопряжённые задачи;
Некоторые другие задачи, при математической постановке которых требуется решение дифференциальных уравнений в частных производных в условиях сложной геометрии среды;
Распараллеливание расчёта как в кластерных, так и многопроцессорных системах.

Слайд 5

Достоинства и недостатки:

Помимо основных модулей, существуют специализированные модули:
Несжимаемые течения;
Сжимаемые течения;
Многофазные течения;
Моделирование методом

Достоинства и недостатки: Помимо основных модулей, существуют специализированные модули: Несжимаемые течения; Сжимаемые
крупных вихрей и прямое численное моделирование
Горение;
Задачи молекулярной динамики;
Методы частиц в ячейках;
Теплопередача;
Прямое статистическое моделирование;
Электромагнитные поля;
Твердые тела
Финансы

Слайд 6

Основные уравнения:

Основные уравнения: законы сохранения массы, импульса, скаляров и объема в

Основные уравнения: Основные уравнения: законы сохранения массы, импульса, скаляров и объема в
интегральной форме (справедливы для любой сплошной среды – различаются только замыкающие законы):

Слайд 7

Метод конечных объемов

Метод конечных объемов (FVM) используется для аппроксимации законов сохранения
Вычислительная

Метод конечных объемов Метод конечных объемов (FVM) используется для аппроксимации законов сохранения
область разбивается на конечное число непересекающихся контрольных объемов произвольной многогранной формы
Структура данных:
Вершины
Ребра (соединяют вершины)
Грани (замкнутый многоугольник из ребер)
Ячейки (объемы ограниченные гранями)

Слайд 8

В методе конечных объемов используются три уровня аппроксимации:
Аппроксимация интегралов по поверхности,

В методе конечных объемов используются три уровня аппроксимации: Аппроксимация интегралов по поверхности,
объему и времени
Интерполяция в точках, отличных от расчетных (центры контрольных объёмов)
Численное дифференцирование (аппроксимация градиентов)
Простейшие аппроксимации второго порядка точности
Метод средней точки для интегралов (Midpoint rule);
Линейная интерполяция;
Центральные разности (линейные функции формы).

Слайд 9

volScalarField phiEqn
(
fvm::ddt(rho,phi)
+
fvm::div(F,phi)
fvm:: laplacian(gamma,phi)
==
Su + fvm::Sp(Sp,phi)
);
F = linearInterpolate(U)& mesh.Sf()

Код OpenFOAM:

Код OpenFOAM

В терминах языка

volScalarField phiEqn ( fvm::ddt(rho,phi) + fvm::div(F,phi) fvm:: laplacian(gamma,phi) == Su + fvm::Sp(Sp,phi)
С++ большинство математических дифференциальных и тензорных операторов в программном коде уравнений может быть представлено в удобочитаемой форме.

Слайд 10

Структура и средства OpenFOAM

Иерархия средств OpenFOAM
Одно из преимуществ OpenFOAM — гибкая ориентация

Структура и средства OpenFOAM Иерархия средств OpenFOAM Одно из преимуществ OpenFOAM —
на пользователя:
Продвинутому пользователю и разработчику — средства решения задач механики сплошных сред в виде классов C++.
Инженеру — набор небольших программ (решателей и утилит), предназначенных для решения задач узкого круга (и соответственно, ограниченным набором исходных данных)

Слайд 11

Иерархия решателей (моделей МСС) OpenFOAM
Находятся в папке $FOAM_APP/solvers:
DNS - Прямое численное моделирование
Basic

Иерархия решателей (моделей МСС) OpenFOAM Находятся в папке $FOAM_APP/solvers: DNS - Прямое
– Простейшие уравнения
Combustion – Задачи с горением
Compressible - Сжимаемые задачи (в т.ч. с M=1 и M>1)
DiscreteMethods – Дискретные методы
Electromagnetics – электромагнетизм
Financial – финансовые
HeatTransfer – Тепло- и массо- обмен
Incompressible – Несжимаемые течения
Lagrangian – Течение жидкости с учетом движения отдельных частиц
Multiphase – Многофазные течения
StressAnalysis – Анализ прочности

Слайд 12

Распараллеливание расчётов

Распараллеливание расчётов

Слайд 13

Иерархия утилит OpenFOAM
Находятся в папке $FOAM_APP/utilities:
ErrorEstimation – Оценка погрешности численного решения уравнений
Mesh

Иерархия утилит OpenFOAM Находятся в папке $FOAM_APP/utilities: ErrorEstimation – Оценка погрешности численного
– утилита для работы с сеткой
PostProcessing - Обработка результатов расчетов
Preprocessing – Подготовка исходных данных
Miscellaneous – Разнообразные утилиты, не отнесенные к другим группам
Surface – Работа с поверхностями сеток
ParallelProcessing – Декомпозиция и сбор расчетной области при параллельных вычислениях
Thermophysical – Расчет термодинамических параметров

Слайд 14

Используемые численные методы

Структура OpenFOAM является полностью модульной, каждый этап численного решения базовых

Используемые численные методы Структура OpenFOAM является полностью модульной, каждый этап численного решения
уравнений выносится в отдельный модуль:
Дискретизация расчётной области (создание сетки)
Дискретизация уравнений по времени и пространству
Методы решения систем линейных алгебраических уравнений
Граничные условия (в том числе пристеночные функции)
Модели турбулентности (Reynolds-Averaged Stresses, Large Eddy
Simulation)
Контроль качества сетки
Контроль сходимости решения

Слайд 15

Аспекты решения практических задач

Решаемая в OpenFOAM задача обязательно содержит:
Начальные и граничные условия

Аспекты решения практических задач Решаемая в OpenFOAM задача обязательно содержит: Начальные и
(каталог 0)
Расчетную сетку и физические свойства (каталог constant)
Параметры интегрирования уравнений (каталог system)

Слайд 16

Для исследователя важно:
Правильно задать размерность
Корректно задать граничные условия
Проверить качество сетки
Уметь анализировать процесс

Для исследователя важно: Правильно задать размерность Корректно задать граничные условия Проверить качество
сходимости

Слайд 17

При постановке задачи в OpenFOAM используется основная структурная единица — словарь (dictionary).
Словарь

При постановке задачи в OpenFOAM используется основная структурная единица — словарь (dictionary).
(dictionary) — формализованное описание исходных данных в виде текстового файла состоит из:
Содержимого
Заголовка

Слайд 18

Содержимое может включать в себя:
Описание под-словарей (sub-dictionary) — фигурные скобки {}
Списки (именованные

Содержимое может включать в себя: Описание под-словарей (sub-dictionary) — фигурные скобки {}
и анонимные) — круглые скобки ()
Ключи — имя и значение переменной
Описание размерности (может входить в состав ключа) — квадратные скобки []
Динамические описания — исходный код на C++, переменные
Комментарии в стиле C++ - //, /* ... */;

Слайд 19

Главные элементы заголовка — имя словаря (object), его расположение в иерархии случая

Главные элементы заголовка — имя словаря (object), его расположение в иерархии случая
(location) и тип словаря — class.

Слайд 20

Основные единицы словаря OpeFOAM

Под-словарь (sub-dictionary) выделяется фигурными скобками, ключ — включает

Основные единицы словаря OpeFOAM Под-словарь (sub-dictionary) выделяется фигурными скобками, ключ — включает
в себя имя и значение (иногда размерность) и точку с запятой.
Списки перечисляются в круглых скобках, разделителем служит пробел

Слайд 21

Основные единицы словаря: размерности OpeFOAM

Размерность указывается в квадратных скобках

Основные единицы словаря: размерности OpeFOAM Размерность указывается в квадратных скобках

Слайд 22

Динамические описания OpenFOAM

Можно использовать переменные, которые содержат заданное значение или значение под-словаря

Динамические описания OpenFOAM Можно использовать переменные, которые содержат заданное значение или значение под-словаря Подключать текстовые файлы

Подключать текстовые файлы

Слайд 23

Динамические описания OpenFOAM

Или программировать пользовательские подпрограммы
inlet
{ type codedFixedValue; redirectType

Динамические описания OpenFOAM Или программировать пользовательские подпрограммы inlet { type codedFixedValue; redirectType
swirl;
code
#{
const vector axis(1, 0, 0); vectorField v = 2.0*this->patch().Cf() ^ axis; v.replace(vector::X, 1.0); operator==(v);
#};
value $internalField;
}

Слайд 24

Примеры граничных условий

Примеры граничных условий

Слайд 25

Примеры граничных условий

Примеры граничных условий

Слайд 26

Связь с другими проектами

SALOME – пакет для работы с геометрией и сетками Основное

Связь с другими проектами SALOME – пакет для работы с геометрией и
окно (1,центр), дерево объектов (2, слева), окно сообщений системы (3, снизу), меню (4, сверху), панель инструментов (5, между меню и основным окном)

Слайд 27

Связь с другими проектами

ParaView – пакет для визуализации результатов и расчетных сеток,

Связь с другими проектами ParaView – пакет для визуализации результатов и расчетных
поставляется по умолчанию вместе с OpenFOAM

Слайд 28

Ответвления

BlueCFD— кросс-компилированная версия OpenFOAM для запуска на операционных системах Windows, производная от

Ответвления BlueCFD— кросс-компилированная версия OpenFOAM для запуска на операционных системах Windows, производная
OpenFlow. Включает в себя дополнительные инструменты и функциональность, используемые в OpenFOAM. Разработка поддерживается компанией blueCAPE.
FreeFOAM— версия OpenFOAM независящая от операционной системы, портативна и более удобна для установки. Проект развивается параллельно с официальными выпусками OpenCFD и не имеет дополнительного функционала. Для сборки использует CMake.
OpenFlow это исходный код дополнения для кросс-компилированного дистрибутива OpenFOAM, работающего на операционных системах Windows. Компоненты OpenFOAM в blueCFD разработаны на основе исходного кода OpenFlow. Разработка поддерживается компанией Symscape.
OpenFOAM-extend поддерживается Wikki Ltd. Эта ветка включает в себя разработки сообщества, большая часть которых может быть установлена в официальную версию OpenFOAM с минимальными изменениями. Ветка разрабатывается параллельно с официальной версией OpenFOAM, но в последних версиях выпуски extend ветки отстают на один-два года.

Слайд 29

Пример «Прорыв плотины»

Мы будем решать упрощенную двумерную задачу прорыва плотины с использованием

Пример «Прорыв плотины» Мы будем решать упрощенную двумерную задачу прорыва плотины с
решателя interFoam. Особенностью задачи является нестационарное течение двух жидкостей, разделенных интерфейсом, или свободной поверхностью.
Испытательная установка состоит из столба воды находящегося в состоянии покоя, расположенной позади мембраны, на левой стороне бака. В момент времени T = 0 с, мембрана удаляется, а столб воды падает. Во время распада, вода воздействует на препятствие на дне резервуара и создает сложную структуру потока, в том числе несколько захваченных карманов воздуха. Геометрия и начальная установка показана на рисунке.

Слайд 30

Граничные условия

Пользователь может исследовать геометрии границ, порожденную blockMesh путем просмотра граничного

Граничные условия Пользователь может исследовать геометрии границ, порожденную blockMesh путем просмотра граничного
файла в постоянном каталоге / Polymesh. Файл содержит список из 5 граничных патчей:
leftWall (левая стена)
rightWall (правая стена)
lowerWall (нижняя стена)
атмосфера
defaultFaces (стены по умолчанию)

Слайд 31

Положение фазы α при определенном времени

Положение фазы α при определенном времени