Учебный курс по открытым пакетам М.Крапошин, О. Самоваров, С.Стрижак.

Презентация:



Advertisements
Похожие презентации
Анализ и моделирование течений жидкостей и газов c использованием комплекса ANSYS CFX Описание архитектуры и процесса решения типовых задач посредством.
Advertisements

Адаптация комплекса программ M2DGD для работы на МВС с использованием среды параллельного программирования OST Павлухин Павел Научный руководитель: Меньшов.
{ основные типы уравнений второго порядка в математической физике - уравнение теплопроводности - уравнения в частных производные - уравнения переноса количества.
Стр. 1 Часть 14 – Основы метода Эйлера. Стр. 2 Часть 14 – Основы метода Эйлера СОДЕРЖАНИЕ Основные положения метода Эйлера Основы метода конечных объёмов.
Численное моделирование взаимодействия поверхностных волн с препятствиями Карабцев С.Н., Михайлов С.О.
Численные методы линейной алгебры. Методы решений нелинейных уравнений и систем. Лекция 3:
Московский государственный университет им. М. В. Ломоносова Факультет вычислительной математики и кибернетики Кафедра вычислительных методов Дипломная.
Метод конечных элемнтов Кафедра Юнеско по НИТ, Рейн Т.С.
Исследование влияния лимитера на порядок точности решения разрывным методом Галеркина ИНСТИТУТ ПРИКЛАДНОЙ МАТЕМАТИКИ ИМ. М.В.КЕЛДЫША РОССИЙСКОЙ АКАДЕМИИ.
Мортиков Е.В. 2 4 апреля 2014 г. НИВЦ МГУ М. В. Ломоносова Лаборатория суперкомпьютерного моделирования природно - климатических процессов ЧИСЛЕННОЕ МОДЕЛИРОВАНИЕ.
Лекция Дифференциальное уравнение теплопроводности 1.5. Условия однозначности 1.6. Методы решения уравнения теплопроводности.
Лектор Пахомова Е.Г г. Математический анализ Раздел: Интегрирование ФНП Тема: Векторное поле.
ВЫВОД УРАВНЕНИЙ ДВИЖЕНИЯ ПОДВОДНОГО ОБЪЕКТА НА ОСНОВЕ НОВОЙ ЗАПИСИ КОЭФФИЦИЕНТОВ ПРИСОЕДИНЕННЫХ МАСС Павловский В.А., д.ф-м.н, профессор Никущенко Д.В.,
Учебный курс Основы вычислительной математики Лекция 1 доктор физико-математических наук, профессор Лобанов Алексей Иванович.
Лекции по физике. Механика Динамика вращательного движения. Гироскопы. Неинерциальные системы отсчёта.
Решение задачи диффузии, зависящей от времени. Рассмотрим простейшее уравнение в частных производных параболического типа, описывающее процесс диффузии.
Основы моделирования пакете ANSYS Аксёнова Дарья ФМТП 3-17.
УРАВНЕНИЯ С ЧАСТНЫМИ ПРОИЗВОДНЫМИ. Рассмотрим уравнение вида: Здесь - искомая функция.
МГУ им. М.В. Ломоносова, Москва, 21 октября 2011г. КОНСОРЦИУМ УНИВЕРСИТЕТОВ РОССИИ Курс: «Технология параллельного программирования OpenMP» Лабораторная.
Метод прямых в одной задачиреакция-диффузия Студентка: Фролова Ксения Владимировна Группа 1205 Руководитель: Горелов Георгий Николаевич МИНИСТЕРСТВО НАУКИ.
Транксрипт:

Учебный курс по открытым пакетам М.Крапошин, О. Самоваров, С.Стрижак

Задачи МСС Автомобилестроение Гидродинамика судна Двигателестроение Космонавтика Энергомашиностроение Гидравлика русла Климат контрольЯдерная энергетикаБиомеханика Нефтегазовая промышленность

Свободное Программное Обеспечение для задач МСС

Основные этапы и модули при решении задач МСС

ОpenFOAM свободно распространяемое программное обеспечение для проведения численных расчетов. OpenFOAM объектно-ориентированная платформа, реализованная на языке программирования С++. ОpenFOAM – перспективное и динамично развивающиеся открытое программное обеспечение для моделирования задач механики сплошных сред. В его разработке и развитии принимают участие десятки организаций и сотни разработчиков по всему миру. OpenFOAM – обладает большой функциональностью и удовлетворяет всем основным требованиями, предъявляемым к современному программному обеспечению для расчета промышленных задач Всего около 3000 пользователей в мире. Разработан в Imperial College of Science. London. UK Открытие кода OpenFOAM в 2004 г. на условиях GPL Входит в состав CAE Linux Форум на

Основные возможности пакета OpenFoam Mетод контрольного объема на базе многогранных ячеек c поддержкой подвижных сеток; URANS/LES/DNS моделирование; * SIMPLE/PISO/PIMPLE алгоритмы для связи уравнений скорости и давления; * Несжимаемые/сжимаемые и стационарные/нестационарные потоки ; * Однофазные, двухфазные и многофазные потоки; * Лагранжева модель для расчета движения частиц; * Модели турбулентности: k-e, k-w, k-w SST, SA, LES, DES. Всего 15 моделей; * Модели теплообмена, испарения, горения, распыливания топлива; Различные термо-физические свойства среды, учет реальных свойств газов; Сопряженные задачи (жидкость – тело); Решение уравнений движения тела с 6 степенями свободы; Решение задач динамики разряженного газа; * Многоблочная сетка и декомпозиция расчетной области (Metis, Scotch); * Параллельная версия (до 2000 ядер), поддержка версий MPI. ; * Поддержка структурированной/неструктурированной сетки; * Импорт сеток из различных коммерческих и открытых пакетов.

OpenFoam. История. Предшественник текущей системы – Коммерческий код FOAM. Продавался в UK компанией Nabla Ltd Разработчиком указанного пакета являются ученики профессора Imperial College, London А. Госмена: H. Weller и H. Jasak Литература: - Госмен А.М. и др. Численные методы исследования течений вязкой жидкости. М.: Мир., 1972, 323 с. - Weller, H.G.; Tabor G.; Jasak, H. and Fureby, C.: A Tensorial Approach to CFD using Object Orientated Techniques, Computers in Physics, 1998 v. 12 n. 6, pp 620 – 631A Tensorial Approach to CFD using Object Orientated Techniques - Ferziger J.H., Peric M., Computational Methods for Fluid Dynamics. Springer-Verlag, Berlin et al.: Springer, – 423p Дальнейшая разработка компанией OpenCFD, UK Компания OpenCFD. Ltd. UK проводит консалтинг и обучение по всему миру Альтернативная версия extend. Разрабатывается научным сообществом. Конференции пользователей: 1 конференция - Загреб конференция – Монреаль конференция - Загреб конференция– Гетеборг конференция - Милан конференция – Penn State University 2011 Летняя школа для аспирантов в Загребе 2008,2009,2010. Подготовлено около 20 диссертаций. Выполняются магистерские работы. Open Source Conferences при участии OpenCFD, Ltd ,2008, 2009, 2010

Различные версии OpenFoam OpenFoam Разработчик OpenCFD Ltd. OpeFoam-1.7.x – исправленная версия с патчами. Разработчик OpenCFD Ltd. – git.or.cz OpenFOAM-1.6-dev. Расширенная версия, разрабатывается H.Jasak. OpenFOAM-1.6-extend. Разрабатывается пользователями.

OpenFOAM (Field Operation and Manipulation) Открытое «ядро» и доступность кода Установка на LINUX (RHEL,SUSE,OpenSuse, Dеbian, Ubuntu, CentOS, CAELinux) Использование возможностей объектно-ориентированного программирования на C++; В программном коде используется базовая единица: класс. Основные исследуемые объекты: расчетная область, преобразования в тензорной и линейной алгебре, решатели, математические операции для УРЧП (дискретизация, дифференцирование, интегрирование, интерполяция); Представление уравнений МСС с помощью естественного языка программирования; Решение уравнений эллиптического, параболического, гиперболического типа; Разбиение кода на небольшие самостоятельные единицы; Совместимость с доступными открытыми кодами и компиляторами (gcc,python); Возможность разработки собственных модулей (граничные условия, библиотеки модели среды, решатели, утилиты). Около 1 миллиона строк исходного кода

Инсталляция OpenFoam $cd OpenFOAM/ $tar xzf OpenFOAM-1.6.General.gtgz $tar xzf OpenFOAM-1.6.linux64GccDPOpt.gtgz $tar xzf ThirdParty-1.6.General.gtgz $tar xzf ThirdParty-1.6.linux64Gcc.gtgz Настройка окружения: ~]$ cat.bashrc #.bashrc # Source global definitions if [ -f /etc/bashrc ]; then. /etc/bashrcfi # User specific aliases and functions export FOAM_INST_DIR=/home/user1/OpenFOAM foamDotFile=$FOAM_INST_DIR/OpenFOAM-1.6/etc/bashrc if [ -f $foamDotFile ]; then. $foamDotFile fi

