找回密码
 注册
查看: 7334|回复: 1

[转载]OpenFOAM中不可压缩稳态求解器simpleFoam的使用

[复制链接]
发表于 2009-5-10 22:57:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
simpleFoam为OpenFOAM中稳态不可压缩流动(层流或者RAS湍流)求解器,压力速度耦合采用的simple算法。从以往博文阅读量来看,读者对求解器的说明的阅读远远小于求解器使用的阅读量。因此以后的本站帖子尽量介绍与OpenFOAM应用相关的东西。

simpleFoam和湍流求解器turbFoam有以下两点区别
(1)simpleFoam为稳态的,turbFoam为非稳态的
(2)simpleFoam压力速度耦合用的simple算法,trubFoam则采用PISO算法

本文详细介绍一下,simpleFoam求解器下的算例pitzDaily。本文的介绍主要和turbFoam进行对比,以说明稳态求解器和非稳态求解器在使用上的差异。关于如何使用turbFoam,请参看本站博文OpenFOAM中雷诺时均湍流求解器turbFoam使用

(1)位置
求解器位置:applications\solvers\incompressible\simpleFoam
算例位置:tutorials\simpleFoam\pitzDaily
(2)求解器文件夹结构
2)算例文件夹结构
|-system
|      |-fvSolution  //代数方程求解器选择文件
|      |-fvSchemes   //离散格式选择文件
|      |-controlDict //计算流程控制文件
|-constant
|      |-transportProperties  //传输参数控制文件,黏性等
|      |-RASProperties        //湍流模型选择文件
|      |-polyMesh             //网格文件夹
|               |-blockMeshDict //blockMesh网格设定文件
|               |-boundary      //边界文件,可有可无,blockMeshDict会将其覆盖
|-0
   |-U  //速度边界条件,初始条件设定文件
   |-R  //雷诺应力边界条件,初始条件,仅仅当选择雷诺应力模型时候需要
   |-p  //压力边界条件,初始条件设定文件
   |-nuTilda //一方程模型中求解的那个变量,仅仅选择SpalartAllmaras湍流模型时候有用
   |-k     //湍动能设定文件, k − ε中的k
   |-epsilon //湍流耗散律设定文件, k − ε中的ε

从上面的文件夹结构来看,该算例和turbFoam下的顶盖驱动流动算例完全相同。当采用该求解器与turbFoam使用在有3个文件有差别,他们为system下的三个文件fvSolution,fvScheme,controlDict
(1)fvSolutions
    差别一:SIMPLE子字典的收敛判据
   SIMPLE
   {
    nNonOrthogonalCorrectors 0;
   }
   其实该字典中还有一个有效关键字convergence,遗憾的是在算例并没有给出,该参数的默认值为0,也就是上一步迭代结果带入方程后得到残差小于convergence(=0默认)时候,方程认为收敛。你可以自己设定该参数。如
SIMPLE
   {
    nNonOrthogonalCorrectors 0;
    convergence         1e-6;
   }
当残差小于1e-6时,认为方程收敛。

    差别二:亚松驰因子
relaxationFactors
{
    p               0.3;
    U               0.7;
    k               0.7;
    epsilon         0.7;
    R               0.7;
    nuTilda         0.7;
}
由于方程的初始场通常和收敛场差距很大,一步迭代的话极其容易产生求解的代数方程发散,因此通常采用亚松驰以改善求解的稳定性。而在非稳态求解器中通常采用较小的时间步长来改善两次迭代值之间的差异,以防止方程发散。

(2)fvSchemes
对于稳态求解器中ddt都会写成稳态形式 steadyState。应当注意,稳态还是非稳态,并不是有下面的设定来控制,他是求解器本身的特性。
ddtSchemes
{
    default steadyState;
}

(3)controlDict

application simpleFoam;
startFrom       startTime;
startTime       0;
stopAt          endTime;
//这里的endTime不再是求解结束时间,而是最大迭代次数有关的量(迭代次数=(endTime-startTime)/deltaT)。如果在设定的最大迭代次数内方程收敛,程序也会自动退出计算。
endTime         1000;
//这里不再是时间步长,而是一个月迭代次数有关的量,该量与最大迭代次数的关系,上面已经说明。
//其他量的说明,参看本站博文“深入解析OpenFOAM时间控制参数字典文件controlDict”  
deltaT          1;  
writeControl    timeStep;
writeInterval   50;
purgeWrite      0;
writeFormat     ascii;
writePrecision  6;
writeCompression uncompressed;
timeFormat      general;
timePrecision   6;
runTimeModifiable yes;

除了上述三个文件与turbFoam下的cavity有差异,其他近似,请参看本站博文“OpenFOAM中雷诺时均湍流求解器turbFoam使用

转自OpenFOAM研究:http://blog.sina.com.cn/openfoamresearch

[ 本帖最后由 su_junwei 于 2009-5-10 22:58 编辑 ]
发表于 2009-5-11 09:48:57 | 显示全部楼层
一直关注作者的博文,很好很强大,楼主辛苦了。
有时间还要多多交流:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表