自适应网格细化 (AMR) 的网格纵横比问题

计算科学 网格生成 自适应网格细化 数据结构
2021-12-01 07:38:47

我正在为我的有限体积代码实现 AMR。让我使用二维网格来描述我的问题。

SINGLE初始单元格(让网格细化级别 k = 0)作为四叉树的根开始,并继续将单元格拆分为 4、16、64 ...... k = 1、2、3 的子单元格。 ..在细化过程中很简单,并且适用于SQUARE域(长度:宽度 = 1:1)(图中的案例 1)。

如果网格域是RECTANGLE域(纵横比 > 1,例如情况 2)怎么办?在这种情况下,对初始长细胞进行四等分只能生成更多长子细胞,这是不好的,因为几乎所有数值方法(FDM/FVM/FEM)都支持由(接近)方形细胞形成的网格。

为了避免细化过程中的纵横比问题,我考虑使用具有更多初始单元格的森林(案例 3)。在这个模型中,使用了数组和四叉树的组合数据结构,并且特征

  • 初始生成粗网格以适应域(其纵横比可以是 >>1),方形单元(或纵横比 ~1 的单元)然后用作其子单元的四叉树的根;
  • 形成初始粗网格的根单元可以存储在一个数组中,单元的数量保持不变;
  • 子单元存储在上面每个根单元下的四叉树中,并且可以在 AMR 期间频繁添加/删除。

优点:更容易适应具有任何纵横比的域。

缺点:更复杂的细胞/子细胞遍历。

我的解决方案可行吗?有什么建议吗?

在此处输入图像描述

1个回答

自适应网格细化的所有“真实”实现都从非结构化粗网格开始,因为人们想要解决的域并不总是矩形:-) 所以你的案例 3 正是人们所做的:在你的情况下,粗网格只是由的两个正方形。

对于这种非常特殊的情况,人们还可以实现所谓的“各向异性细化”:在网格细化时,一个单元不会被 4 个子代替换,而只有 2 个将单元拆分为东西向或南北向的子代。

我将添加通常的通知:有许多非常好的软件库可以实现自适应网格细化。您可以花费大量时间(一两年)来实现可用于复杂几何图形的优秀算法,或者您可以只使用其他人的出色工作。你可能明白我的建议是什么。