Учебный курс по открытым пакетам

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

Upload: ariane

Post on 11-Jan-2016

114 views

Category:

Documents


11 download

DESCRIPTION

Учебный курс по открытым пакетам. М.Крапошин, О. Самоваров, С.Стрижак. Задачи МСС. Автомобилестроение. Нефтегазовая промышленность. Энергомашиностроение. Гидродинамика судна. Гидравлика русла. Двигателестроение. Климат контроль. Ядерная энергетика. Биомеханика. Космонавтика. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Учебный курс по открытым пакетам

Учебный курс по открытым пакетам

М.Крапошин, О. Самоваров, С.Стрижак

Page 2: Учебный курс по открытым пакетам

Задачи МСС

Автомобилестроение

Гидродинамика судна Двигателестроение

Космонавтика

Энергомашиностроение

Гидравлика русла

Климат контроль Ядерная энергетика Биомеханика

Нефтегазовая промышленность

Page 3: Учебный курс по открытым пакетам

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

Page 4: Учебный курс по открытым пакетам

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

Page 5: Учебный курс по открытым пакетам

ОpenFOAM — свободно распространяемое программное обеспечение для проведения численных расчетов.

OpenFOAM — объектно-ориентированная платформа,реализованная на языке программирования С++.

ОpenFOAM – перспективное и динамично развивающиеся открытоепрограммное обеспечение для моделирования задач механикисплошных сред. В его разработке и развитии принимают участиедесятки организаций и сотни разработчиков по всему миру.

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

Всего около 3000 пользователей в мире.

Разработан в Imperial College of Science. London. UK. 1991-2003

Открытие кода OpenFOAM в 2004 г. на условиях GPLВходит в состав CAE LinuxФорум на www.cfd-online.com

Page 6: Учебный курс по открытым пакетам

Основные возможностипакета 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. ;* Поддержка структурированной/неструктурированной сетки;* Импорт сеток из различных коммерческих и открытых пакетов.

Page 7: Учебный курс по открытым пакетам

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 – 631

• - Ferziger J.H., Peric M., Computational Methods for Fluid Dynamics. Springer-Verlag, Berlin et al.: Springer, 2002. – 423p

• • Дальнейшая разработка компанией OpenCFD, UK http://www.openfoam.com• Компания OpenCFD. Ltd. UK проводит консалтинг и обучение по всему миру• Альтернативная версия “extend”. Разрабатывается научным сообществом.• Конференции пользователей:• 1 конференция - Загреб 2006 4 конференция – Монреаль 2009 • 2 конференция - Загреб 2007 5 конференция– Гетеборг 2010• 3 конференция - Милан 2008 6 конференция – Penn State University 2011•• Летняя школа для аспирантов в Загребе 2008,2009,2010. Подготовлено около 20

диссертаций. Выполняются магистерские работы.• Open Source Conferences при участии OpenCFD, Ltd - 2007,2008, 2009, 2010

Page 8: Учебный курс по открытым пакетам

Различные версии OpenFoam

• OpenFoam-1.7 www.openfoam.org. Разработчик OpenCFD Ltd.

• OpeFoam-1.7.x – исправленная версия с патчами. www.openfoam.org. Разработчик OpenCFD Ltd.

• http://Git – git.or.cz

• OpenFOAM-1.6-dev. Расширенная версия, разрабатывается H.Jasak. http://openfoam-extend.svn.sourceforge.net/

• OpenFOAM-1.6-extend. Разрабатывается пользователями. http://openfoam-extend.svn.sourceforge.net/

Page 9: Учебный курс по открытым пакетам

OpenFOAM (Field Operation and Manipulation)

Открытое «ядро» и доступность кода

• Установка на LINUX (RHEL,SUSE,OpenSuse, Dеbian, Ubuntu, CentOS, CAELinux)

• Использование возможностей объектно-ориентированного программирования на C++;• В программном коде используется базовая единица: класс.• Основные исследуемые объекты: расчетная область, преобразования в тензорной и линейной

алгебре, решатели, математические операции для УРЧП (дискретизация, дифференцирование, интегрирование, интерполяция);

