使用高阶紧致方案作为高斯赛德尔平滑器的泊松方程的完全多重网格性能

计算科学 多重网格 泊松
2021-12-15 06:46:53

在使用高阶紧致离散化计算泊松方程时,我有一个关于 FMG(全多网格)性能的问题。我正在使用六阶紧凑方案来离散泊松方程并使用高斯赛德尔方法进行平滑/松弛。我在我正在处理的二维域的所有侧面都采用了 Neumann 边界条件。

我按照 Briggs 等人的 Multigrid 教程通过在方程 Ax = b 中使零空间向量与 RHS 向量正交来处理 Neumann BC。我不会在域中固定值,因为它会导致多重网格级别之间的传输变得复杂。相反,我在 FMG 循环的每个级别上都施加了零均值条件。

对于 128X128 网格,残差的 L2 范数在 FMG 循环结束时处于 32.00,这对于整个域来说非常高。但当均匀分布在所有内部点之间时,它会更少。对于 Neumann 案例,我想将 L2 范数至少收敛到 1e-2。在不改变我在细网格上放松的次数的情况下,是否有任何技术可以用来加快上述收敛速度。我认为高阶方案本身的平滑特性很差。它在剔除域中存在的高频方面没有那么有效。

是否有一种有效且清晰的策略将解决方案固定在精细网格中的某一点并继续使用 FMG?

另外,当我们从一个 V 循环到另一个 V 循环时,如果我们使用从粗网格到细网格的高阶插值算子会有所帮助吗?

请让我知道你的建议。

最佳三位一体

2个回答

对于高阶离散化,常规 Gauss-Seidel 方法不是一个好的平滑器。根据我在有限元多重网格方面的经验,我希望块大小与模板宽度相当的块 Gauss-Seidel 应该可以完成这项工作。

示例:如果您的模板涉及邻居和第二个邻居,请使用大小为 4 或 9 的块。这些块应包含 4 或 9 个离散点的小正方形补丁的自由度。您可以使用重叠面片(每个面片超过 4 个点很昂贵)或不重叠运行该方法。

高阶网格传输也可以提高您的性能。

相反,我在 FMG 循环的每个级别上都施加了零均值条件。

我不相信你需要(或想要)这样做。仅在最好的网格上执行此操作就足够了。使用 FAS,将细网格残差限制到粗网格应该强制执行此条件,而无需重新应用它。

此外,正如@Guido 所说,GS 对此的平滑度很差,您很可能会看到更高精度的网格传输有所改进。

我还遇到过在粗网格上使用低阶离散化方案的代码,即在最细网格上使用二阶和在粗网格上使用一阶的有限体积方案。这似乎工作得很好,因为粗网格的目的是消除细网格的错误,因此扩散低阶方案实际上可以帮助您。这似乎有点类似于人们使用“P-multigrid”的高阶 DG 方法的实践——而不是几何多重网格,您在多重网格循环中使用相同的网格,但多项式重建的阶数不同。