~]$ foamInstallationTest Executing /home/cfd1/OpenFOAM/OpenFOAM-1.6/bin/foamInstallationTest: Checking basic setup Shell: bash Host: master.bmstu.ru OS: Linux version el5xen Checking main OpenFOAM env variables Environment_variable Set_to_file_or_directory Valid Crit $WM_PROJECT_INST_DIR /home/cfd1/OpenFOAM yes yes $WM_PROJECT_USER_DIR /home/cfd1/OpenFOAM/cfd1-1.6 no no $WM_THIRD_PARTY_DIR /home/cfd1/OpenFOAM/ThirdParty-1.6 yes yes Checking the OpenFOAM env variables set on the PATH Environment_variable Set_to_file_or_directory Valid Path Crit $WM_PROJECT_DIR /home/cfd1/OpenFOAM/OpenFOAM-1.6 yes yes yes $FOAM_APPBIN...1.6/applications/bin/linux64GccDPOpt yes yes yes $FOAM_SITE_APPBIN...penFOAM/site/1.6/bin/linux64GccDPOpt no no $FOAM_USER_APPBIN...1.6/applications/bin/linux64GccDPOpt no no $WM_DIR /home/cfd1/OpenFOAM/OpenFOAM-1.6/wmake yes yes yes Инсталляция OpenFoam

