blockMesh教程

2018-07-27  本文已影响0人  jing131313

定义

blockMesh一般用于生成简单几何的结构网格
控制文件路径为constant/polyMesh/blockMeshDict
每个网格cell包含8个point和12个edges,它们的编码顺序如下图所示:

图1

使用

当我们定义好blockMeshDict之后,在终端运行

    blockMesh

语法:

    blockMesh [-dict dictionary] [-case dir] [-blockTopology] [-region name] [-help]

注:blockMesh不可以并行运行
需要的文件:

blockMeshDict解读

blockMeshDict包含verticesblocksedgespatchesmergePatchPairs五部分。
在文件的开始是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)
);
图2
接下来是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之间是如何进行连接的。这存在两种相连情况:

当通过面匹配来连接blocks时,该部分不需要定义,blockMesh会自动将这两个patch匹配成内部面。而当通过面融合来连接blocks时,就需要在该部分中定义两个要融合的patch,如下面所示:

mergePatchPairs
(
    (<masterPatch> <slavePatch>)
);

融合规则如下:

上一篇 下一篇

猜你喜欢

热点阅读