研究需要,学习Fluent的网格msh格式。

设有一个网格如上图,是一个1x9长方体域,每单位长度有5个点,4个体,共210个点和164个体。


输出msh格式的文件,fluent输出的是非结构网格,如果是2维的话,就是由一系列的点和线组成,每条线和体之间有特定的拓扑关系。
打开输出的msh文件,开头两行:
- (0 " Created by : Fluent_V6 Interface Vers. 19.5.0")
- (2 2)
0是注释类型的标号,没有特定含义,方便操作者阅读用的。2是网格维度的标号,(2,2)表示这一行注明是网格维度的,后面的2表示这个网格是2维的网格。
- (0 "Node Section")
- (10 (0 1 d2 0 2))
- (10 (a 1 d2 1 2)
- (
- 0 0
- 0.0012499999751647284 0
- 0 0.0012499999720603228
- 0.0012499999751647275 0.0012500000000000005
- 0 0.0024999999441206455
- 0.0012499999751647264 0.0025000000000000005
- 0 0.0037499999161809683
- 0.0012499999751647251 0.0037500000000000003
- 0 0.004999999888241291
- 0.0012499999751647245 0.0050000000000000001
- 0.0024999999503294568 0
- 0.0024999999503294568 0.0012500000000000002
- 0.0024999999503294559 0.0025000000000000005
- 0.002499999950329455 0.0037500000000000007
- ...
- ))
同样,第一行标号0代表后面的是注释,第二行标号10代表节点数据。遵循格式(10 (zone-id first-index last-index type ND)(x1 y1 z1 x2 y2 z2... ))。参考Fluent mesh文件格式简单说明 - 脉搏96 - 博客园可知type有多种。如果zone-id=0, first-index将是1,last-index等于节点数(d2就是210),type设置为0, ND是网格维度,后面不跟坐标数据。如果zone-id大于0,则表示结构体中的nodes属于编号zone-id的zone区域。此时first-index和last-index为该zone区域的节点编号,type设置为1,ND为可选参数,表示网格维度。当ND=2时,节点数据不显示z坐标。因为就一个zone,所以第二行和第三行的index是一样的。
- (12 (0 1 a4 0 0))
- (12 (b 1 a4 1 3))
点集之后接着两行标号为12代表体集。a4就是164也就是本网格体元数。看下图,后面接着的3代表四面体类型。

后面并没有接cell的数据,估计就是生成了一个从1到a4的数组。
- (13 (0 1 175 0 0))
- (0 "Interior faces of zone FLUID")
- (13 (c 1 11b 2 2)(
- 2 4 1 5
- 4 3 1 2
- 4 6 2 6
- 6 5 2 3
- 6 8 3 7
- 8 7 3 4
- 8 a 4 8
- b c 5 9
- c 4 5 6
- c d 6 a
- d 6 6 7
- d e 7 b
- e 8 7 8
- ...
- ))
13是面的标号。第一行是总起,共有175(373)条线(面),下面是各部分的信息。面(线)有分内部面(线)以及边界。上面给出的是interior内部面,共有11b(283)条。看第三行,第四个2表示interior,最后一个2表示是线性类型。
之后的每一行四个数字代表(点1,点2,左边体元,右边体元)。看到第一行的2 4 1 5

就是说,在点2和点4所连成的线,左边的体是1,右边的体是5。为什么前面cell没有给过多的信息了呢?因为在这里就可以定义好了,不用重复定义,节省空间。这一行也告诉我们,这条线是由哪两个点连成的,同时也带有和体元有关的位置信息,在有限体积里是必要的。
- (0 "Faces of zone IN")
- (13 (d 11c 11f 3 2)(
- 3 1 1 0
- 5 3 2 0
- 7 5 3 0
- 9 7 4 0
- )
看到IN的边界,注意,它的起点是11c,而上方interior的终点是11b,是首尾相连的。type是3,代表wall类型。看到每一行最后一个都是0,这意味着,边界的线规定了右边就是计算域外,左边则是计算域里面。这样方便计算。