吾生有涯 学海无涯
析模有界 知识无界

【OpenFOAM案例】06 空气流经障碍物

相同的食材,不同的烹制方法。

利用OpenFOAM求解气流通过障碍物后的流场分布。

案例描述: 本案例来自于丹麦海事研究所。流动计算域模型如图所示,包含入口、出口及壁面。案例采用 2D 模型计算。计算域流体介质为空气(标准大气压,温度 293K ),来流速度 1.17m/s 。雷诺数基于障碍物高度(案例为 40mm ),本案例雷诺数为 3115 ,入口位置湍动能及湍流耗散率分别为 0.024m2 /s2 及 0.07m2 /s3 。流动过程为等温、湍流及不可压缩流动。

建模及网格划分过程这里不详述,案例从转化网格开始。

注:以下操作均在blueCFD-Core-2016-1下完成,这是一个Windows下使用的OpenFOAM软件,其支持的OpenFOAM版本为4.1。低版本OpenFOAM练习此案例有一些微小的区别。

1 网格准备

启动blueCFD,从OF提供的实例中拷贝一个与本案例最相近的,我们采用pisoFoam中的Cavity。

cp -r $FOAM_TUTORIALS/incompressible/pisoFoam/ras/cavity $FOAM_RUN cd $FOAM_RUN mv cavity obstacle

将网格文件obstacle.msh拷贝到文件夹obstacle中。此时obstacle文件夹中的文件如下图所示。

2 转化网格文件

利用cd命令切换到obstacle目录下。

cd $FOAM_RUN/obstacle

输入命令:

fluentMeshToFoam obstacle.msh

此时可采用Tree命令查看obstacle文件夹中的文件组织,如图所示。

. ├── 0 │   ├── epsilon │   ├── k │   ├── nut │   ├── nuTilda │   ├── omega │   ├── p │   └── U ├── constant │   ├── polyMesh │   │   ├── boundary │   │   ├── cellZones │   │   ├── faces │   │   ├── faceZones │   │   ├── neighbour │   │   ├── owner │   │   ├── points │   │   └── pointZones │   ├── transportProperties │   └── turbulenceProperties ├── obstacle.msh └── system     ├── blockMeshDict     ├── controlDict     ├── fvSchemes     └── fvSolution  4 directories, 22 files

注意:Tree命令只是存在于blueCFD中,如果是其他版本的Linux,默认是没有Tree命令的。其实也无所谓,鼠标点开看也是一样的,这里只是描述方便罢了。

查看文件constant/polyMesh/boundary,利用命令:

nano constant/polyMesh/boundary

该文件内容为:

FoamFile {     version     2.0;     format      ascii;
   class       polyBoundaryMesh;    location    "constant/polyMesh";    object      boundary; }

5(    INLET    {        type            patch;        nFaces          66;        startFace       31370;    }    OUTLET    {        type            patch;        nFaces          66;        startFace       31436;    }    TOP    {        type            wall;        inGroups        1(wall);        nFaces          241;        startFace       31502;    }    BOTTOM    {        type            wall;        inGroups        1(wall);        nFaces          271;        startFace       31743;    }    frontAndBackPlanes    {        type            empty;        inGroups        1(empty);        nFaces          31692;        startFace       32014;    } )

注意边界名称:INLET、OUTLET、TOP、BOTTOM、frontAndBackPlanes。

其中frontAndBackPlanes是程序自动生成的两个侧边,后面要将其边界条件指定为empty。

3 修改0文件夹

0文件夹中主要需要修改k、nut、epsilon、p和U文件。由于我们选用的是k-epsilon模型,因此其他的文件都是多余的。

利用命令删除多余的文件

rm 0/nuTilda rm 0/omega

3.1 修改k文件

k文件修改为:

FoamFile {     version     2.0;     format      ascii;
   class       volScalarField;    location    "0";    object      k; }// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //dimensions      [0 2 -2 0 0 0 0]; internalField   uniform 0.024; boundaryField {    INLET    {        type            fixedValue;        value           uniform 0.024;    }    OUTLET    {        type            zeroGradient;    }    TOP    {        type            kqRWallFunction;        value           uniform 0.024;    }    BOTTOM    {        type            kqRWallFunction;        value           uniform 0.024;    }    frontAndBackPlanes    {        type            empty;    } }

3.2 修改epsilon文件

epsilon文件修改为:

