非结构化网格 AMR

计算科学 自适应网格细化 非结构化网格
2021-12-10 05:52:15

是否有用于在非结构化网格上进行并行 AMR 的库?对于有限体积代码,具有任意形状面的多面体单元与六面体一样容易处理,事实上,对于 AMR 来说可能更好,因为不需要为细化网格做任何特别的事情。由于缺乏库,我试图通过将多面体单元拆分为顶点在多面体中心的金字塔来从头开始执行此操作。为此,首先将每个面分割成四边形以形成金字塔的底部。如果多面体恰好是六面体,我将一些金字塔(准确地说是三个)合并回来,得到众所周知的六面体的 1 到 8 分割。

我还没有编写粗化阶段的代码,但我想我需要一个树数据结构,比如用于十六进制的八叉树。我是否甚至需要这个,因为只要生成的单元格保持凸面,我就可以任意合并共享一个面的相邻单元格?我的意思是,如果一个十六进制被分成 8 个子单元,如果我决定稍后进行粗化,我就不必恢复原始单元。我没有查阅任何文献,也没有彻底检查现有的图书馆,这可以节省我很多时间。

1个回答

我最终得到了一个简单的 AMR 实现,它可以为多面体单元完成工作

a) 无粗化。始终首先加载原始粗网格,然后对其应用细化。这摆脱了保留 AMR 历史所需的八叉树等。此外,由于求解器的内部数据结构是静态的(向量/数组),因此不可能仅有效地优化一个单元格,因此无论如何从头开始重新执行 AMR 是不可避免的

b)多面体细胞被精炼成四面体/金字塔,而六面体被分裂成六边形,正如我之前提到的。

这给了我一个很好的 AMR 模拟,但它只是“本地”的(每个处理器都有自己的改进)。有一个用于任意多面体的并行 AMR 库会很好。