Структура OpenFOAM * applications: исходные и исполняемые файлы - Solvers - Utilities - Bin - Test * bin: базовые исполняемые скрипты *doc: pdf и Doxygen файлы - Doxygen - Guides-a4 *lib: откомпилированные библиотеки * src – исходные файлы *test – тестовые файлы * tutorials – примеры * Wmakes – утилиты для компиляции

Некоторые стандартные решатели в OpenFOAM 1) boundaryFoam – 1D решатель для создания пограничного слоя 2) icoFoam – решатель для несжимаемого, ламинарного потока 3) laplacianFoam – решение уравнение Лапласа 4) rhoCentralFoam - решатель для невязкого сжимаемого потока central- upwind schemes of Kurganov and Tadmor 5) simpleFoam - решатель для стационарного несжимаемого, турбулентного потока. Алгоритм SIMPLE. 6) pisoFoam – решатель для нестационарного несжимаемого турбулентного потока. Алгоритм PISO. 7) sonicFoam - решатель для нестационарного сжимаемого турбулентного потока. 8) buoyantSimpleFoam – решатель для моделирования конвективных потоков 9) fireFoam – решатель для моделирования турбулентного пламени 10) dsmcFoam DSMC= Direct Simulation Monte-Carlo – решатель для моделирования динамики разряженного газа 11) channelFoam – LES solver for channel only 12) dnsFoam – прямое численное моделирование изотропной турбулентности

Некоторые стандартные решатели в OpenFOAM 13) pimpleFoam - Large time-step transient solver for incompressible, flow using the PIMPLE (merged PISO-SIMPLE) algorithm 14) pimpleDymFoam - Transient solver for incompressible, flow of Newtonian fluids on a moving mesh using the PIMPLE (merged PISO-SIMPLE) algorithm 15) nonNewtonianicoFoam – icoFaom для неньютоновсих жидкостей 16) MRFsimpleFOAM – решатель для вращающихся сеток 17) rhopisoFoam – Transient PISO solver for compressible, laminar or turbulent flow 18) rhopimpleFoam - Transient solver for laminar or turbulent flow of c ompressible fluids for HVAC and similar applications 19) rhosimpleFoam - Steady-state SIMPLE solver for laminar or turbulent RANS flow of compressible fluids 20) rhoSonicFoam - Density-based compressible flow solver 21) sonicDymSonic - Transient solver for trans-sonic/supersonic, laminar or turbulent flow of a compressible gas with mesh motion 23) rhoPoroussimpleFoam - Steady-state solver for turbulent flow of compressible fluids with RANS turbulence modelling, and implicit or explicit porosity treatment 24) rhoReactingFoam - Density-based thermodynamics variant of the reactingFoam solver

Схемы дискретизации в OpenFOAM Дискретизация конвективных членов: Центральные схемы: - Linear – central differencing (CD) ( Second order, unbounded ) -Midpoint Схемы по потоку: -Upwind differencing (UD) ( First order, bounded ) -LinearUpwind -skewLinear -QUICK ( First/second order, bounded ) Схемы минимизации полной вариации - TVD: -LimitedLinear -vanLear -MUSCL -limitedCubic Схемы нормализации переменных ( NVD – normalized variable diagram ) -SFCD (self-filtered central differencing ) ( Second order, bounded ) -Gamma & GammaV (Схемы H.Jasak) ( First/second order, bounded ) Схемы дискретизации по времени: -Эйлера ( 1и 2 порядок); -Кранка-Никольсона (2 порядок); -Обратная (backward); -Ограниченная обратная Схемы дискретизации диффузионных членов: - Gauss linear – 2 порядок -Gauss limited linear -leastSquares -Fourth – 4 порядок Более 50 различных комбинаций расчетных схем

