本案例演示在OpenFOAM中利用BlockMesh生成计算网格并进行后续计算的基本过程。
1 计算模型
本案例计算模型如图所示。
几何尺寸如图所示。
本案例采用2D计算,建模过程中需要创建沿法向方向的厚度。
2 文件准备
利用以下命令拷贝文件到当前路径
文件执行如图所示。
注:图中输入命令时采用了Tab键辅助输入,导致$FOAM_TUTORIALS被自动展开。
采用命令进入forwardStep目录,查看目录下的文件组织
cdforwardStep
tree
执行后显示如下图所示。
注:
tree命令需要单独安装,Ubuntu系统下可以使用命令sudo apt-get install tree进行安装。该命令可以将文件夹组织结构以树形显示出来。
本案例采用rhoPimpleFoam进行求解,该求解器可以用于求解流体可压缩流动,可适用于亚音速流动,也可用于求解跨/超音速流动。在OpenFOAM V1906版本中,该求解器对应为sonicFoam。
3 网格准备
本案例采用OpenFOAM内置的blockMesh程序生成计算网格,该程序采用分块方式生成六面体计算网格。所有关于网格划分的数据均包含在文件中。
案例几何模型可如下图所示进行拆解。
注:
blockMesh采用的是分块生成六面体网格,因此在构造几何模型过程中需要预先构造六面体块。
这里的几何厚度0.1m并不是确定的,实际上可以指定任意尺寸的厚度,在网格划分过程中,指定厚度方向网格为1层
采用以下命令打开文件blockMeshDict
gedit system/blockMeshDict
注:这里的gedit是文本编辑器,若提示无法找到该应用程序,可利用命令sudo apt-get install gedit进行安装。
该文件内容包括:
该文件中包含了几何定义、网格尺寸划分以及边界组织。
3.1 几何定义
几何定义代码段如下。
convertToMeters1;
vertices
(
(-0.05)
(0.6-0.05)
(0.2-0.05)
(0.60.2-0.05)
(30.2-0.05)
(1-0.05)
(0.61-0.05)
(31-0.05)
(0.05)
(0.60.05)
(0.20.05)
(0.60.20.05)
(30.20.05)
(10.05)
(0.610.05)
(310.05)
);
该代码段内容解释:
:表示后续的尺寸采用米作为单位
:定义了16个点的坐标,注意坐标点的顺序。这里的点编号为从0~15
3.2 网格定义
网格定义代码如下:
blockMesh采用分块方式生成计算网格,因此需要人工控制块的生成。
hex (0 1 3 2 8 9 11 10) (25 10 1) simpleGrading (1 1 1)
六面体块由编号为0 1 3 2 8 9 11 10的顶点所构成。需要注意顶点顺序必须是连续的
(25 10 1)表示沿x方向生成25个网格,y方向10个网格,z方向1个网格
simpleGrading(1 1 1)表示网格在x,y,z三方向为均匀分布
本案例共生成了3个块。
3.3 边界定义
手工指定边界面由哪些顶点构成。这部分代码如下:
关于此段代码:
一共包含5个边界,其边界名称分别为inlet、outlet、bottom、top以及obstacle,边界类型分别为:patch、patch、symmetryPlane、symmetryPlane、patch
一个边界可以包含多个faces
所有的面由顶点构成。如bottom边界由1个面构成,该面由4个顶点(0 1 9 8)所组成
3.4 生成网格
输入命令
cd$FOAM_RUN/forwardStep
blockMesh
运行界面如图所示。
网格生成完毕后输入命令打开prarview查看网格
可以看到沿厚度方向只有1层计算网格。
此时constant文件夹中多出了一个名为polyMesh的文件夹,如下图所示,该文件夹中包含了网格的所有信息。
检查一下boundary文件的内容,确保边界名称及类型无误,该文件内容如图所示。
如图所示多出了一个名为defaultFaces的边界,且指定其类型为empty。
本案例其他内容(如介质参数、边界条件、物理模型、计算控制参数设置略过,在后续的教程中再进行详述。
4 总结
本案例采用blockMesh进行几何创建及网格划分,事实上也可以在其他网格生成软件中创建计算网格,然后采用命令方式导入计算网格到OpenFOAM中。
blockMesh的操作稍微复杂一些,不过如果理解分块网格的思想的话,应该也很容易理解。
建议自己动手尝试修改网格参数并查看计算网格的变化。
领取专属 10元无门槛券
私享最新 技术干货