• Представление уравнений МСС с помощью естественного языка программирования;• Решение уравнений эллиптического, параболического, гиперболического типа;• Разбиение кода на небольшие самостоятельные единицы;• Совместимость с доступными открытыми кодами и компиляторами (gcc,python);• Возможность разработки собственных модулей (граничные условия, библиотеки модели среды,

решатели, утилиты).• Около 1 миллиона строк исходного кода

Page 10: Учебный курс по открытым пакетам

Инсталляция 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

Настройка окружения:[user1@WorkStation ~]$ cat .bashrc # .bashrc# Source global definitionsif [ -f /etc/bashrc ]; then . /etc/bashrcfi# User specific aliases and functionsexport FOAM_INST_DIR=/home/user1/OpenFOAMfoamDotFile=$FOAM_INST_DIR/OpenFOAM-1.6/etc/bashrcif [ -f $foamDotFile ]; then . $foamDotFilefi

Page 11: Учебный курс по открытым пакетам

[cfd1@master ~]$ foamInstallationTestExecuting /home/cfd1/OpenFOAM/OpenFOAM-1.6/bin/foamInstallationTest:Checking basic setup...-------------------------------------------------------------------------------Shell: bashHost: master.bmstu.ruOS: Linux version 2.6.18-92.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

Page 12: Учебный курс по открытым пакетам

Структура OpenFOAM

* applications: исходные и исполняемые файлы

- Solvers

- Utilities

- Bin

- Test

* bin: базовые исполняемые скрипты

* doc: pdf и Doxygen файлы

- Doxygen

- Guides-a4

* lib: откомпилированные библиотеки

* src – исходные файлы

* test – тестовые файлы

* tutorials – примеры

* Wmakes – утилиты для компиляции

Page 13: Учебный курс по открытым пакетам

Некоторые стандартные решатели в 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 only12) dnsFoam – прямое численное моделирование изотропной турбулентности

Page 14: Учебный курс по открытым пакетам

Некоторые стандартные решатели в 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

Page 15: Учебный курс по открытым пакетам

Схемы дискретизации в 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 различных комбинаций расчетных схем

Page 16: Учебный курс по открытым пакетам

Схемы дискретизации для неструктурированных сеток

- Центральная схема. Второй порядок точности, но дает осцилляции

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

Page 17: Учебный курс по открытым пакетам

Схема Gamma

1f f f gammaCD UDe 0 1

Page 18: Учебный курс по открытым пакетам

Решатели СЛАУ

Для симметричных матриц:

- метод сопряженных градиентов с предобуславливанием типа неполной факторизации; - ICCG (метод неполного разложения Холецкого); - метод сопряженных градиентов с диагональным предобуславливанием – DCG.- алгебраический многосеточный метод – GAMG (для p).

Для несимметричных матриц:

- метод био-сопряженных градиентов с предобуславливанием - ICCG (метод неполного разложения Холецкого); - метод Гаусса-Зейделя.

Page 19: Учебный курс по открытым пакетам

Описание метода сопряжённых градиентов

0 0r f Ax

0 1 0z d r

1 1 1

1 1

,

,

k k

k k k

d r r

Az z

1 1k k kkx x z

1 1k k kkr r Az

1

1 1 1

,

,

k k

k k k

d r r

d r r

1 1k k kkz d r z

Будем строить следующий вычислительный алгоритм МСГ:

Далее для k=1,2,… производятся следующие вычисления:

Постановка задачи

Решение систем линейных алгебраических уравнений – классическая задача вычислительных методов. Особый интерес представляют матрицы разреженного вида, которые получаются в результате конечно-разностной,конечно-элементной или конечно-объемной аппроксимации.

Такие матрицы приходится хранить в каком-то особом формате, так как даже при аппроксимации небольших задач размерность матрицы системы становится непосильной задачей для современных параллельных компьютеров.

В рамках работы остановимся на решении СЛАУ итерационными методами, где основной операцией является умножение матрицы на вектор.

В качестве метода решения рассмотрим метод сопряжённых градиентов с диагональным предобуславливанием для ускорения сходимости системы уравнений.

