OpenFOAM常用类的一些总结(7)

2019-03-27 20:31

face :表面法向量场 area:表面面积场 vol :网格单元体积场 deltaT :时间步长 time :当前时间

setFields和funkySetField可以实现比较复杂的内部场初始化,而对于复杂的边界场,你要自定义边界条件了。

使用OpenFOAM的基本流程

任何CFD软件的使用无非通过3个基本步骤: 前处理,CFD计算,后处理

前处理主要包括:网格的生成,物理参数的设定,初始边界条件的设定,求解控制设定,方程求解方法的选择,离散格式的选择。

网格生成:

OpenFOAM带有自己的网格生成功能blockMesh,他可以生成块结构化网格,使用比较简单,但对于复杂几何,该功能实施比较复杂。

可以采用其网格软件如:gridgen,pointwise,gambit,icemcfd,tetgen,gmesh,ansys等生成网格,通过网格转换功能将其转换为openfoam可识别的网格。我本人通常采用gridgen生成fluent网格,再采用fluentMeshToFaom功能转换为openfoam可识别网格。

物理参数的设置:

OpenFOAM中的物理参数文件都在当前case文件夹里面的constant文件夹中,里面常用的文件通常常有

environmentalProperties:设定环境参数,重力加速度

transportProperties:传输相关参数,比如黏性,密度,对于非牛顿流体的黏性模型及其参数等

LESProperties:大涡模型及其相关的模型参数 RASProperties: 雷诺时均模型及其相关模型参数 thermodynamicProperties:热物理相关参数

这些文件的名字由solver里面定义,可以任意更改,上面书写是openfoam中的一个惯例,至于如何更改,请参看solver说明。

初始边界条件的设定:

初始条件和边界条件设定都在case文件夹中的0文件夹中,在Openfoam中,每个求解变量都有自己的单独的求解文件,下面以/OpenFOAM/OpenFOAM-1.5/tutorials/icoFoam/cavity/0/p压力文件为例进行说明 FoamFile //文件头 {

version 2.0; //版本号

format ascii; //存储形式二进制或者ascii class volScalarField;//场的类型,体心标量场 object p; //场的名字 }

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

//场的单位,应当注意这里的压强单位并非实际压强,而是压强除去密度(p/rho)的单位 //因为openfoam对动量方程直接求解的速度 dimensions [0 2 -2 0 0 0 0];

//初始条件:内部场为均匀场,所有全为0,如果不均匀场则采用setField或者funkySetField对初始场进行//设置,如何使用这些功能,以后再说明。 internalField uniform 0; //边界条件 boundaryField {

movingWall //边界名字 {

type zeroGradient; //边界条件为第二类边界条件,梯度为0 }

fixedWallsm //边界名字 {

type zeroGradient;//边界条件为第二类边界条件,梯度为0 }

frontAndBack //边界名字

{

//空边界条件,说明求解是二维流动,这个在openFOAM是独有的,如果遇到该类边界,该边界不参与方程离//散,也就是什么都不做。 type empty; } }

求解控制设定:

文件为system/controlDict,典型的controlDict文件如下 //文件头 FoamFile {

version 2.0; format ascii; class dictionary; object controlDict; }

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // //当前case所用求解器的名字 application icoFoam;

//程序从什么时候开始执行,startTime开始 startFrom startTime;

//startTime 设定为0,即从0时刻开始执行 startTime 0;

//程序什么时候结束,endTime结束 stopAt endTime; //程序结束时间 endTime 0.5; //当前算例的时间步长 deltaT 0.005;

//以什么方式写文件,按照时间步长写(也可以为runTime,即按照时间来些)

writeControl timeStep;

//20个时间步长,20*timeStep写一次;(如果按照时间来写的话为1) writeInterval 20;

//写过程是否覆盖,如果0则不覆盖,大于0为覆盖,比如:2,case文件家中只有输出文件 比如6 和 7,//当算到8时候,会覆盖6,9会覆盖8,以此类推 purgeWrite 0;

//写的格式ascii或者binary writeFormat ascii; //文件写入精度 writePrecision 6;

//是否对生成数据进行压缩,压缩的话会战较少空间。uncompressed/compressed; writeCompression uncompressed;

//时间文件夹格式:fixed m.ddddd(d的个数取决于下面的timePrecision),scientific :采用科学计数//法,general:科学计数法指数小于-4用指数,大于-4用小数 timeFormat general; //时间文件夹精度 timePrecision 6;

//在求解过程中是否允许修改以上参数 runTimeModifiable yes;

方程求解方法的选择:

文件为system/fvSolution,典型的文件为 //文件头 FoamFile {

version 2.0; format ascii; class dictionary; object fvSolution; }

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

solvers //方程求解器 {

p PCG //压力采用预条件共轭梯度法(主要用于求解对称矩阵) {

preconditioner DIC; //预测器,对角不完全Cholesky方法 tolerance 1e-06; //参差 relTol 0; //迭代容差 };

U PBiCG //速度采用预条件双共轭梯度法(主要用于反对称矩阵) {

preconditioner DILU; //预测器,对角不完全LU tolerance 1e-05;//残差 relTol 0; //迭代容差 }; }

PISO //piso控制参数 {

nCorrectors 2;//修正次数

nNonOrthogonalCorrectors 0;//非正交修正次数 pRefCell 0;//压力参考cell的index pRefValue 0;//压力参考值 }

如果对求解器不明白,可以参看相关理论,或者直接找到一个差不多的case进行复制。

离散格式的选择:

文件:system/fvSchemes,典型文件 //文件头 FoamFile {

version 2.0; format ascii;


OpenFOAM常用类的一些总结(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:11.4分式加减法(2)学案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: