《openfoam基本流程》由会员分享,可在线阅读,更多相关《openfoam基本流程(5页珍藏版)》请在金锄头文库上搜索。
1、任何 CFD 软件的使用无非通过 3 个基本步骤: 前处理,CFD 计算,后处理前处理主要包括:网格的生成,物理参数的设定,初始边界条件的设定,求解控制设定,方程求解方法的选择,离散格式的选择。网格生成 :OpenFOAM 带有自己的网格生成功能 blockMesh,他可以生成块结构化网格,使用比较简单,但对于复杂几何,该功能实施比较复杂。可以采用其网格软件如:gridgen,pointwise,gambit, icemcfd,tetgen,gmesh,ansys 等生成网格,通过网格转换功能将其转换为 openfoam 可识别的网格。我本人通常采用 gridgen生成 fluent 网格,再
2、采用 fluentMeshToFaom 功能转换为 openfoam 可识别网格。物理参数的设置 :OpenFOAM 中的物理参数文件都在当前 case 文件夹里面的 constant 文件夹中,里面常用的文件通常常有environmentalProperties:设定环境参数,重力加速度transportProperties:传输相关参数,比如黏性,密度,对于非牛顿流体的黏性模型及其参数等LESProperties:大涡模型及其相关的模型参数RASProperties: 雷诺时均模型及其相关模型参数thermodynamicProperties:热物理相关参数这些文件的名字由 solver
3、里面定义,可以任意更改,上面书写是 openfoam 中的一个惯例,至于如何更改,请参看 solver 说明。初始边界条件的设定 :初始条件和边界条件设定都在 case 文件夹中的 0 文件夹中,在 Openfoam 中,每个求解变量都有自己的单独的求解文件,下面以/OpenFOAM/OpenFOAM-1.5/tutorials/icoFoam/cavity/0/p 压力文件为例进行说明FoamFile /文件头version 2.0; /版本号format ascii; /存储形式二进制或者 asciiclass volScalarField;/场的类型,体心标量场object p; /场的
4、名字/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /场的单位,应当注意这里的压强单位并非实际压强,而是压强除去密度(p/rho) 的单位/因为 openfoam 对动量方程直接求解的速度dimensions 0 2 -2 0 0 0 0;/初始条件:内部场为均匀场,所有全为 0,如果不均匀场则采用 setField 或者funkySetField 对初始场进行/设置,如何使用这些功能,以后再说明。internalField uniform 0;/边界条件boundaryFieldmovin
5、gWall /边界名字 type zeroGradient; /边界条件为第二类边界条件,梯度为 0fixedWallsm /边界名字 type zeroGradient;/边界条件为第二类边界条件,梯度为 0frontAndBack /边界名字 /空边界条件,说明求解是二维流动,这个在 openFOAM 是独有的,如果遇到该类边界,该边界不参与方程离/散,也就是什么都不做。type empty;求解控制设定 :文件为 system/controlDict,典型的 controlDict 文件如下/文件头FoamFileversion 2.0;format ascii;class dictio
6、nary;object controlDict;/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /当前 case 所用求解器的名字application icoFoam;/程序从什么时候开始执行,startTime 开始startFrom startTime;/startTime 设定为 0,即从 0 时刻开始执行startTime 0;/程序什么时候结束,endTime 结束stopAt endTime;/程序结束时间endTime 0.5;/当前算例的时间步长deltaT 0.005;/
7、以什么方式写文件,按照时间步长写(也可以为 runTime,即按照时间来些)writeControl timeStep;/20 个时间步长,20*timeStep 写一次;(如果按照时间来写的话为 1)writeInterval 20; /写过程是否覆盖,如果 0 则不覆盖,大于 0 为覆盖,比如: 2,case 文件家中只有输出文件 比如 6 和 7,/当算到 8 时候,会覆盖 6,9 会覆盖 8,以此类推purgeWrite 0;/写的格式 ascii 或者 binarywriteFormat ascii;/文件写入精度writePrecision 6;/是否对生成数据进行压缩,压缩的话会
8、战较少空间。uncompressed/compressed;writeCompression uncompressed;/时间文件夹格式:fixed m.ddddd(d 的个数取决于下面的 timePrecision) ,scientific :采用科学计数/法,general :科学计数法指数小于4 用指数,大于4 用小数timeFormat general;/时间文件夹精度timePrecision 6;/在求解过程中是否允许修改以上参数runTimeModifiable yes;方程求解方法的选择 :文件为 system/fvSolution,典型的文件为/文件头FoamFilevers
9、ion 2.0;format ascii;class dictionary;object fvSolution;/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /solvers /方程求解器p PCG /压力采用预条件共轭梯度法(主要用于求解对称矩阵)preconditioner DIC; /预测器,对角不完全 Cholesky 方法tolerance 1e-06; /参差relTol 0; /迭代容差 ;U PBiCG /速度采用预条件双共轭梯度法(主要用于反对称矩阵)preconditi
10、oner DILU; /预测器,对角不完全 LUtolerance 1e-05;/残差relTol 0; /迭代容差;PISO /piso 控制参数nCorrectors 2;/修正次数nNonOrthogonalCorrectors 0;/非正交修正次数pRefCell 0;/压力参考 cell 的 indexpRefValue 0;/压力参考值如果对求解器不明白,可以参看相关理论,或者直接找到一个差不多的 case 进行复制。离散格式的选择 :文件:system/fvSchemes,典型文件/文件头FoamFileversion 2.0;format ascii;class diction
11、ary;object fvSchemes;/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /非稳态格式ddtSchemesdefault Euler; /默认采用欧拉离散,其他格式以后介绍gradSchemes /梯度离散default Gauss linear;/梯度离散采用高斯方法,线性插值grad(p) Gauss linear; /压力的梯度离散divSchemes /散度离散default none; /散度的离散(必须指定没有默认值)div(phi,U) Gauss linear
12、;/对流项离散,高斯理论,采用线性插值laplacianSchemes /拉普拉斯项离散default none; /拉普拉斯项离散,必须指定laplacian(nu,U) Gauss linear corrected; /扩散项离散采用高斯理论,采用线性插值,并带有非/网格正交修正laplacian(1|A(U),p) Gauss linear corrected;/压力方程离散采用高斯理论,线性插值,带有非/网格正交修正interpolationSchemes /插值格式default linear; /默认线性插值interpolate(HbyA) linear;/线性插值snGradS
13、chemes/梯度发法向分量default corrected;/默认带有非正交修正fluxRequired /是否计算流律default no; /默认不计算p;/压力需要计算,因为需要利用压力流律修正速度CFD 计算 :设定上述参数后,直接在 case 文件中,在控制台中输入相应求解器的名字即可。如果参数设置有误,会得到提示。后处理:openfoam 推荐的后处理软件为 paraview,当然你可以运用 foamToTecplot 功能将其转换为tecplot 格式运用 tecplot 进行处理,或者运用 foamDataToFluent 转化为 fluent 格式进行后处理,所有支持的转化在/OpenFOAM-1.5/applications/utilities/postProcessing/dataConversion文件夹中。