В качестве аппроксимации будем рассматривать метод конечных объемов.

Выход из итерационного процесса будем осуществлять по достижении большого количества итераций или по достижению малости относительной невязки:

r

f

Page 20: Учебный курс по открытым пакетам

Основные утилиты

• foamInstallationTest – проверка инсталляции OF• checkMesh -allTopology –all Geometry – проверка сетки• mirrorMesh – построение зеркальной сетки • makeAxialMesh -axis ... -wedge ... - • foamLog log – скрипт, использующий grep, awk , sed, для извлечения данных из log

файла. • foamJob <solver> - утилита для контроля заданий• 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 – утилита для построения сеток на базе многогранников

Page 21: Учебный курс по открытым пакетам

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

Название ГУ Описание

Граничные условия, дочерние (derived) по отношению к смешанному

fixedValue ГУ 1-го рода. Необходимо задать фиксированное значение на входе. Условие Дирихле.

fixedGradient ГУ 2-го рода. Необходимо задать градиент величины на границе.

zeroGradient ГУ 2-го рода. Нулевой градиент на границе. Условие Неймана.

inletOutlet действует как ГУ 1-ого рода, если массовый (объемный) поток входит в расчетную область и как ГУ 2-ого рода, если поток выходит из расчетной области.

Иными словами, zeroGradient если жидкость выходит из расчетной области и фиксированное значение (inletValue) если входит

outletInlet обратно inletOutletИными словами, zeroGradient если жидкость входит в расчетную область и фиксированное

значение (outletValue) если выходит из нее

Mixed, symmentry plane, periodic and cyclic

freestream, frestreamPressure

Смешанное условие, условие симметрии, переодическое и циклическое условие

Условие свободного потока

Page 22: Учебный курс по открытым пакетам

Название ГУ Описание

Граничные условия, дочерние (derived) по отношению к смешанному

rotation ГУ 1-го рода. Необходимо задать значение вращения, данные вокруг оси. Условие Дирихле.

profile1DfixedValue ГУ 1-го рода. Необходимо задать файл с данными. Можно использовать для закрутки.

activeBaffleVelocity Combines cyclic and wall patches so that the flow throught the patch can be controlled

buoyantPressureFvPatchScalarField

New Buoyancy pressure boundary condition now supports =pd= to =p=

uniformDensityHydrostaticPressure

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

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

Page 23: Учебный курс по открытым пакетам

1) kEpsilon Standard high-                  model

2) kOmega Standard high-                   model

3) kOmegaSST            -SST model

4) RNGkEpsilon RNG            model

5) NonlinearKEShih Non-linear Shih            model

6) LienCubicKE Lien cubic            model

7) qZeta            model

8) LaunderSharmaKE Launder-Sharma low-                  model

9) LamBremhorstKE Lam-Bremhorst low-                  model

10) LienCubicKELowRe Lien cubic low-                  model

11)LienLeschzinerLowRe Lien-Leschziner low-                  model

12) LRR Launder-Reece-Rodi RSTM

13) LaunderGibsonRSTM Launder-Gibson RSTM with wall-reflection terms

14) realizableKE Realizable            model

15) SpalartAllmaras Spalart-Allmaras 1-eqn mixing-length model

Модели турбулентности для несжимаемых течений

Page 24: Учебный курс по открытым пакетам

Модели пристеночных функций

Для различных величин:

– nut: nutWallFunction,

– mut: muWallFunction,

– epsilon: epsilonWallFunction,

– omega: omegaWallFunction,

– k, q, R: kqRWallFunction.

– nut – nutSpalartAllmarasWallFunction.

Для температуры:

– alphat: alphatWallFunction.

Page 25: Учебный курс по открытым пакетам

1) Smagorinsky Smagorinsky model

2) Smagorinsky2 Smagorinsky model with 3-D filter

3) dynSmagorinsky Dynamic Smagorinsky

4) scaleSimilarity Scale similarity model

5) mixedSmagorinsky Mixed Smagorinsky/scale similarity model

6) dynMixedSmagorinsky Dynamic mixed Smagorinsky/scale similarity model

