定义
blockMesh
一般用于生成简单几何的结构网格
控制文件路径为constant/polyMesh/blockMeshDict
每个网格cell包含8个point和12个edges,它们的编码顺序如下图所示:
![](https://img.haomeiwen.com/i13340479/8ff82cf9c7564de6.png)
使用
当我们定义好blockMeshDict
之后,在终端运行
blockMesh
语法:
blockMesh [-dict dictionary] [-case dir] [-blockTopology] [-region name] [-help]
注:blockMesh不可以并行运行
需要的文件:
constant/polyMesh/blockMeshDict
system/controlDict
blockMeshDict解读
blockMeshDict
包含vertices
、blocks
、edges
、patches
和mergePatchPairs
五部分。
在文件的开始是File header
:
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant/polyMesh";
object blockMeshDict;
}
接下来是关键词convertToMeters
:用于定义几何的尺寸缩放因子,一般最后都转换成单位米。
convertToMeters 1.0;
之后是vertices
部分:在这部分中列出所有block
中包含的顶点坐标,顶点编号从0
开始。
vertices
(
(0 0 0)
(1 0 0)
);
然后是blocks
部分:hex
后的第一个()
中将该block
需要的8
个顶点的编号按照图1中的顺序列举出来,第二个()
用于定义xyz
方向的节点数目,第三个()
用于定义xyz
方向节点间距的分布情况,定义如图2所示。
blocks
(
hex (0 1 4 3 9 10 13 12) (20 400 1) simpleGrading (8 8 1)
);
![](https://img.haomeiwen.com/i13340479/844de01f16a43b00.png)
接下来是
edges
部分:该部分用于定义曲边,如果所有的边都是直边就不需要列出,可以定义arc
圆弧和spline
样条线,具体设置可参考OpenFOAM用户手册中文版
第142
页。
edges
(
arc 1 5 (1.1 0.0 0.5)
);
然后是patches
部分:该部分用于定义Patch
的名称、边界类型、每个patch
的顶点编号列表(编号顺序满足右手准则)。
patches
(
patch inlet
(
(0 1 2 3)
)
);
最后是mergePatchPairs
部分:该部分用于定义blocks
之间是如何进行连接的。这存在两种相连情况:
-
面匹配:
block A
中的patch A1
与block B
中的patch B1
的顶点是相同的; -
面融合:两个
block
中的两个patch
存在相连,但是顶点不完全相同;
当通过面匹配来连接blocks
时,该部分不需要定义,blockMesh
会自动将这两个patch
匹配成内部面。而当通过面融合来连接blocks
时,就需要在该部分中定义两个要融合的patch
,如下面所示:
mergePatchPairs
(
(<masterPatch> <slavePatch>)
);
融合规则如下:
-
masterPatch
不动,slavePatch
投影到masterPatch
上,所以即使两个patch
之间是分离的,只要slavePatch
在masterPatch
上的投影存在,就可行; - 在进行面融合的过程中,如果某些
patch
的边小于设定的最小值时,blockMesh
会调整slavePatch
上的顶点来消除这些边; - 当两个
patch
部分重叠时,重叠部分会成为内部面,不重叠的部分依然为外部面,需要定义边界条件; - 如果
patch
上所有的面都融合了,那么这个patch
就会被移除。
网友评论