我打算使用多重网格来计算一些特征值和向量,我注意到 PETSc 对多重网格有高级支持。PETSc 文档说不应该使用这部分 PETSc,因为它很快就会被替换。
哪些其他库对多重网格有高级支持,PETSc 大概多久会发布新的多重网格支持?
我打算使用多重网格来计算一些特征值和向量,我注意到 PETSc 对多重网格有高级支持。PETSc 文档说不应该使用这部分 PETSc,因为它很快就会被替换。
哪些其他库对多重网格有高级支持,PETSc 大概多久会发布新的多重网格支持?
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 步教程程序。