7) kOmegaSST            -SST scale adaptive simulation (SAS) model

8) oneEqEddy   -equation eddy-viscosity model

9) dynOneEqEddy Dynamic   -equation eddy-viscosity model

10) locDynOneEqEddy Localised dynamic   -equation eddy-viscosity model

11) spectEddyVisc Spectral eddy viscosity model

12) LRDDiffStress LRR differential stress model

13) DeardorffDiffStress Deardorff differential stress model

14) SpalartAllmaras Spalart-Allmaras model

15) SpalartAllmarasDDES Spalart-Allmaras delayed detached eddy simulation (DDES) model

16) SpalartAllmarasIDDES Spalart-Allmaras improved DDES (IDDES) model

Модели турбулентности для LES

Page 26: Учебный курс по открытым пакетам

LES параметры

LES deltasPrandtlDelta Prandtl delta

cubeRootVolDelta

Cube root of cell volume delta

smoothDelta Smoothing of delta

LES filterslaplaceFilter Laplace filters

simpleFilter Simple filter

anisotropicFilter

Anisotropic filter

Различные граничные условия для входа потока:Random fluctuations

Литература. Волков К.Н., Емельянов В.Н.. Моделирование крупных вихрей в расчетах турбулентных течений. – М.: Физматлит. 2008. – 368 с.

Page 27: Учебный курс по открытым пакетам

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

Page 28: Учебный курс по открытым пакетам

Размерность физических величин

No. Характеристика Единица измерения Символ

1 Масса килограмм Кг

2 Длина Метр М

3 Время секунда С

4 Температура Кельвин К

5 Количество вещества моль Моль

6 Ток Ампер A

7 Сила света кандела Кд

Page 29: Учебный курс по открытым пакетам

Утилиты для работкой с сеткой

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

ExtrudeMesh

- Extrude mesh from existing patch (by default outwards facing normals; optional flips faces) or from patch read from file

snappyHexMesh

- Automatic split hex mesher. Refines and snaps to surface

Page 30: Учебный курс по открытым пакетам

Трансляторы результатов расчета

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

Page 31: Учебный курс по открытым пакетам

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

Page 32: Учебный курс по открытым пакетам

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

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

Page 33: Учебный курс по открытым пакетам

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

Page 34: Учебный курс по открытым пакетам

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

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

• Вычислительная область разбивается на конечное число непересекающихся контрольных объемов произвольной многогранной формы

• Структура данных:

– Вершины

– Ребра (соединяют вершины)

– Грани (замкнутый многоугольник из ребер)

– Ячейки (объемы ограниченные гранями)

Page 35: Учебный курс по открытым пакетам

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

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

– Аппроксимация интегралов по поверхности, объему и времени

– Интерполяция в точках, отличных от расчетных (центры ячеек)

– Численное дифференцирование (аппроксимация градиентов)

• Простейшие аппроксимации второго порядка точности (применимые для контрольного объема произвольной формы):

– Метод средней точки для интегралов (Midpoint rule),– Линейная интерполяция,– Центральные разности (линейные функции формы).

Page 36: Учебный курс по открытым пакетам

Метод решения

• Конвективные потоки требуют линеаризации:

• Отложенная коррекция (“deferred correction”) используется для упрощения применения схем высокого порядка, для неортогональных сеток и т.д.

• Градиенты аппроксимируются с помощью формулы Гаусса-Остроградского или с помощью полиномов

Page 37: Учебный курс по открытым пакетам

Метод решения

• Для каждой ячейки получается одно алгебраическое уравнение, связывающее значение переменной в центре ячейки с переменными в соседних ячейках

• Для всей вычислительной области получается система линейных уравнений

• Используется связанный (“coupled”; все переменные образуют один вектор неизвестных) или последовательный (“segregated”; уравнения для каждой переменной решаются по очереди) метод решения

• В последовательном методе решения для связи скорости, давления и плотности используются алгоритмы PISO или SIMPLE

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

Page 38: Учебный курс по открытым пакетам

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

Page 39: Учебный курс по открытым пакетам

МКО. Основы метода. Расчетная ячейка