FoamFile {     version     2.0;     format      ascii;
   class       volScalarField;    location    "0";    object      epsilon; }

dimensions      [0 2 -3 0 0 0 0]; internalField   uniform 0.07; boundaryField {    INLET    {        type     fixedValue;        value    uniform 0.07;    }    OUTLET    {        type      zeroGradient;    }    TOP    {        type       kqRWallFunction;        value      uniform 0.07;    }    BOTTOM    {        type       kqRWallFunction;        value      uniform 0.07;    }    frontAndBackPlanes    {        type       empty;    } }

3.3 修改nut文件

nut文件修改为:

FoamFile {     version     2.0;     format      ascii;
   class       volScalarField;    location    "0";    object      nut; }
dimensions      [0 2 -1 0 0 0 0]; internalField   uniform 0; boundaryField {    INLET    {        type    calculated;        value   uniform 0;    }    OUTLET    {        type    calculated;        value   uniform 0;    }    TOP    {        type    nutkWallFunction;        value   uniform 0;    }    BOTTOM    {        type    nutkWallFunction;        value   uniform 0;    }    frontAndBackPlanes    {        type     empty;    } }

3.4 修改p文件

p文件修改为:

FoamFile {     version     2.0;     format      ascii;
   class       volScalarField;    object      p; }

dimensions      [0 2 -2 0 0 0 0]; internalField   uniform 0; boundaryField {    INLET    {        type      zeroGradient;    }    OUTLET    {        type       fixedValue;        value      uniform 0;    }    TOP    {        type       zeroGradient;    }    BOTTOM    {        type       zeroGradient;    }    frontAndBackPlanes    {        type       empty;    } }

3.5 修改U文件

U文件内容:

FoamFile {     version     2.0;     format      ascii;
   class       volVectorField;    object      U; }

dimensions      [0 1 -1 0 0 0 0]; internalField   uniform (0 0 0); boundaryField {    INLET    {        type     fixedValue;        value    uniform (1.17 0 0);    }    OUTLET    {        type     zeroGradient;    }    TOP    {        type     noSlip;    }    BOTTOM    {        type     noSlip;    }    frontAndBackPlanes    {        type     empty;    } }

4 修改constant文件夹

constant文件夹中需要修改transportProperties及turbulenceProperties文件。

4.1 修改transportProperties

transportProperties中修改气体的运动粘度,这里采用默认值1e-5。

FoamFile {     version     2.0;     format      ascii;
   class       dictionary;    location    "constant";    object      transportProperties; }

transportModel  Newtonian; nu              [0 2 -1 0 0 0 0] 1e-05;

注意:这里是运动粘度,为动力粘度与密度的比值,注意看量纲。

4.2 修改turbulenceProperties

这里就采用标准的k-epsilon模型,不做任何修改。如果要使用其他的湍流模型,可以在此文件中修改RASModel关键字。

文件内容:

FoamFile {     version     2.0;     format      ascii;
   class       dictionary;    location    "constant";    object      turbulenceProperties; }

simulationType  RAS; RAS {    RASModel        kEpsilon;    turbulence      on;    printCoeffs     on; }

5 修改system文件夹

本案例只需要修改controlDict文件。

文件修改为:

FoamFile {     version     2.0;     format      ascii;
   class       dictionary;    location    "system";    object      controlDict; }// * * * * * * * * * * * * * //

application     pisoFoam; startFrom       startTime; startTime       0; stopAt          endTime; endTime         400; deltaT          0.1; writeControl    timeStep; writeInterval   100; purgeWrite      0; writeFormat     ascii; writePrecision  6; writeCompression off; timeFormat      general; timePrecision   6; runTimeModifiable true;

6 进行计算

进入obstacle目录,执行命令pisoFoam。

cd $FOAM_RUN/obstacle pisoFoam

计算开始进行。也可以利用foamMonitor监测残差。我这里安装不完全,没法启动gnuplot,没法演示。

注意:pisoFoam只能计算瞬态,如果要计算稳态,可以使用simpleFoam。

7 后处理

计算结束后,在obstacle目录启动命令:

paraFoam

自动开启paraView进行后处理。下图为40s时刻速度分布。

有需要案例文件的可在赞赏任意金币后留言。】

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《【OpenFOAM案例】06 空气流经障碍物》
文章链接:https://www.topcfd.cn/1412/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册