Схемы дискретизации для неструктурированных сеток - Центральная схема. Второй порядок точности, но дает осцилляции - Схемы высокого порядка, учитывающие транспортные свойства течения Информация поступает из области вверх по потоку. Отсутствие осцилляций. Но могут быть привнесены неточности расчета. - Существует большое количество точных схем: TVD, NVD семейство.

Схема Gamma

Решатели СЛАУ Для симметричных матриц: - метод сопряженных градиентов с предобуславливанием типа неполной факторизации; - ICCG (метод неполного разложения Холецкого); - метод сопряженных градиентов с диагональным предобуславливанием – DCG. - алгебраический многосеточный метод – GAMG (для p). Для несимметричных матриц: - метод био-сопряженных градиентов с предобуславливанием - ICCG (метод неполного разложения Холецкого); - метод Гаусса-Зейделя.

Описание метода сопряжённых градиентов Будем строить следующий вычислительный алгоритм МСГ: Далее для k=1,2,… производятся следующие вычисления: Постановка задачи Решение систем линейных алгебраических уравнений – классическая задача вычислительных методов. Особый интерес представляют матрицы разреженного вида, которые получаются в результате конечно- разностной,конечно-элементной или конечно- объемной аппроксимации. Такие матрицы приходится хранить в каком-то особом формате, так как даже при аппроксимации небольших задач размерность матрицы системы становится непосильной задачей для современных параллельных компьютеров. В рамках работы остановимся на решении СЛАУ итерационными методами, где основной операцией является умножение матрицы на вектор. В качестве метода решения рассмотрим метод сопряжённых градиентов с диагональным предобуславливанием для ускорения сходимости системы уравнений. В качестве аппроксимации будем рассматривать метод конечных объемов. Выход из итерационного процесса будем осуществлять по достижении большого количества итераций или по достижению малости относительной невязки:

Основные утилиты foamInstallationTest – проверка инсталляции OF checkMesh -allTopology –all Geometry – проверка сетки mirrorMesh – построение зеркальной сетки makeAxialMesh -axis... -wedge... - foamLog log – скрипт, использующий grep, awk, sed, для извлечения данных из log файла. foamJob - утилита для контроля заданий yPlusRAS/yPlusLES – определение значения yPlus для RANS/ LES foamCalc – расчет различных параметров поля Mach – расчет локального числа Маха в каждый момент времени streamFunction – расcчитывает линии тока по значениям U particleTracks - generate particle tracks for lagrangian calculations. decomposePar – декомпозиция расчетной области reconstructPar – объединение расчетных областей fluentMeshToFoam, fluent3DMeshToFoam – трансляция сетки из формата Fluent Sample – построение графиков Gnuplot – построение графиков с помощью доп. утилиты Linux foamToVTK – подготовка файлов для обработки в Paraview в формате VTK pyFoam – построение графиков во время счета. Утилита написана на Python. polyDualMesh – утилита для построения сеток на базе многогранников

Примеры граничных условий Название ГУОписание Граничные условия, дочерние (derived) по отношению к смешанному fixedValueГУ 1-го рода. Необходимо задать фиксированное значение на входе. Условие Дирихле. fixedGradientГУ 2-го рода. Необходимо задать градиент величины на границе. zeroGradientГУ 2-го рода. Нулевой градиент на границе. Условие Неймана. inletOutletдействует как ГУ 1-ого рода, если массовый (объемный) поток входит в расчетную область и как ГУ 2-ого рода, если поток выходит из расчетной области. Иными словами, zeroGradient если жидкость выходит из расчетной области и фиксированное значение (inletValue) если входит outletInletобратно inletOutlet Иными словами, zeroGradient если жидкость входит в расчетную область и фиксированное значение (outletValue) если выходит из нее Mixed, symmentry plane, periodic and cyclic freestream, frestreamPressure Смешанное условие, условие симметрии, переодическое и циклическое условие Условие свободного потока