• Объем ячейки – Vp• Узел P располагается в центре ячейки xp • Для каждой ячейки существует ячейка-сосед, граничащая с каждой

стороной. Соседняя ячейка – N• Центр стороны – f. Используется теорема о среднем• Вектор к стороне f определяется как Df=PN• Поверхностный вектор Sf равен величине площади стороны• Sf рассчитывается с помощью интеграла• Центр ячейки (узел P) должен находится внутри ячейки• Объем ячейки и площадь стороны рассчитываются путем

декомпозиции на пирамиды и треугольники • Типы сторон в сетке: внутренние и граничные• Дискретизация базируется на интегральной форме транспортного

уравнения для каждой ячейки

Литература. Патанкар С. Численные методы решения задач теплообмена и динамики жидкости. М., Энергоатомиздат, 1984, 152 с.

Page 40: Учебный курс по открытым пакетам

МКО. Основы метода.

• Операции с поверхностными и векторными интегралы• Выбор P и f обеспечивает второй порядок точности• Дискретизация второго порядка для переменной Ф по пространству• Дискретизация второго порядка для переменной Ф по времени• Наличие специальной функции для FVM “shape function”• Поддержка многогранных ячеек• Нет спецификации на тип ячеек (тетраэдры, призмы, пятигранники и

т.д. )• Использование теоремы Гаусса для аппроксимации объемных

интегралов над дивергенцией и градиент операторами. • Дискретизация производной по времени, конвективного члена,

оператора градиент, диффузионного члена, источникового члена

Литература Ferziger J.H., Peric M., Computational Methods for Fluid Dynamics. Springer-Verlag, Berlin et al.: Springer, 2002. – 423p

Page 41: Учебный курс по открытым пакетам

Основы МКО

• Как структура сетки влияет на алгоритм?• Фf зависит от значений в узлах P, N. Расчет

поверхностного интеграла?• Структурированная сетка: Восток, Запад, Север,

Юг. Нумерация индексов: n+1, n-1, n+colDim, n-colDim

• Блочно-структурированная и адаптивная сетки : 2 опции

• Сетка на базе тетраэдров: для каждого тетраэдра сохранить 4 индекса соседних ячеек для 4 сторон в нужном порядке

• Неструктурированная сетка: забыть о блоках, для каждой ячейки хранить индексы соседних ячеек

• Смешанная сетка: тетраэдры имеют только 4 соседа, “кирпич” имеет шесть. 2 опции.

• Сетка на базе многогранников:

Page 42: Учебный курс по открытым пакетам

МКО. Основы метода.

• Процедура интерполяции для получения значения Фf для конвективного слагаемого

• Фf зависит от двух узлов: P и N. Решение в узле P зависит от N, и наоборот. Мы получаем матрицу с недиогональными коэффициентами

• Центральная схема. Второй порядок точности, но осцилляции• Схемы высокого порядка, учитывающие транспортные свойства

течения. Информация поступает из области вверх по потоку. Отсутствие осцилляций. Но могут быть привнесены неточности расчета

• Существует большое количество точных схем: TVD, NVD семейство.

Page 43: Учебный курс по открытым пакетам

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

Page 44: Учебный курс по открытым пакетам

Основные классы в OpenFoam

• Классы для тензорного исчисления : scalarField, vectorField, tensorField.

• Класс – space & time

• Классы для геометрических тензорных полей: volScalarField, volVectorField, volTensorField.

• Класс tensor-derivative: finiteVolumeCalculus (fvc) - дифференцирование, finiteVolumeMethod (fvm)- дискретизация.

• Классы для дифференциальных уравнений: fvMatrixScalar, fvMatrixVector

• Класс для геометрических полей:

• fvMesh – поддерживает FVM дискретизацию, polyMesh – многогранные сетки (комбинация всех точек, сторон, ячеек, граничных сторон);

• dynamicFvMesh , dynamicMotionSolverFvMesh - динамические сетки;

• Класс для граничных условий: patchField

• Класс для матриц: lduMatrix

Page 45: Учебный курс по открытым пакетам

Пример класса на C++

