使用 Petsc 预处理 Uzawa 方法

计算科学 线性代数 并行计算 宠物 预处理 克雷洛夫法
2021-11-30 15:16:01

我正在尝试提高矩阵定义的斯托克斯问题(非结构化网格上的 P2/P1)的分辨率M

M=(Au0Bu0AvBvBuTBvT0)

当前实施

我目前正在使用 Uzawa 方法解决它,并使用由预调节器加速的 Krylov 方法。该预处理器是通过矩阵的加法组合构建的ApAm.

我使用 Petsc 来解决每个子问题,Au,Av,ApAm(格式为 mpiaij),但我单独处理 Uzawa 方法。

AuAv使用 cg、ASM 预处理和 2 级 icc 求解:

-ksp_type cg -pc_type asm -sub_pc_type icc -sub_pc_factor_levels 2

Ap使用带有 AMG 预处理的 cg 求解:

-ksp_type cg -pc_type hypre -pc_hypre_type boomeramg

Am使用 cg 解决,无需预处理:

-ksp_type cg -pc_type none

目标

为了提高速度并使调整更容易,我想让 Petcs 完成所有的 Uzawa 过程。我能够通过M以 mpiaij 格式转换为 Petsc。但是我使用的工具只能将一个,并且只有一个矩阵传递给 Petsc,但我可以连接M+Ap+Am并将其交给 Petsc:

(M000Ap000Am)

我怎样才能告诉 Petsc 分开MAp/Am并使用ApAm作为 Uzawa 方法中 Shur 补码的前置条件矩阵?

0个回答
没有发现任何回复~