petsc-3.14.6 2021-03-30
Report Typos and Errors

PCVPBJACOBI

Variable size point block Jacobi preconditioner

Notes

See PCJACOBI for point Jacobi preconditioning, PCPBJACOBI for fixed point block size, and PCBJACOBI for large size blocks

This works for AIJ matrices

Uses dense LU factorization with partial pivoting to invert the blocks; if a zero pivot is detected a PETSc error is generated.

One must call MatSetVariableBlockSizes() to use this preconditioner

Developer Notes

This should support the PCSetErrorIfFailure() flag set to PETSC_TRUE to allow the factorization to continue even after a zero pivot is found resulting in a Nan and hence terminating KSP with a KSP_DIVERGED_NANORIF allowing a nonlinear solver/ODE integrator to recover without stopping the program as currently happens.

Perhaps should provide an option that allows generation of a valid preconditioner even if a block is singular as the PCJACOBI does.

See Also

MatSetVariableBlockSizes(), PCCreate(), PCSetType(), PCType (for list of available types), PC, PCJACOBI

Level

beginner

Location

src/ksp/pc/impls/vpbjacobi/vpbjacobi.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages