对于不确定的对称系统,我应该使用PETSc中的哪些预处理器(和求解器)?


12

我的系统是带有拉格朗日乘子的对称有限元问题(例如不可压缩的斯托克斯流):

(ABTBC)

其中是典型情况(我什至已确保方程式已编号,以便拉格朗日乘数出现在最后)。该系统非常大(+ 100k行)。C=0

阅读了这个问题的答案后,给我的印象是,有合适的预处理器可用于混合有限元问题。

-ksp_type minres -pc_type none -mat_type sbaij尽管精度不高(使用线性问题会导致多次牛顿迭代),但我使用PETSc设法用MINRES()解决了系统。预调节器和ksp-solver的其他组合似乎没有用。

是否有PETSc标志的组合可以比仅使用MINRES更快地解决此系统?


1
欢迎使用SciComp SE!就清楚性和一般性而言,您的问题提出得很好。只有一个句子有些不清楚或不完整:您的意思是由不精确的计算引起的?
1

1
我忘了说完这句话!我希望现在很清楚。
MikaelÖhman'13

Answers:


13

警告

解决鞍点问题比确定问题要涉及更多的选择,并且有很多事情可能出错。在所有级别上使用监视器来调试收敛,以确保在辅助运算符为奇数时(通常只是一个恒定的空空间)正确处理空空间,并确保前置条件稳定。这些技术将在这个问题中讨论。

解决鞍点问题

您可以从《用户手册》中有关求解块矩阵的部分开始。对于类似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示例和用户手册部分。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.