Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемunihub.ru
1 Учебный курс по открытым пакетам М.Крапошин, О. Самоваров, С.Стрижак
2 Задачи МСС Автомобилестроение Гидродинамика судна Двигателестроение Космонавтика Энергомашиностроение Гидравлика русла Климат контрольЯдерная энергетикаБиомеханика Нефтегазовая промышленность
3 Свободное Программное Обеспечение для задач МСС
4 Основные этапы и модули при решении задач МСС
5 ОpenFOAM свободно распространяемое программное обеспечение для проведения численных расчетов. OpenFOAM объектно-ориентированная платформа, реализованная на языке программирования С++. ОpenFOAM – перспективное и динамично развивающиеся открытое программное обеспечение для моделирования задач механики сплошных сред. В его разработке и развитии принимают участие десятки организаций и сотни разработчиков по всему миру. OpenFOAM – обладает большой функциональностью и удовлетворяет всем основным требованиями, предъявляемым к современному программному обеспечению для расчета промышленных задач Всего около 3000 пользователей в мире. Разработан в Imperial College of Science. London. UK Открытие кода OpenFOAM в 2004 г. на условиях GPL Входит в состав CAE Linux Форум на
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. ; * Поддержка структурированной/неструктурированной сетки; * Импорт сеток из различных коммерческих и открытых пакетов.
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 – 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
8 Различные версии OpenFoam OpenFoam Разработчик OpenCFD Ltd. OpeFoam-1.7.x – исправленная версия с патчами. Разработчик OpenCFD Ltd. – git.or.cz OpenFOAM-1.6-dev. Расширенная версия, разрабатывается H.Jasak. OpenFOAM-1.6-extend. Разрабатывается пользователями.
9 OpenFOAM (Field Operation and Manipulation) Открытое «ядро» и доступность кода Установка на LINUX (RHEL,SUSE,OpenSuse, Dеbian, Ubuntu, CentOS, CAELinux) Использование возможностей объектно-ориентированного программирования на C++; В программном коде используется базовая единица: класс. Основные исследуемые объекты: расчетная область, преобразования в тензорной и линейной алгебре, решатели, математические операции для УРЧП (дискретизация, дифференцирование, интегрирование, интерполяция); Представление уравнений МСС с помощью естественного языка программирования; Решение уравнений эллиптического, параболического, гиперболического типа; Разбиение кода на небольшие самостоятельные единицы; Совместимость с доступными открытыми кодами и компиляторами (gcc,python); Возможность разработки собственных модулей (граничные условия, библиотеки модели среды, решатели, утилиты). Около 1 миллиона строк исходного кода
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 Настройка окружения: ~]$ 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
11 ~]$ 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
12 Структура OpenFOAM * applications: исходные и исполняемые файлы - Solvers - Utilities - Bin - Test * bin: базовые исполняемые скрипты *doc: pdf и Doxygen файлы - Doxygen - Guides-a4 *lib: откомпилированные библиотеки * src – исходные файлы *test – тестовые файлы * tutorials – примеры * Wmakes – утилиты для компиляции
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 only 12) dnsFoam – прямое численное моделирование изотропной турбулентности
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
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 различных комбинаций расчетных схем
16 Схемы дискретизации для неструктурированных сеток - Центральная схема. Второй порядок точности, но дает осцилляции - Схемы высокого порядка, учитывающие транспортные свойства течения Информация поступает из области вверх по потоку. Отсутствие осцилляций. Но могут быть привнесены неточности расчета. - Существует большое количество точных схем: TVD, NVD семейство.
17 Схема Gamma
18 Решатели СЛАУ Для симметричных матриц: - метод сопряженных градиентов с предобуславливанием типа неполной факторизации; - ICCG (метод неполного разложения Холецкого); - метод сопряженных градиентов с диагональным предобуславливанием – DCG. - алгебраический многосеточный метод – GAMG (для p). Для несимметричных матриц: - метод био-сопряженных градиентов с предобуславливанием - ICCG (метод неполного разложения Холецкого); - метод Гаусса-Зейделя.
19 Описание метода сопряжённых градиентов Будем строить следующий вычислительный алгоритм МСГ: Далее для k=1,2,… производятся следующие вычисления: Постановка задачи Решение систем линейных алгебраических уравнений – классическая задача вычислительных методов. Особый интерес представляют матрицы разреженного вида, которые получаются в результате конечно- разностной,конечно-элементной или конечно- объемной аппроксимации. Такие матрицы приходится хранить в каком-то особом формате, так как даже при аппроксимации небольших задач размерность матрицы системы становится непосильной задачей для современных параллельных компьютеров. В рамках работы остановимся на решении СЛАУ итерационными методами, где основной операцией является умножение матрицы на вектор. В качестве метода решения рассмотрим метод сопряжённых градиентов с диагональным предобуславливанием для ускорения сходимости системы уравнений. В качестве аппроксимации будем рассматривать метод конечных объемов. Выход из итерационного процесса будем осуществлять по достижении большого количества итераций или по достижению малости относительной невязки:
20 Основные утилиты 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 – утилита для построения сеток на базе многогранников
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 Смешанное условие, условие симметрии, переодическое и циклическое условие Условие свободного потока
22 Название ГУОписание Граничные условия, дочерние (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 Примеры граничных условий
23 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 Модели турбулентности для несжимаемых течений
24 Модели пристеночных функций Для различных величин: –nut: nutWallFunction, –mut: muWallFunction, –epsilon: epsilonWallFunction, –omega: omegaWallFunction, –k, q, R: kqRWallFunction. –nut – nutSpalartAllmarasWallFunction. Для температуры: –alphat: alphatWallFunction.
25 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
26 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 с.
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
28 Размерность физических величин No.ХарактеристикаЕдиница измеренияСимвол 1МассакилограммКг 2ДлинаМетрМ 3ВремясекундаС 4ТемператураКельвинК 5Количество веществамольМоль 6ТокАмперA 7Сила светаканделаКд
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 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
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
31 Пример структуры директории задачи
32 Основные уравнения Основные уравнения: законы сохранения массы, импульса, скаляров и объема в интегральной форме (справедливы для любой сплошной среды – различаются только замыкающие законы):
33 Метод контрольного объема в OpenFOAM
34 Метод конечных объемов, I Метод конечных объемов (FVM) используется для аппроксимации законов сохранения Вычислительная область разбивается на конечное число непересекающихся контрольных объемов произвольной многогранной формы Структура данных: –Вершины –Ребра (соединяют вершины) –Грани (замкнутый многоугольник из ребер) –Ячейки (объемы ограниченные гранями)
35 Метод конечных объемов, II В методе конечных объемов используется три уровня аппроксимации: –Аппроксимация интегралов по поверхности, объему и времени –Интерполяция в точках, отличных от расчетных (центры ячеек) –Численное дифференцирование (аппроксимация градиентов) Простейшие аппроксимации второго порядка точности (применимые для контрольного объема произвольной формы): –Метод средней точки для интегралов (Midpoint rule), –Линейная интерполяция, –Центральные разности (линейные функции формы).
36 Метод решения Конвективные потоки требуют линеаризации: Отложенная коррекция (deferred correction) используется для упрощения применения схем высокого порядка, для неортогональных сеток и т.д. Градиенты аппроксимируются с помощью формулы Гаусса- Остроградского или с помощью полиномов
37 Метод решения Для каждой ячейки получается одно алгебраическое уравнение, связывающее значение переменной в центре ячейки с переменными в соседних ячейках Для всей вычислительной области получается система линейных уравнений Используется связанный (coupled; все переменные образуют один вектор неизвестных) или последовательный (segregated; уравнения для каждой переменной решаются по очереди) метод решения В последовательном методе решения для связи скорости, давления и плотности используются алгоритмы PISO или SIMPLE Системы линейных уравнений решаются либо методом сопряженных градиентов, либо алгебраическим многосеточным методом
38 МКО. Многогранники
39 МКО. Основы метода. Расчетная ячейка Объем ячейки – Vp Узел P располагается в центре ячейки xp Для каждой ячейки существует ячейка-сосед, граничащая с каждой стороной. Соседняя ячейка – N Центр стороны – f. Используется теорема о среднем Вектор к стороне f определяется как Df=PN Поверхностный вектор Sf равен величине площади стороны Sf рассчитывается с помощью интеграла Центр ячейки (узел P) должен находится внутри ячейки Объем ячейки и площадь стороны рассчитываются путем декомпозиции на пирамиды и треугольники Типы сторон в сетке: внутренние и граничные Дискретизация базируется на интегральной форме транспортного уравнения для каждой ячейки Литература. Патанкар С. Численные методы решения задач теплообмена и динамики жидкости. М., Энергоатомиздат, 1984, 152 с.
40 МКО. Основы метода. Операции с поверхностными и векторными интегралы Выбор P и f обеспечивает второй порядок точности Дискретизация второго порядка для переменной Ф по пространству Дискретизация второго порядка для переменной Ф по времени Наличие специальной функции для FVM shape function Поддержка многогранных ячеек Нет спецификации на тип ячеек (тетраэдры, призмы, пятигранники и т.д. ) Использование теоремы Гаусса для аппроксимации объемных интегралов над дивергенцией и градиент операторами. Дискретизация производной по времени, конвективного члена, оператора градиент, диффузионного члена, источникового члена Литература Ferziger J.H., Peric M., Computational Methods for Fluid Dynamics. Springer-Verlag, Berlin et al.: Springer, – 423p
41 Основы МКО Как структура сетки влияет на алгоритм? Фf зависит от значений в узлах P, N. Расчет поверхностного интеграла? Структурированная сетка: Восток, Запад, Север, Юг. Нумерация индексов: n+1, n-1, n+colDim, n- colDim Блочно-структурированная и адаптивная сетки : 2 опции Сетка на базе тетраэдров: для каждого тетраэдра сохранить 4 индекса соседних ячеек для 4 сторон в нужном порядке Неструктурированная сетка: забыть о блоках, для каждой ячейки хранить индексы соседних ячеек Смешанная сетка: тетраэдры имеют только 4 соседа, кирпич имеет шесть. 2 опции. Сетка на базе многогранников:
42 МКО. Основы метода. Процедура интерполяции для получения значения Фf для конвективного слагаемого Фf зависит от двух узлов: P и N. Решение в узле P зависит от N, и наоборот. Мы получаем матрицу с недиогональными коэффициентами Центральная схема. Второй порядок точности, но осцилляции Схемы высокого порядка, учитывающие транспортные свойства течения. Информация поступает из области вверх по потоку. Отсутствие осцилляций. Но могут быть привнесены неточности расчета Существует большое количество точных схем: TVD, NVD семейство.
43 Реализация слагаемых для ДУ Различные операторы
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
45 Пример класса на C++ class name { public: declaration of public member functions and member data private: declaration of hidden member functions and member data }; public признаки видимы снаружи класса private признаки видимы внутри класса
46 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
47 Тестовые примеры в OpenFOAM. Обратный уступ. Р.В. Питц, Дж.У. Дейли. Горение в турбулентном слое смешения за уступом. Аэрокосмическая техника N7. с LES model. 1 equation.
48 Пример 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
49 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; Подготовка задачи. Требует времени!
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. Выбор решателей для СЛАУ.
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. Определение схем дискретизации.
52 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
53 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
54 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
55 Невязки 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
56 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
57 Построение графиков с помощью gnuplot Расчет выполнен с pisoFoam, SA модель турбулентности Невязки для Ux,Uy,Uz, p, nuTilda
58 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
59 Запуск задач 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
60 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 ( ); // ************************************************************************* // Декомпозиция расчетной области. Выбор модели.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.