Название ГУОписание Граничные условия, дочерние (derived) по отношению к смешанному rotationГУ 1-го рода. Необходимо задать значение вращения, данные вокруг оси. Условие Дирихле. profile1DfixedValueГУ 1-го рода. Необходимо задать файл с данными. Можно использовать для закрутки. activeBaffleVelocityCombines cyclic and wall patches so that the flow throught the patch can be controlled buoyantPressureFvPatch ScalarField New Buoyancy pressure boundary condition now supports =pd= to =p= uniformDensityHydrostatic Pressure Boundary condition for pressure to aid the transition from = pd= to =p= jumpCyclic fan Turbulent flow inlet Cyclic condition with an additional jum in value Specialisation of jumpCyclic, applying prescibed jump in pressure to simulate a fan within a mesh Mixing length and frequency Примеры граничных условий

1) kEpsilonStandard high- model 2) kOmegaStandard high- model 3) kOmegaSST -SST model 4) RNGkEpsilonRNG model 5) NonlinearKEShihNon-linear Shih model 6) LienCubicKELien cubic model 7) qZeta model 8) LaunderSharmaKELaunder-Sharma low- model 9) LamBremhorstKELam-Bremhorst low- model 10) LienCubicKELowReLien cubic low- model 11)LienLeschzinerLowReLien-Leschziner low- model 12) LRRLaunder-Reece-Rodi RSTM 13) LaunderGibsonRSTMLaunder-Gibson RSTM with wall-reflection terms 14) realizableKERealizable model 15) SpalartAllmarasSpalart-Allmaras 1-eqn mixing-length model Модели турбулентности для несжимаемых течений

Модели пристеночных функций Для различных величин: –nut: nutWallFunction, –mut: muWallFunction, –epsilon: epsilonWallFunction, –omega: omegaWallFunction, –k, q, R: kqRWallFunction. –nut – nutSpalartAllmarasWallFunction. Для температуры: –alphat: alphatWallFunction.

1) SmagorinskySmagorinsky model 2) Smagorinsky2Smagorinsky model with 3-D filter 3) dynSmagorinskyDynamic Smagorinsky 4) scaleSimilarityScale similarity model 5) mixedSmagorinskyMixed Smagorinsky/scale similarity model 6) dynMixedSmagorinskyDynamic mixed Smagorinsky/scale similarity model 7) kOmegaSST -SST scale adaptive simulation (SAS) model 8) oneEqEddy -equation eddy-viscosity model 9) dynOneEqEddyDynamic -equation eddy-viscosity model 10) locDynOneEqEddyLocalised dynamic -equation eddy-viscosity model 11) spectEddyViscSpectral eddy viscosity model 12) LRDDiffStressLRR differential stress model 13) DeardorffDiffStressDeardorff differential stress model 14) SpalartAllmarasSpalart-Allmaras model 15) SpalartAllmarasDDESSpalart-Allmaras delayed detached eddy simulation (DDES) model 16) SpalartAllmarasIDDESSpalart-Allmaras improved DDES (IDDES) model Модели турбулентности для LES

LES параметры LES deltas PrandtlDelta Prandtl delta cubeRootVol Delta Cube root of cell volume delta smoothDelta Smoothing of delta LES filters laplaceFilter Laplace filters simpleFilter Simple filter anisotropicFilter Anisotropic filter Различные граничные условия для входа потока: Random fluctuations Литература. Волков К.Н., Емельянов В.Н.. Моделирование крупных вихрей в расчетах турбулентных течений. – М.: Физматлит – 368 с.

RAS turbulence models for compressible fluids laminar Dummy turbulence model for laminar flow kEpsilon Standard model kOmegaSST model RNGkEpsilon RNG model LaunderSharmaKE Launder-Sharma low- model LRR Launder-Reece-Rodi RSTM LaunderGibsonRSTM Launder-Gibson RSTM realizableKE Realizable model SpalartAllmaras Spalart-Allmaras 1-eqn mixing-length model

Размерность физических величин No.ХарактеристикаЕдиница измеренияСимвол 1МассакилограммКг 2ДлинаМетрМ 3ВремясекундаС 4ТемператураКельвинК 5Количество веществамольМоль 6ТокАмперA 7Сила светаканделаКд

Утилиты для работкой с сеткой blockMesh- A multi-block mesh generator extrude2DMesh- Takes 2D mesh (all faces 2 points only, no front and back faces) and creates a 3D mesh by extruding with specified thickness Extrude Mesh - Extrude mesh from existing patch (by default outwards facing normals; optional flips faces) or from patch read from file snappyHex Mesh - Automatic split hex mesher. Refines and snaps to surface

Трансляторы результатов расчета foamDataToFluent Translates OPENFOAM®data to Fluent format foamToEnsight Translates OPENFOAM®data to EnSight format foamToEnsightParts Translates OPENFOAM®data to Ensight format. An Ensight part is created for each cellZone and patch foamToFieldview9 Write out the OPENFOAM®mesh in Version 3.0 Fieldview-UNS format (binary) foamToGMV Translates foam output to GMV readable files foamToVTK Legacy VTK file format writer foamToTecplot Translates OPENFOAM®data to Tecplot format

