本文描述OpenFOAM中的文件组织结构。
-
OpenFOAM使用非常特殊的目录结构来运行案例 -
应始终遵循目录结构,否则OpenFOAM会发出警告 -
为防止出错,案例目录通常位于路径$WM_PROJECT_USER_DIR/RUN中,但这不是强制性的,但通常建议这么做。用户可以把案例文件复制到任何位置 -
案例目录名称由用户自己指定(请勿使用空格或奇怪符号) -
使用的求解器不同,子目录中可能需要不同的文件 -
记住始终在案例目录(名称为CASE_NAME的目录)的顶层运行求解器
典型的文件组织结构如下图所示。
case文件夹中包含三个子目录:
-
0文件夹:包含边界条件与初始条件 -
constant文件夹:包含网格参数、物理属性、湍流模型参数、物理模型参数等 -
system文件夹:包含运行时控制参数与求解器数值格式等
1 0文件夹
0文件夹中包含有求解器计算所需的边界条件与初始条件。如上图中0文件中包含文件U
与文件p
,其中分别存储边界上的速度与压力值。0
文件夹表示存储的是0时刻的数据,若为瞬态计算,在计算过程中还会生成以时间为名称的新的文件夹。
如示例中的p文件内容:
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
movingWall
{
type zeroGradient;
}
fixedWalls
{
type zeroGradient;
}
frontAndBack
{
type empty;
}
}
文件中指定了各边界(movingWall、fixedWalls以及frontAndBack)上的压力值,如上的示例中,利用关键字internalField uniform 0
指定了全局压力为0,并指定movingWall边界与fixedWalls边界的压力为zeroGradient
。
在p文件中,通过dimensions
关键字指定了压力的量纲,需要注意这里的量纲是单位质量的压力,其单位为帕斯卡与密度单位的商,即m2/s2
。
在文件头中指定了文件版本、格式类型、物理量类型以及对象。
FoamFile
{
version 2.0; //指定版本为2.0
format ascii; //指定文件存储格式为ascii
class volScalarField; //指定物理量类型为标量场
object p; //指定对象为压力p
}
对于U文件,则指定了各边界对应的速度信息。如下面的U文件:
FoamFile
{
version 2.0;
format ascii;
class volVectorField;//指定物理场为矢量场
object U;
}
// * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0]; //指定物理量单位为m/s
internalField uniform (0 0 0); //指定计算区域内部速度为0
boundaryField
{
movingWall
{
type fixedValue;
value uniform (1 0 0);
}
fixedWalls
{
type noSlip;
}
frontAndBack
{
type empty;
}
}
2 constant文件夹
constant文件夹通常用于指定网格参数、物性参数等。
如前面的示例中,网格数据存储在子文件夹polyMesh
中,该文件夹下包含的文件(boundary、faces、neighbour、owner、points)存储了网格细节。
物性参数存储在文件transportroperties
中,如下面的示例中指定了运动粘度为0.01 m2/s。
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * //
nu [0 2 -1 0 0 0 0] 0.01;
需要注意的是,当选用的求解器不同时,constant文件夹中可能需要补充额外的文件,如选择了湍流模型,则可能需要在constant文件夹中添加湍流参数文件。
3 system文件夹
system文件夹中包含了所有计算过程中需要进行设置与控制的参数。如前面的示例中,system文件夹中包含了4个文件:
-
blockMeshDict:指定 blockMesh
所需的网格控制参数 -
controlDict:指定计算求解参数,如时间步长、时间步数、输入输出时间、场数据的读取与写入等 -
fvSchemes:指定有限体积法的离散格式 -
fvSolution:指定方程组矩阵求解器、残差以及其他算法控制
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册