[关闭]
@daidezhi 2016-05-18T11:49:41.000000Z 字数 2111 阅读 7827

CFD多面体网格数据结构—OpenFOAM

CFD FVM OpenFOAM Mesh


有限体积网格

基于有限体积方法离散的求解器可以使用任意单元类型的非结构网格系统,在二维情况下,控制体单元类型可以为

  • 三角形(Triangle);
  • 四边形(Quadrilateral);
  • 五边形(Pentagon);
  • 六边形(Hexagon);
  • 多边形(Polygon)。

同样地,在三维情况下,控制体单元类型可以为

  • 四面体(Tetrahedron);
  • 金字塔(Pyramid);
  • 六面体(Hexahedron);
  • 棱柱体(Prism);
  • 多面体(Polyhedron)。

对于结构网格,只需在求解器内部将其单元作为四边形(2D)或六面体(3D)来处理。因此,结构网格和非结构网格的区别不在于单元类型,而在于求解器内部的数据结构和具体算法。

在CFD技术高速发展的今天,非结构网格系统因其对于复杂几何外形的高度适应性而被所有主流CFD求解器(Fluent, OpenFOAM, Star-CD等)采用。严格来讲,二维的三角形、四边形也属于多边形,三维的四面体、金字塔、六面体、棱柱体亦可归类于多面体,因此,使用统一的多边形或者多面体网格数据结构可以更加方便的处理和使用任意单元类型的非结构网格或者混合网格系统。


OpenFOAM中的多面体网格数据结构

OpenFOAM不支持二维网格,对于导入的外部二维网格,OpenFOAM会自动给网格加一个厚度,然后将前后面边界条件设置为空(empty)。OpenFOam多面体网格文件位于算例文件夹下的/constant/polyMesh子文件夹,所有文件均为ASCII格式,具体文件及其包含的信息如下表所示。

文件 存储信息
points 所有节点的三维坐标
faces 构造面单元的节点编号
owner 与面单元相对应owner体单元编号
neighbour 与面单元相对应neighbour体单元编号
boundary 边界条件设置
pointZones
faceZones
cellZones

points文件

points文件以矢量场的形式存储所有节点坐标,单位为米(m),除去文件开头说明,包含内容如下图所示。节点的编号即为其坐标数据在points列表中的位置,初始编号为0

fig_point_file

faces文件

faces文件存储面单元—节点拓扑结构数据。除去文件开头说明,包含内容如下图所示。面单元最少由3个节点组成(三角形),其构造节点总数为每一行数据第一个整数(任意不小于3的值),每一行括号内的整数为面单元构造节点的编号,表示其在points列表中的位置。面单元的编号即为数据在faces列表中的位置,初始编号为0。整个faces列表包含边界面单元。

face_file.png-169.4kB

owner文件

如下图所示,owner体单元(以下简称单元)与neighbour单元的标识基于公共面单元face外法矢的方向,即由owner单元指向neighbour单元。owner单元与neighbour单元有时亦被称为左单元右单元,意义相同。

owner_neighbour.png-23.6kB [1]

owner文件存储owner单元—面单元拓扑结构数据。除去文件开头说明,包含内容如下图所示。owner列表存储相对应面单元的owner单元编号,初始编号为0owner列表的位置对应面单元的编号,亦对应于其在faces列表中的位置。任何一个面单元总存在一个owner单元,因此owner单元总数与面单元总数nFaces相等。

owner_file.png-124.2kB

此外,节点总数nPoints、体单元总数nCells、面单元总数nFaces以及内部面单元总数nInternalFaces相关信息存储于owner文件开头说明(见下图)。

head_file.png-78.9kB

neighbour文件

neighbour文件存储neighbour单元—面单元拓扑结构数据。除去文件开头说明,包含内容如下图所示。neighbour列表存储相对应面单元的neighbour单元编号,初始编号不为0neighbour列表的位置对应面单元的编号,亦对应于其在faces列表中的位置。需要特别说明的是,因为边界面单元没有neighbour单元,neighbour单元总数与内部面单元总数nInternalFaces相等。

neighbour_file.png-150.1kB

boundary文件

boundary文件存储整个网格的边界信息,比如边界区域名称、边界类型type、面单元个数nFaces以及起始面单元编号startFace等。除去文件开头说明,包含内容如下图所示。

boundary_file.png-160.1kB

需要说明的是,边界面单元(无neighbour单元)存储于faces列表的最后,如下图所示,灰色元素表示每个边界区域的起始面单元。

boundary_example.png-32.1kB [2]

其余文件

pointZones文件、faceZones文件以及cellZones文件一般使用不到,暂且不予讨论。


感谢您的阅读,欢迎讨论和批评指正。

作者:戴得志
2016年5月17日


[1] Moukalled F, Mangani L, Darwish M. The Finite Volume Method in Computational Fluid Dynamics[M]. Springer, 2016.
[2] Maric T, Hopken J, Mooney K. The OpenFOAM technology primer[J]. 2014.
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注