我正在为我的有限体积代码实现 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 期间频繁添加/删除。
优点:更容易适应具有任何纵横比的域。
缺点:更复杂的细胞/子细胞遍历。
我的解决方案可行吗?有什么建议吗?