Пример структуры директории задачи

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

Метод контрольного объема в OpenFOAM

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

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

Метод решения Конвективные потоки требуют линеаризации: Отложенная коррекция (deferred correction) используется для упрощения применения схем высокого порядка, для неортогональных сеток и т.д. Градиенты аппроксимируются с помощью формулы Гаусса- Остроградского или с помощью полиномов

Метод решения Для каждой ячейки получается одно алгебраическое уравнение, связывающее значение переменной в центре ячейки с переменными в соседних ячейках Для всей вычислительной области получается система линейных уравнений Используется связанный (coupled; все переменные образуют один вектор неизвестных) или последовательный (segregated; уравнения для каждой переменной решаются по очереди) метод решения В последовательном методе решения для связи скорости, давления и плотности используются алгоритмы PISO или SIMPLE Системы линейных уравнений решаются либо методом сопряженных градиентов, либо алгебраическим многосеточным методом

МКО. Многогранники

МКО. Основы метода. Расчетная ячейка Объем ячейки – Vp Узел P располагается в центре ячейки xp Для каждой ячейки существует ячейка-сосед, граничащая с каждой стороной. Соседняя ячейка – N Центр стороны – f. Используется теорема о среднем Вектор к стороне f определяется как Df=PN Поверхностный вектор Sf равен величине площади стороны Sf рассчитывается с помощью интеграла Центр ячейки (узел P) должен находится внутри ячейки Объем ячейки и площадь стороны рассчитываются путем декомпозиции на пирамиды и треугольники Типы сторон в сетке: внутренние и граничные Дискретизация базируется на интегральной форме транспортного уравнения для каждой ячейки Литература. Патанкар С. Численные методы решения задач теплообмена и динамики жидкости. М., Энергоатомиздат, 1984, 152 с.

МКО. Основы метода. Операции с поверхностными и векторными интегралы Выбор P и f обеспечивает второй порядок точности Дискретизация второго порядка для переменной Ф по пространству Дискретизация второго порядка для переменной Ф по времени Наличие специальной функции для FVM shape function Поддержка многогранных ячеек Нет спецификации на тип ячеек (тетраэдры, призмы, пятигранники и т.д. ) Использование теоремы Гаусса для аппроксимации объемных интегралов над дивергенцией и градиент операторами. Дискретизация производной по времени, конвективного члена, оператора градиент, диффузионного члена, источникового члена Литература Ferziger J.H., Peric M., Computational Methods for Fluid Dynamics. Springer-Verlag, Berlin et al.: Springer, – 423p

Основы МКО Как структура сетки влияет на алгоритм? Фf зависит от значений в узлах P, N. Расчет поверхностного интеграла? Структурированная сетка: Восток, Запад, Север, Юг. Нумерация индексов: n+1, n-1, n+colDim, n- colDim Блочно-структурированная и адаптивная сетки : 2 опции Сетка на базе тетраэдров: для каждого тетраэдра сохранить 4 индекса соседних ячеек для 4 сторон в нужном порядке Неструктурированная сетка: забыть о блоках, для каждой ячейки хранить индексы соседних ячеек Смешанная сетка: тетраэдры имеют только 4 соседа, кирпич имеет шесть. 2 опции. Сетка на базе многогранников:

МКО. Основы метода. Процедура интерполяции для получения значения Фf для конвективного слагаемого Фf зависит от двух узлов: P и N. Решение в узле P зависит от N, и наоборот. Мы получаем матрицу с недиогональными коэффициентами Центральная схема. Второй порядок точности, но осцилляции Схемы высокого порядка, учитывающие транспортные свойства течения. Информация поступает из области вверх по потоку. Отсутствие осцилляций. Но могут быть привнесены неточности расчета Существует большое количество точных схем: TVD, NVD семейство.

Реализация слагаемых для ДУ Различные операторы

Основные классы в OpenFoam Классы для тензорного исчисления : scalarField, vectorField, tensorField. Класс – space & time Классы для геометрических тензорных полей: volScalarField, volVectorField, volTensorField. Класс tensor-derivative: finiteVolumeCalculus (fvc) - дифференцирование, finiteVolumeMethod (fvm)- дискретизация. Классы для дифференциальных уравнений: fvMatrixScalar, fvMatrixVector Класс для геометрических полей: fvMesh – поддерживает FVM дискретизацию, polyMesh – многогранные сетки (комбинация всех точек, сторон, ячеек, граничных сторон); dynamicFvMesh, dynamicMotionSolverFvMesh - динамические сетки; Класс для граничных условий: patchField Класс для матриц: lduMatrix

