相同的食材,不同的烹制方法。
利用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之道
评论前必须登录!
注册