哪些库对多重网格有良好的高级支持?

计算科学 宠物 图书馆 多重网格
2021-12-13 22:43:19

我打算使用多重网格来计算一些特征值和向量,我注意到 PETSc 对多重网格有高级支持。PETSc 文档说不应该使用这部分 PETSc,因为它很快就会被替换。

哪些其他库对多重网格有高级支持,PETSc 大概多久会发布新的多重网格支持?

2个回答

PETSc 多重网格(作为预处理器)非常成熟,可以通过键入以下内容与 PETSc 中的任何 KSP(迭代 Krylov 方法)求解器一起使用:

-pc_type mg

但是,这需要您有某种方法来生成粗略级别,例如具有由 PETSc DA 对象定义的结构化网格,这些网格将自动粗化。

或者,如果你想使用 HYPRE 包中的代数多重网格,你可以使用

-pc_type hypre

或者来自 ML 包

-pc_type ml

这些是在配置过程中通过附加

--download-hypre=1 --download-ml=1

到您的 ./configure 命令行。

(目前)贬值的部分是 DMMG 框架,它正在被 SNES(非线性)FAS 求解器取代,并更好地支持在使用 MG 或 FAS 时处理多级离散化。另一个替换(对于线性问题)是

-pc_type gamg -pc_gamg_type sa

这是一个更新的代码,在 PETSc 中原生,高度可扩展的平滑聚合代数多重网格。

PETSc 和 Trilinos 都有很好的代数多重网格方法。

deal.II 实现了有限元离散化的几何多重网格方法,例如参见第 16 步教程程序