Пример класса на C++ class name { public: declaration of public member functions and member data private: declaration of hidden member functions and member data }; public признаки видимы снаружи класса private признаки видимы внутри класса

class vector { // Private Data // Components double V[3]; public: //component labeling enumeration enum components {X, Y,Z}; // Constructors //Construct null vector () {} // Construct given three scalars vector (const double & Vx, const double& Vy, const double & Vz) { V[X]=Vx ; V[Y]=Vy ; V[Z]=Vz ; } //Destructor ~vector []; Пример класса на C++ в OF

Тестовые примеры в OpenFOAM. Обратный уступ. Р.В. Питц, Дж.У. Дейли. Горение в турбулентном слое смешения за уступом. Аэрокосмическая техника N7. с LES model. 1 equation.

Пример pitzDailyParallel simpleFoam]$ cd pitzDailyParallel/ pitzDailyParallel]$ ll total 12 drwxr-xr-x 2 cfd1 sm Dec 22 16:43 0 drwxr-xr-x 3 cfd1 sm Dec 22 16:43 constant drwxr-xr-x 2 cfd1 sm Dec 22 16:48 system pitzDailyParallel]$ pitzDailyParallel]$ cd system/ system]$ ll total 16 -rw-r cfd1 sm Dec 22 16:43 controlDict -rw-r cfd1 sm Dec 22 16:48 decomposeParDict -rw-r cfd1 sm Dec 22 16:43 fvSchemes -rw-r cfd1 sm Dec 22 16:43 fvSolution

system]$ more controlDict /* *- C++ -* *\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: | | \\/ M anipulation | | \* */ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application icoFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 5; deltaT 0.005; writeControl timeStep; writeInterval 100; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression uncompressed; timeFormat general; timePrecision 6; runTimeModifiable yes; Подготовка задачи. Требует времени!

|\* */ FoamFile{ version 2.0; format ascii; class dictionary; location "system"; object fvSolution;} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Solvers p { solver PCG; preconditioner DIC; tolerance 1e-06; relTol 0.01; } U { solver PBiCG; preconditioner DILU; tolerance 1e-05; relTol 0.1; } k { solver PBiCG; preconditioner DILU; tolerance 1e-05; relTol 0.1; } Файл fvSolutions. Выбор решателей для СЛАУ.

ddtSchemes { default steadyState;} gradSchemes { default Gauss linear; grad(p) Gauss linear; grad(U) Gauss linear;} divSchemes { default none; div(phi,U) Gauss upwind; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div(phi,R) Gauss upwind; div(R) Gauss linear; div(phi,nuTilda) Gauss upwind; div((nuEff*dev(grad(U).T()))) Gauss linear;} laplacianSchemes { default none; laplacian(nuEff,U) Gauss linear corrected; laplacian((1|A(U)),p) Gauss linear corrected; laplacian(DkEff,k) Gauss linear corrected; laplacian(DepsilonEff,epsilon) Gauss linear corrected; laplacian(DREff,R) Gauss linear corrected; laplacian(DnuTildaEff,nuTilda) Gauss linear corrected;} interpolationSchemes { default linear; interpolate(U) linear;} snGradSchemes { default corrected;} fluxRequired { default no; p ;} Файл fvSchemes. Определение схем дискретизации.

forwardStep]$ foamLog log Using: log : log database : /home/user1/OpenFOAM/OpenFOAM-1.6/bin/foamLog.db awk file :./logs/foamLog.awk files to :./logsExecuting: awk -f./logs/foamLog.awk log Generated XY files for: executionTime Rho rhoE FinalRes rhoEIters rhoFinalResrhoIters rhoUx FinalRes rhoUx Iters rhoUy FinalRes rhoUy ItersSeparator Time

Create time Create polyMesh for time = 0 Time = 0 Mesh stats points: faces: internal faces: cells: boundary patches: 3 point zones: 0 face zones: 1 cell zones: 1 Overall number of cells of each type: hexahedra: 0 prisms: 0 wedges: 0 pyramids: 0 tet wedges: 0 tetrahedra: polyhedra: 0 Checking topology... Boundary definition OK. Point usage OK. Upper triangular ordering OK. Face vertices OK. Number of regions: 1 (OK). Утилита checkMesh

