警告
解决鞍点问题比确定问题要涉及更多的选择,并且有很多事情可能出错。在所有级别上使用监视器来调试收敛,以确保在辅助运算符为奇数时(通常只是一个恒定的空空间)正确处理空空间,并确保前置条件稳定。这些技术将在这个问题中讨论。
解决鞍点问题
您可以从《用户手册》中有关求解块矩阵的部分开始。对于类似Stokes的问题,您可以使用PCFIELDSPLIT构建Schur补码预处理器。
-pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_detect_saddle_point
可以将其与最小二乘换向器前置调节器组合以用于Schur补码(-fieldsplit_1_pc_type lsc
)。-fieldsplit_1_ksp_type preonly
让外部迭代完成大部分工作是很常见的。当以这种方式使用时,块三角形变体很流行-pc_fieldsplit_schur_fact_type upper
。
您可以在我们的论文 (预印本)中使用选项选项找到有关求解器组成的更多详细信息,该论文还讨论了将多网格交换与块分解(将字段拆分放入多网格内部)。
对于许多问题,您将需要定制字段分解和Schur补码预处理器,其中许多涉及辅助运算符。例如,Elman等人的“压力对流扩散”(PCD)方法要求在压力空间中离散化辅助算子。为此,请参见PCSHELL示例和用户手册部分。