|
Ламинарное обтекание квадратного цилиндра потоком несжимаемой жидкости ⇐ ПредыдущаяСтр 6 из 6 В качестве примера, иллюстрирующего возможности OpenFOAM, рассмотрим задачу обтекания квадратного цилиндра потоком несжимаемой жидкости с Re=5000. Расчетная область представлена на рис.4.4 Сторона цилиндра D=0.04 м. Все остальные размеры приведены в таблице 4.2 и отнесены к D. Таблица 4.2. Геометрические размеры расчетной области
Перед началом решения задачи, создадим папку с рабочим названием flowSquare, в которой будут храниться все данные о рассматриваемом проекте. Для этого в терминале Linux набираем команду mkdir -p flowSquare Выполняя аналогичную команду, создаем еще 4 папки, чтобы структура проекта имела следующий вид:
Для построения сеточной модели необходимо создать два файла: blockMeshDict и controlDict в папках polyMesh и system соответственно. Содержание этих файлов представлено в приложениях 1,2. После этого в корневом разделе проекта следует выполнить команду blockMesh В результате будет сгенерирована расчетная сетка, а в папке polyMesh появятся новые файлы содержащие информацию о расположении граничных условий(boundary), граней ячеек(faces) и т.д.
Для определения начальных и граничных условий в папке 0 необходимо создать 2 файла: p и U отвечающие за задание давления и скорости соответственно. Содержимое этих файлов представлено в приложениях 3 и 4. Отметим, что число файлов, содержащих информацию о граничных условиях, зависит от типа решаемой задачи. Например, в случае турбулентного течения кроме скорости и давления необходимо также задавать граничные условия для параметров k и epsilon. Описание физических свойств рабочей среды осуществляется в файле transportProperties, который необходимо создать в каталоге constant (приложение 5). Задание различных разностных схем и методов решения систем уравнений осуществляется в файлах fvSchemes и fvSolution (каталог system), содержимое которых представлено в приложениях 6 и 7. Таким образом, полностью сформированная структура проекта имеет следующий вид:
Для запуска задачи на расчет необходимо в терминале Linux в корневом каталоге проекта выполнить команду icoFoam Отметим, что данной командой мы запускаем солверicoFoam на одном ядре. Для расчета в параллельном режиме необходимо создать в папке system дополнительный файл decomposeParDict содержащий информации в частности о числе подобластей, на которые будет разбита расчетная область (numberOfSubdomains). Содержание файла decomposeParDict представлено в приложении 8. После формирования файла необходимо в корневой директории проекта запустить команду decomposePar после чего будет создано n-папок c названием processor(число n-равняется числу подобластей, в нашем случае n=4) (рис.4.8).
Для запуска задачи в параллельном режиме необходимо запустить команду mpirun -np 4 icoFoam -parallel > log & здесь –np указывает число ядер, на которых будет произведен расчет, icoFoam – солвер соответствующий решаемой задачи, >log& создает файл log, в который записываются данные о решении задачи. Командой top можно получить сведения о загрузке процессора задачей:
Когда расчет будет окончен, полученное решение можно визуализировать с помощью пакета Paraview. Для этого в терминале нужно ввести команду paraFoam после чего появится главное окно пакета визуализации Paraview
Чтобы просмотреть расчетную область необходимо нажать кнопу Apply в меню управления объектом (рис.4.11)
Визуализация расчетной сетки осуществляется выбором параметра surfacewithedges на приборной панели. Построенная сеточная модель представлена на рис.4.13,4.14
Для визуализации полей давлений и скоростей первым делом необходимо создать плоскость, на которой эти поля будут построены. Для этого на приборной панели нужно нажать иконку плоскости (рис.4.15) после чего в меню управления объектами выставить параметры, указанные на рис.4.16 и нажать кнопку Apply.
Для визуализации поля интересующей нас величины необходимо выбрать ее на соответствующей вкладке приборной панели рис.4.17 и выставить время, для которого выводится решение (рис.4.18)
Таким образом, были построены скалярные поля модуля скорости и давления для срединного сечения расчетной области, соответствующие моменту времени t=0.32 с.
ЗАКЛЮЧЕНИЕ Книга «Прикладные программные комплексы для анализа инженерных задач» вводит читателя в увлекательный мир возможностей численного моделирования сложных и разнообразных процессов, протекающих в жидких и газообразных средах. Изучив это пособие и выполнив простые, но важные для изучения основ компьютерного моделирования задачи, читатель получит первоначальные представления о вычислительной гидродинамике, основах и особенностях моделирования гидрогазодинамических процессов в ведущих программных комплексах. В совокупности со знаниями, полученными в рамках курса «Пакеты прикладных программ», это позволяет читателю осваивать современные программные продукты, реализующие компьютерные технологии инженерного анализа. Выполняя дипломные, а также выпускные квалификационные работы и магистерские диссертации с использованием таких программных средств, обучающийся приобретает необходимый опыт и навыки работы с современными средствами исследователя и инженера. БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Лойцянский Л.Г. Механика жидкости и газа: Учеб. для вузов. – 7-е изд., испр. – М.: Дрофа, 2003. – 840 с. 2. Управление обтеканием тел с вихревыми ячейками в приложении к летательным аппаратам интегральной компоновки (численное и физическое моделирование) / Под ред. А.В. Ермишина и С.А. Исаева. – М.: Изд-во Моск. Ун.-та.,2003. – 360 с. 3. Роуч П. Вычислительная гидромеханика. М.: Мир, 1980. – 616 с. 4. Open FOAM: The Open Source CFD Toolbox. User Guide. 2012. -211p. 5. Ansys CFX-solver Theory Guide. Release 14.0 – 2012, Ansys Inc. 6. STAR-CCM+ methodology. Version 6.06. – London, 2011. - 1204 p. 7. Белоцерковский О. М., Давыдов Ю. М., Метод крупных частиц в газовой динамике, М., 1982 ПРИЛОЖЕНИЯ Приложение 1 Содержимое файла blockMeshDict FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } convertToMeters 1.0; vertices ( (-0.4 0.28 0) (-0.02 0.28 0) (0.02 0.28 0) (0.96 0.28 0) (-0.4 0.02 0) (-0.02 0.02 0) (0.02 0.02 0) (0.96 0.02 0) (-0.4 -0.02 0) (-0.02 -0.02 0) (0.02 -0.02 0) (0.96 -0.02 0) (-0.4 -0.28 0) (-0.02 -0.28 0) (0.02 -0.28 0) (0.96 -0.28 0) (-0.4 0.28 0.392) (-0.02 0.28 0.392) (0.02 0.28 0.392) (0.96 0.28 0.392) (-0.4 0.02 0.392) (-0.02 0.02 0.392) (0.02 0.02 0.392) (0.96 0.02 0.392) (-0.4 -0.02 0.392) (-0.02 -0.02 0.392) (0.02 -0.02 0.392) (0.96 -0.02 0.392) (-0.4 -0.28 0.392) (-0.02 -0.28 0.392) (0.02 -0.28 0.392) (0.96 -0.28 0.392) ); blocks ( hex (4 5 1 0 20 21 17 16) (29 19 59) simpleGrading (0.05 20 1) hex (5 6 2 1 21 22 18 17) (21 19 59) simpleGrading (1 20 1) hex (6 7 3 2 22 23 19 18) (73 19 59) simpleGrading (20 20 1) hex (8 9 5 4 24 25 21 20) (29 21 59) simpleGrading (0.05 1 1) hex (10 11 7 6 26 27 23 22) (73 21 59) simpleGrading (20 1 1) hex (12 13 9 8 28 29 25 24) (29 19 59) simpleGrading (0.05 0.05 1) hex (13 14 10 9 29 30 26 25) (21 19 59) simpleGrading (1 0.05 1) hex (14 15 11 10 30 31 27 26) (73 19 59) simpleGrading (20 0.05 1) ); edges ( /* arc 5 6 (0 0.02 0) arc 6 10 (0.02 0 0) arc 9 10 (0 -0.02 0) arc 9 5 (-0.02 0 0) arc 21 22 (0 0.02 0.392) arc 26 22 (0.02 0 0.392) arc 25 26 (0 -0.02 0.392) arc 25 21 (-0.02 0 0.392) */ ); patches ( wall walls ( (5 21 22 6) (6 22 26 10) (10 26 25 9) (9 25 21 5) ) patch inlet ( (4 20 16 0) (8 24 20 4) (12 28 24 8) ) patch outlet ( (3 19 23 7) (7 23 27 11) (11 27 31 15) ) wall sides ( (16 17 1 0) (17 18 2 1) (18 19 3 2) (12 13 29 28) (13 14 30 29) (14 15 31 30) ) walllowerUpper ( (0 1 5 4) (1 2 6 5) (2 3 7 6) (4 5 9 8) (6 7 11 10) (8 9 13 12) (9 10 14 13) (10 11 15 14) (20 21 17 16) (21 22 18 17) (22 23 19 18) (24 25 21 20) (26 27 23 22) (28 29 25 24) (29 30 26 25) (30 31 27 26) ) ); mergPatchPairs ( );
Приложение 2 Содержимое файла controlDict
FoamFile { version 2.0; formatascii; class dictionary; location "system"; objectcontrolDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // applicationicoFoam; startFromstartTime; startTime 0; stopAtendTime; endTime 0.32; deltaT 0.00032; writeControltimeStep; writeInterval 20; purgeWrite 0; writeFormatascii; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true;
Приложение 3. Содержимое файла “p”
FoamFile { version 2.0; formatascii; classvolScalarField; object p; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0]; internalField uniform 0; boundaryField { walls { typezeroGradient; } inlet { typezeroGradient; } outlet { typefixedValue; value uniform 0; } sides { type zeroGradient; } lowerUpper { type zeroGradient; } }
Приложение 4 Содержимое файла «U»
FoamFile { version 2.0; formatascii; classvolVectorField; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { walls { typefixedValue; value uniform (0 0 0); } inlet { typefixedValue; value uniform (1.25 0 0); } outlet { typezeroGradient; }
sides { type fixedValue; value uniform (0 0 0); } lowerUpper { type fixedValue; value uniform (0 0 0); } }
Приложение 5 Содержимое файла transportProperties
FoamFile { version 2.0; formatascii; class dictionary; location "constant"; objecttransportProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // nunu [ 0 2 -1 0 0 0 0 ] 0.00001;
// *************************************************************************
Приложение 6 Содержимое файла fvSchemes
FoamFile { version 2.0; formatascii; class dictionary; location "system"; objectfvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default Euler; } gradSchemes { default Gauss linear; grad(p) Gauss linear; } divSchemes { default none; div(phi,U) Gauss linear; } laplacianSchemes { default none; laplacian(nu,U) Gauss linear corrected; laplacian((1|A(U)),p) Gauss linear corrected; } interpolationSchemes { default linear; interpolate(HbyA) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p; } // ****************//
Приложение 7 Содержимое файла fvSolution
FoamFile { version 2.0; formatascii; class dictionary; location "system"; objectfvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver PCG; preconditioner DIC; tolerance 1e-06; relTol 0; } U { solverPBiCG; preconditioner DILU; tolerance 1e-05; relTol 0; } }
PISO { nCorrectors 2; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } // *******//
Приложение 8 Содержимое файла decomposeParDict
FoamFile { version 2.0; formatascii; class dictionary; location "system"; objectdecomposeParDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 4; method simple; simpleCoeffs { n (2 2 1); delta 0.001; } hierarchicalCoeffs { n (1 2 2); delta 0.001; order xyz; } manualCoeffs { dataFile "cellDecomposition"; }
scotchCoeffs { } // ************************************************************************* //
ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры... Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам... Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право... ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|