PETSc:KSP 在 MPI 进程之间的边缘出现奇怪的不连续性

计算科学 宠物
2021-12-26 15:09:41

我正在使用 PETSc 的 SNES 线搜索 (NEWTONLS) 来求解非线性 PDE 系统。SNES+KSP 之前成功解决了一个同类型的测试问题,没有遇到任何麻烦。

但是,对于我目前的问题,如果我使用 KSP 反转雅可比行列式,中间解决方案会在两个 MPI 进程之间的边界处形成一个“脊”。下图显示了一个 SNES 步骤运行后的解决方案-ksp_gmres_modifiedgramschmidt -pc_type asm -sub_pc_type lu -sub_pc_factor_shift_type NONZERO

KSP 给出不连续性

如果我执行完全相同的二进制文件,但使用带有 的 MUMPS 直接求解器,问题似乎消失了-ksp_type preonly -pc_type lu -pc_factor_mat_solver_package mumps,如下所示。

MUMPS 没有问题

在上述两种情况下,SNES 决定从采用完整的牛顿步开始。然而,在 KSP 运行中,山脊继续增长,并且步长在接下来的几个步骤中被显着抑制,然后完全失败。在 MUMPS 运行中,SNES 在完成 5 个完整步骤后直接收敛。

有谁知道这里发生了什么?

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