结构化到非结构化网格 - 计算单元格的体积

计算科学 网格生成
2021-12-18 05:24:34

我有一个 3-D 结构化网格,我正在尝试将其转换为非结构化网格。

这是显示节点的二维结构化网格的图片。它关于 x 轴 (y = 0) 是轴对称的。我将旋转它以使其成为 3-D。

我在这个转换中主要关心的是我需要从结构化网格中输出每个单元格的体积。但正如你所看到的,我的细胞是不规则的六面体/五面体,具有不平行的相对面(如果我错了,请纠正我,我真的希望我错了,但我不认为我是)。有人对如何计算每个细胞的体积有任何建议吗?我有一些想法,但对其他想法持开放态度。我的一位同事提到我可以将体积分解为四面体并以这种方式计算体积。到目前为止,这是我的第一选择。

我的想法不是那么简单,算法可以相当复杂。有人对如何计算音量有建议吗?

2个回答

请注意,对于任何元素形状,您都可以编写(这里维度 dim = 2,但 3D 类似)

V=1dimK(x,y)Tdx=12K(x,y)Tnds
使用第二个积分,您可以遍历每个元素的面并在其边界上积分以获得体积V.

如果您有(唯一)网格面的列表,您可以遍历所有面并贡献与每个面相邻的左/右元素的体积±符号取决于法线相对于元素的方向。

这并不能完全解决您的问题,因为即使单元面也可能具有三角形和四边形的其他形状(您可以轻松找到正交公式),因此您可能无论如何都被迫进行一些元素细分。对于 2D 面,这可能比 3D 单元更容易。

看看这个六面体细胞体积的高效计算它解释了使用代数方程(而不是积分)计算体积的几种方法,第一种方法非常简单,不需要复杂的算法。

如果您在根据点的顺序查找外法线时遇到问题,请选择六面体内部的任意点并使用点积来查找法线向量的方向。