八叉树立方体到四面体

计算科学 有限元 网格生成
2021-11-28 12:03:28

我正在尝试了解有关体积网格划分的更多信息,并决定尝试实现一个简单的体积网格划分器。我选择的策略是使用八叉树细分我的空间,并根据一些标准进行改进。我已经确保我的八叉树是平衡的,使得两个相邻单元格之间的差异不超过 1(所谓的 2:1 规则)。

我现在必须把我的细胞切成四面体。我读过 Body Centered Cubic (BCC) 是一种流行的方法,但不幸的是,我还没有找到任何文献可以很好地解释如何处理两个不同级别的相邻立方体之间的差异。

我还看到如下所示将立方体切割成 6 个 tetras 是很常见的,但我还是没有找到任何解释如何处理不同级别的立方体:

http://www.ics.uci.edu/~eppstein/projects/tetra/sixcube.gif

如果有人能解释应该如何将八叉树立方体切成四边形,或者可能将我推荐给关于这个主题的论文/演示文稿,我将不胜感激。

2个回答

您可以通过两种不同的方式进行操作:

  • 你接受你的网格有悬挂节点:就像你的八叉树的细胞在细化的地方有 2:1 的关系一样,你可以对 tet 网格有同样的 2:1 关系。如果您将六面体的各向同性 (BCC) 细化为 tets,则八叉树的相邻单元之间的 2:1 关系也会继承给 tets。

  • 如果您不想挂起节点,则可以执行后处理步骤。假设你已经完成了 BCC 细化,那么可能有相邻的 tets 的大小相差 2 倍。你只需要以这样一种方式来细化较大的 tet,使它们现在匹配它们的较小的邻居。如何做到这一点在 2d 案例中的一张纸上很容易理解。在 3d 中,这有点棘手,但您会看到您可以以与邻居匹配的方式对 tet 进行各向异性细化。

我发现以下论文清楚地描述了如何做 BCC 网格,以及如何处理悬挂节点:

自适应和高质量的四面体网格生成

等值面填充

以下演示文稿除了描述 BCC 之外,还描述了面心立方 (FCC):未绑定的最优四面体网格