Checking patch topology for multiply connected surfaces... Patch Faces Points Surface topology inlet ok (non-closed singly connected) outlet ok (non-closed singly connected) SOL ok (closed singly connected) Checking geometry... Overall domain bounding box ( ) ( ) Mesh (non-empty, non-wedge) directions (1 1 1) Mesh (non-empty) directions (1 1 1) Boundary openness ( e e e-19) OK. Max cell openness = e-16 OK. Max aspect ratio = OK. Minumum face area = e-07. Maximum face area = Face area magnitudes OK. Min volume = e-11. Max volume = Total volume = Cell volumes OK. Mesh non-orthogonality Max: average: Non-orthogonality check OK. Face pyramids OK. Max skewness = OK. Mesh OK. End Утилита checkMesh

Невязки Time = 0.2 Courant Number mean: max: DILUPBiCG: Solving for Ux, Initial residual = e-06, Final residual = e-06, No Iterations 0 DILUPBiCG: Solving for Uy, Initial residual = , Final residual = e-05, No Iterations 1 DILUPBiCG: Solving for Uz, Initial residual = , Final residual = e-05, No Iterations 1 DICPCG: Solving for p, Initial residual = , Final residual = e-05, No Iterations 25time step continuity errors : sum local = e-09, global = e-11, cumulative = e-06 DICPCG: Solving for p, Initial residual = , Final residual = 9.696e-07, No Iterations 56time step continuity errors : sum local = e-10, global = e-11, cumulative = e-06 DILUPBiCG: Solving for omega, Initial residual = e-06, Final residual = e-06, No Iterations 0 DILUPBiCG: Solving for k, Initial residual = e-05, Final residual = e-07, No Iterations 1 bounding k, min: max: average: ExecutionTime = s ClockTime = sEnd

Gnuplot. Скрипты. set logscale y set title "Residuals set ylabel 'Residual set xlabel 'Iteration plot "< cat log | grep 'Solving for Ux' | cut -d' ' -f9 | tr -d ','" title 'Ux' with lines,\ "< cat log | grep 'Solving for Uy' | cut -d' ' -f9 | tr -d ','" title 'Uy' with lines,\ "< cat log | grep 'Solving for Uz' | cut -d' ' -f9 | tr -d ','" title 'Uz' with lines,\ "< cat log | grep 'Solving for omega' | cut -d' ' -f9 | tr -d ','" title 'omega' with lines,\ "< cat log | grep 'Solving for k' | cut -d' ' -f9 | tr -d ','" title 'k' with lines,\ "< cat log | grep 'Solving for p' | cut -d' ' -f9 | tr -d ','" title 'p' with lines pause 1 reread set yr [0:1] set xr [0:0.01] set key bottom right set xlabel "Simulationtime [s] set ylabel "forceCoeff [-] set title "Plot of forceCoeffs over simulationtime set gridplot "./forceCoeffs/0.0005/forceCoeffs. dat" using ($1):($3) with lines title "lift_coeff",\ "./forceCoeffs/0.0005/forceCoeffs. dat" using ($1):($2) with lines title "drag_coeff pause 1 reread

Построение графиков с помощью gnuplot Расчет выполнен с pisoFoam, SA модель турбулентности Невязки для Ux,Uy,Uz, p, nuTilda

Time = 0.2 Reading field U Reading/calculating face flux field phi Selecting incompressible transport model Newtonian Selecting RAS turbulence model kOmegaSST kOmegaSSTCoeffs { alphaK ; alphaK2 1; alphaOmega1 0.5; alphaOmega ; gamma ; gamma ; beta ; beta ; betaStar 0.09; a1 0.31; c1 10; } Patch 2 named SOL y+ : min: max: average: Writing yPlus to field yPlus End Утилита yPlusRAS

Запуск задач pitzDaily на счет в параллельном режиме - Копирование примера и файла $cp –r pitzDaily $FOAM_RUN/pitzDailyParallel $cp pitzDailyExptInlet/system/decomposePartDict pitzDailyParallel/system -Настройка файла system/decomposeParDict -Выбор метода декомпозиции области -Сформировать файл machines - Использовать утилиты decomposePar, reconstructPar $ decomposePar cavityParallel]$ more machines n3 cpu=8 n4 cpu=8 $ mpirun --hostfile machines -np 16 icoFoam -parallel > log & $ reconstructPar

system]$ more decomposeParDict /* *- C++ -* *\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 1.6 | | \\ / A nd | Web: | | \\/ M anipulation | | \* */ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object decomposeParDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // numberOfSubdomains 4; method hierarchical; simpleCoeffs { n ( ); delta 0.001; } hierarchicalCoeffs { n ( ); delta 0.001; order xyz; } metisCoeffs { } manualCoeffs { dataFile ""; } distributed no; roots ( ); // ************************************************************************* // Декомпозиция расчетной области. Выбор модели.