class name {

public: declaration of public member functions and member data

private:declaration of hidden member functions and member data

};

public признаки видимы снаружи классаprivate признаки видимы внутри класса

Page 46: Учебный курс по открытым пакетам

class vector{

// Private Data// Componentsdouble V[3];

public://component labeling enumerationenum components {X, Y,Z};

// Constructors//Construct nullvector () {}

// Construct given three scalarsvector (const double & Vx, const double& Vy, const double & Vz)

{V[X]=Vx ; V[Y]=Vy ; V[Z]=Vz ;

}//Destructor~vector [];

Пример класса на C++ в OF

Page 47: Учебный курс по открытым пакетам

Тестовые примеры в OpenFOAM. Обратный уступ.

Р.В. Питц, Дж.У. Дейли. Горение в турбулентном слое смешения за уступом. Аэрокосмическая техника. 1984. N7. с.74-82

LES model. 1 equation.

Page 48: Учебный курс по открытым пакетам

Пример pitzDailyParallel

[cfd1@master simpleFoam]$ cd pitzDailyParallel/[cfd1@master pitzDailyParallel]$ lltotal 12drwxr-xr-x 2 cfd1 sm3 4096 Dec 22 16:43 0drwxr-xr-x 3 cfd1 sm3 4096 Dec 22 16:43 constantdrwxr-xr-x 2 cfd1 sm3 4096 Dec 22 16:48 system[cfd1@master pitzDailyParallel]$[cfd1@master pitzDailyParallel]$ cd system/[cfd1@master system]$ lltotal 16-rw-r----- 1 cfd1 sm3 1222 Dec 22 16:43 controlDict-rw-r----- 1 cfd1 sm3 1206 Dec 22 16:48 decomposeParDict-rw-r----- 1 cfd1 sm3 1877 Dec 22 16:43 fvSchemes-rw-r----- 1 cfd1 sm3 1940 Dec 22 16:43 fvSolution

Page 49: Учебный курс по открытым пакетам

[cfd1@master system]$ more controlDict/*--------------------------------*- C++ -*----------------------------------*\| ========= | || \\ / F ield | OpenFOAM: The Open Source CFD Toolbox || \\ / O peration | Version: 1.6 || \\ / A nd | Web: www.OpenFOAM.org || \\/ 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;

Подготовка задачи. Требует времени!

Page 50: Учебный курс по открытым пакетам

|\*---------------------------------------------------------------------------*/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. Выбор решателей для СЛАУ.

Page 51: Учебный курс по открытым пакетам

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. Определение схем дискретизации.

Page 52: Учебный курс по открытым пакетам

[user1@SM3 forwardStep]$ foamLog logUsing: 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 logGenerated XY files for:executionTimeRhorhoErhoEFinalResrhoEItersrhoFinalResrhoItersrhoUxrhoUxFinalResrhoUxItersrhoUyrhoUyFinalResrhoUyItersSeparatorTime

Page 53: Учебный курс по открытым пакетам

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

Утилита checkMesh

Page 54: Учебный курс по открытым пакетам

Checking patch topology for multiply connected surfaces ... Patch Faces Points Surface topology inlet 412 232 ok (non-closed singly connected) outlet 5736 2894 ok (non-closed singly connected) SOL 17448 8726 ok (closed singly connected) Checking geometry... Overall domain bounding box (-2 -0.679981 -0.679997) (2 0.68 0.68) Mesh (non-empty, non-wedge) directions (1 1 1) Mesh (non-empty) directions (1 1 1) Boundary openness (-2.18538e-19 4.49199e-19 -2.47128e-19) OK. Max cell openness = 1.65939e-16 OK. Max aspect ratio = 11.0456 OK. Minumum face area = 1.26182e-07. Maximum face area = 0.00694694. Face area magnitudes OK. Min volume = 5.42529e-11. Max volume = 0.000201659. Total volume = 5.79848. Cell volumes OK. Mesh non-orthogonality Max: 61.0149 average: 13.3286 Non-orthogonality check OK. Face pyramids OK. Max skewness = 0.913121 OK.Mesh OK.End

Утилита checkMesh

Page 55: Учебный курс по открытым пакетам

Невязки

Time = 0.2

Courant Number mean: 0.100721 max: 13.8157DILUPBiCG: Solving for Ux, Initial residual = 2.46858e-06, Final residual = 2.46858e-06, No Iterations 0DILUPBiCG: Solving for Uy, Initial residual = 0.000207349, Final residual = 1.28247e-05, No Iterations 1DILUPBiCG: Solving for Uz, Initial residual = 0.000175251, Final residual = 1.0187e-05, No Iterations 1DICPCG: Solving for p, Initial residual = 0.00113702, Final residual = 1.11777e-05, No Iterations 25time step continuity errors : sum local = 8.16859e-09, global = -2.35699e-11, cumulative = 1.34233e-06DICPCG: Solving for p, Initial residual = 0.000384734, Final residual = 9.696e-07, No Iterations 56time step continuity errors : sum local = 7.08705e-10, global = -5.94421e-11, cumulative = 1.34227e-06DILUPBiCG: Solving for omega, Initial residual = 9.80641e-06, Final residual = 9.80641e-06, No Iterations 0DILUPBiCG: Solving for k, Initial residual = 2.54185e-05, Final residual = 6.81117e-07, No Iterations 1bounding k, min: -3.21164 max: 256.226 average: 5.59675ExecutionTime = 11256.6 s ClockTime = 11294 sEnd

Page 56: Учебный курс по открытым пакетам

Gnuplot. Скрипты.

set logscale yset 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 linespause 1reread

set yr [0:1]set xr [0:0.01]set key bottom rightset 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 1reread

Page 57: Учебный курс по открытым пакетам

Построение графиков с помощью gnuplot

Расчет выполнен с pisoFoam, SA модель турбулентности

Невязки для Ux,Uy,Uz, p, nuTilda

Page 58: Учебный курс по открытым пакетам

Time = 0.2Reading field UReading/calculating face flux field phiSelecting incompressible transport model NewtonianSelecting RAS turbulence model kOmegaSSTkOmegaSSTCoeffs{ alphaK1 0.85034; alphaK2 1; alphaOmega1 0.5; alphaOmega2 0.85616; gamma1 0.5532; gamma2 0.4403; beta1 0.075; beta2 0.0828; betaStar 0.09; a1 0.31; c1 10;}Patch 2 named SOL y+ : min: 0.282185 max: 200.545 average: 19.758Writing yPlus to field yPlusEnd

Утилита ‘yPlusRAS’

Page 59: Учебный курс по открытым пакетам

Запуск задач pitzDaily на счет в параллельном режиме

- Копирование примера и файла

$cp –r pitzDaily $FOAM_RUN/pitzDailyParallel $cp pitzDailyExptInlet/system/decomposePartDict pitzDailyParallel/system

- Настройка файла system/decomposeParDict- Выбор метода декомпозиции области- Сформировать файл ‘machines’- Использовать утилиты decomposePar, reconstructPar

$ decomposePar[cfd1@master cavityParallel]$ more machinesn3 cpu=8n4 cpu=8

$ mpirun --hostfile machines -np 16 icoFoam -parallel > log &$ reconstructPar

Page 60: Учебный курс по открытым пакетам

[cfd1@master system]$ more decomposeParDict/*--------------------------------*- C++ -*----------------------------------*\| ========= | || \\ / F ield | OpenFOAM: The Open Source CFD Toolbox || \\ / O peration | Version: 1.6 || \\ / A nd | Web: www.OpenFOAM.org || \\/ M anipulation | |\*---------------------------------------------------------------------------*/FoamFile{ version 2.0; format ascii; class dictionary; location "system"; object decomposeParDict;}// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //numberOfSubdomains 4;method hierarchical;simpleCoeffs{ n ( 2 1 1 ); delta 0.001;}hierarchicalCoeffs{ n ( 2 2 1 ); delta 0.001; order xyz;}metisCoeffs{}manualCoeffs{ dataFile "";}distributed no;roots ( );// ************************************************************************* //

Декомпозиция расчетной области. Выбор модели.