有限体积法:非结构化网格 vs 八叉树自适应 + 单元切割

计算科学 网格生成 流体动力学
2021-11-28 02:38:34

我正在使用 OpenFOAM C++ Computational Continuum Mechanics 库(它可以处理流体-固体相互作用、MHD 流动......),它使用任意非结构化网格。这是由利用快速生成(通常是自动)非结构化网格的优势来模拟复杂几何形状中的问题的想法驱动的。

然而,最近我遇到了另一种方法:带有单元“切割”的八叉树自适应 carthesian 网格,其中使用积极的网格细化来描述复杂的几何形状。

从数字的角度来看,Carthesian 网格要准确得多,所以我的问题是:有没有人使用/实现这些方法中的一种或两种方法的经验?他们如何相互比较?

我正在开发两相流体流动的代码,我注意到例如场梯度的重建可以很容易地在 Carthesian 网格上更准确,而非结构化网格需要线性回归来处理场的突然变化......

3个回答

我认为所有更现代的 FEM 库(例如 deal.II、libmesh、...)都使用基于八叉树的方案(或者,更准确地说:八叉树森林,一棵树从非结构化粗网格的每个单元开始)。这样做有很多优点,主要是因为您知道网格单元的层次结构。这意味着您可以轻松地进行粗化、几何多重网格等,如果您从一个精细的非结构化网格开始,所有这些都是非常困难的。此外,分区成为一个几乎微不足道的问题。该方法的缺点是,如果您有一个复杂的几何图形,以前您只需要向网格生成器描述它,而现在您还必须向 FEM 代码描述它,因为在细化位于边界。

在其他条件相同的情况下,我认为基于八叉树的方法比使用一个巨大的非结构化网格更加灵活和有用。

动态网格细化对于提取解的各向同性特征非常有效。许多 AMR 实现强制执行细化标准,例如进行八叉树细化。这有时会导致比需要更大的细化区域,但通常无论如何都需要一些几何分级,并且不同的 AMR 实现可以将细化定位在最佳非结构化细化网格的适度恒定因子内。h2:1

-AMR最麻烦的地方是捕捉各向异性特征,因为 -AMR 没有办法旋转坐标以符合这些各向异性特征。例如,高雷诺数 CFD 具有极薄的边界层,并且在许多工业模拟中使用用未对齐的结构化网格捕获如此细的边界是非常低效的。有一些方法可以嵌套局部旋转的网格,但这些方法技术性很强,超出了八叉树细化或切割单元方法的范围。请注意,移动网格方法(通常称为 -refinement,Huang 和 Russell 最近的书hh106r是一个很好的资源)可用于对齐移动的各向异性特征。

另请注意,隐式时间离散化和线法更简单,并且对于自由度数和网格连通性不变的方法具有更好的属性。此外,如果物理和空间离散化是连续可微的,就会有一个连续伴随(对灵敏度分析、优化、不确定性量化等有用)。

最佳选择与问题高度相关,但对于具有薄边界层的 CFD 问题,尤其是在使用壁分辨率而不是壁建模时,非结构化或块结构的顺应网格是不错的选择。

结构化网格允许许多可用于性能的假设,但通常比存在复杂边界的非结构化网格更难实现且执行效率更低。非结构化网格将有效地逼近复杂边界,无需额外编程,但很少可以对矩阵结构做出假设。与往常一样,除了更适合您需求的方法之外,没有更好的方法。前者通常用于海洋、气候、宇宙/地理建模,后者用于工程问题。