非结构化网格预处理

计算科学 流体动力学 有限体积 非结构化网格 软件推荐
2021-12-19 10:08:39

为了用自己编写的代码求解 PDE,需要对来自网格生成器的数据进行预处理。我最近开始从笛卡尔网格转向非结构化网格。

我读完了作者 S.Mazumder 的书的 FVM 部分,建议提取以下信息:

几何相关信息:

• 几何图形是 2D 还是 3D:geom_type

• 单元格总数:ncells

• 人脸总数:nfaces

• 边界面总数:nbfaces

• 顶点(或节点)总数:nnodes

• 单元中心坐标:xc(ncells)、yc(ncells)、zc(ncells)(仅限 3D)

• 面中心坐标:xf(nfaces)、yf(nfaces)、zf(nfaces)(仅限 3D)

• 顶点或节点坐标:xv(nnodes)、yv(nnodes)、zv(nnodes)(仅在 3D 中)

• 表面法线:sn(nfaces,2)(2D)或 sn(nfaces,3)(3D)

• 细胞体积:vol(ncells)

• 面部区域:areaf(nfaces)

连接信息:

• 给定单元的面数:nface(ncells)

• 给定面的顶点(或节点)数:nfnode(nfaces)

• 给定单元的顶点(或节点)数:ncnode(ncells)

• 从单元格到面的链接:link_cell_to_face(ncells,nface)

• 从面到单元的链接:link_face_to_cell(nfaces,2)

• 从面到顶点(或节点)的链接:link_face_to_node(nfaces,nfnode) • 从单元到顶点(或节点)的链接:link_cell_to_node(ncells,ncnode)

• 从面到边界面的链接:link_face_to_bface(nfaces)

• 从边界面到面的链接:link_bface_to_face(nbfaces)

尝试使用来自 PointWise 的不同网格输出格式,它们都没有这样的数据。自己编写用于预处理网格(甚至是网格生成器本身)的脚本会非常有趣,但只对实际的 FVM 方法感兴趣。

有人可以推荐将非结构化网格预处理为带有连接信息的漂亮干净的数组/矩阵的文献吗?或者对流行的网格格式有用的解析脚本?

尝试在 C/MatLab 中为 NS 编写自己的 FVM 脚本。

这是我在这里的第一篇文章,令人惊讶的是它恰逢我的生日。谢谢你。

1个回答

我会省略一些事情以使其更简单。这就是我们为能够使用多面体网格的代码执行此操作的方式: https ://github.com/nikola-m/freeCappuccino-dev/blob/master/src/mesh/geometry.f90

这就是所谓的基于人脸的数据结构。

我们使用散度定理来计算几何数据,如体积和细胞中心坐标。Wang 的一篇论文(ZJ Wang, Improvement Formulation for Geometrical Properties of Arbitrary Polyhedra, AIAA Journal 37(11) 1999.)描述了这种方法,Fluent 文档中也引用了该论文。

由于数据通常以大多数网格格式格式化(通常更适合 FEM 或基于顶点的 FVM)的一般方式,我们需要进行一些预处理,以便通过面查找单元邻居。我们有一个网格格式转换器形式的工具也可用于满足此目的