:orphan: # 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 `MATAIJ` 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_NANORINF` 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`, `PC`, `PCJACOBI`, `PCPBJACOBI`, `PCBJACOBI` ## Level beginner ## Location src/ksp/pc/impls/vpbjacobi/vpbjacobi.c --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/impls/vpbjacobi/vpbjacobi.c) [Index of all PC routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)