使用OpenFOAM的基本流程

原文地址:使用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;
      class            dictionary;
      object          fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//非稳态格式
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;//压力需要计算,因为需要利用压力流律修正速度
}

CFD计算
设定上述参数后,直接在case文件中,在控制台中输入相应求解器的名字即可。如果参数设置有误,会得到提示。

后处理:
openfoam推荐的后处理软件为paraview,当然你可以运用foamToTecplot功能将其转换为tecplot格式运用tecplot进行处理,或者运用foamDataToFluent转化为fluent格式进行后处理,所有支持的转化在/OpenFOAM-1.5/applications/utilities/postProcessing/dataConversion
文件夹中。







     

  • 12
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
3 目录 说明 ..................................................................................................................... 1. 如何做动画 ................................................................................................. 2. OpenFOAM 第 5 次 workshop ................................................................... 3. OpenFOAM 中不可压缩湍流大涡求解器 oodles 说明 ........................... 4. OpenFOAM 中的神奇方程定义方式的背后 ............................................. 5. OpenFOAM 中雷诺时均湍流求解器 turbFoam 使用 ............................... 6. pimple 算法简述 (2009-09-30 09:22:33) 转载 .......................................... 7. 粒子方法讨论版开版 .................................................................................. 8. 面向对象—我的一点理解 .......................................................................... 9. 如何搞多面体网格 ...................................................................................... 10. OpenFOAM-1.6-ext 的安装过程探讨 ................................................... 11. 多态实现及其子类父类数据传递的方式 ............................................. 12. OpenFOAM 与有限元程序包 deal.II 的无缝耦合方法 ........................ 13. CAD->GAMBIT->CFD几何 ...................................................................... 14. OpenFOAM 中非均匀初始场的设定 ..................................................... 15. OpenFOAM-1.6 中 sample 的使用 ......................................................... 16. 利用 pyFOAM 残差的输出 ...................................................................... 17. 也来谈谈传值和传址 .............................................................................. 18. 从 pisoFoam 谈谈 OpenFOAM-1.6 湍流模型的结构变化 ................... 19. 非惯性旋转系统稳态求解器 simpleSRFFoam使用 ........................ 20. linux 常用命令集 ..................................................................................... 21. 一起看看 OpenFOAM-1.6 中的 pisoFoam .......................................... 22. 一起看看 OpenFOAM-1.6 中的 pisoFoam .......................................... 23. 深入解析 OpenFOAM 时间控制参数字典文件 controlDict ................. 24. OpenFOAM 中的智能指针 autoPtr ........................................................ 25. 如何实现同一用户下的 OpenFOAM 多版本编译 ................................ 26. 商业软件划分的网格向 OpenFOAM 转换应注意的问题 .................... 27. OpenFOAM 如何定义与时间有关的边界条件 ..................................... 28. OpenFOAM 中 transportModel 与 viscosityModels 关系 .................... 29. OpenFOAM 不可压缩流边界条件的设定之我见 ................................. 30. OpenFOAM 中气液双欧拉求解器 bubbleColumn 的使用 .................. 31. OpenFOAM 不可压缩非牛顿流体层流求解器使用说明 ..................... 32. OpenFOAM 中不可压缩稳态求解器 simpleFoam使用 .................. 33. 深入解析 OpenFOAM 离散格式参数字典文件 fvSchemes................. 34. 如何使得 OpenFOAM 的 solver 自动调节时间步长 ........................... 35. OpenFOAM 中不可压缩流大涡求解器 oodles 的使用 ....................... 36. OpenFOAM 中的不可压缩湍流流动求解器 turbFoam 的说明 .......... 37. 深入解析 icoFoam 下的顶盖驱动流 (cavity) .........................................

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值