我正在尝试提高矩阵定义的斯托克斯问题(非结构化网格上的 P2/P1)的分辨率:
当前实施
我目前正在使用 Uzawa 方法解决它,并使用由预调节器加速的 Krylov 方法。该预处理器是通过矩阵的加法组合构建的和.
我使用 Petsc 来解决每个子问题,,,和(格式为 mpiaij),但我单独处理 Uzawa 方法。
和使用 cg、ASM 预处理和 2 级 icc 求解:
-ksp_type cg -pc_type asm -sub_pc_type icc -sub_pc_factor_levels 2
使用带有 AMG 预处理的 cg 求解:
-ksp_type cg -pc_type hypre -pc_hypre_type boomeramg
使用 cg 解决,无需预处理:
-ksp_type cg -pc_type none
目标
为了提高速度并使调整更容易,我想让 Petcs 完成所有的 Uzawa 过程。我能够通过以 mpiaij 格式转换为 Petsc。但是我使用的工具只能将一个,并且只有一个矩阵传递给 Petsc,但我可以连接++并将其交给 Petsc:
我怎样才能告诉 Petsc 分开从/并使用和作为 Uzawa 方法中 Shur 补码的前置条件矩阵?