美文网首页
blockMesh教程

blockMesh教程

作者: jing131313 | 来源:发表于2018-07-27 16:53 被阅读0次

定义

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

图1

使用

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

    blockMesh

语法:

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

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

  • constant/polyMesh/blockMeshDict
  • system/controlDict

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之间是如何进行连接的。这存在两种相连情况:

  • 面匹配block A中的patch A1block B中的patch B1的顶点是相同的;
  • 面融合:两个block中的两个patch存在相连,但是顶点不完全相同;

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

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

融合规则如下:

  • masterPatch不动,slavePatch投影到masterPatch上,所以即使两个patch之间是分离的,只要slavePatchmasterPatch上的投影存在,就可行;
  • 在进行面融合的过程中,如果某些patch的边小于设定的最小值时,blockMesh会调整slavePatch上的顶点来消除这些边;
  • 当两个patch部分重叠时,重叠部分会成为内部面,不重叠的部分依然为外部面,需要定义边界条件;
  • 如果patch上所有的面都融合了,那么这个patch就会被移除。

相关文章

网友评论

      本文标题:blockMesh教程

      本文链接:https://www.haomeiwen.com/subject/zydgmftx.html