-pc_sor_symmetric | - Activates symmetric version | |
-pc_sor_backward | - Activates backward version | |
-pc_sor_forward | - Activates forward version | |
-pc_sor_local_forward | - Activates local forward version | |
-pc_sor_local_symmetric | - Activates local symmetric version (default version) | |
-pc_sor_local_backward | - Activates local backward version | |
-pc_sor_omega <omega> | - Sets omega | |
-pc_sor_diagonal_shift <shift> | - shift the diagonal entries; useful if the matrix has zeros on the diagonal | |
-pc_sor_its <its> | - Sets number of iterations (default 1) | |
-pc_sor_lits <lits> | - Sets number of local iterations (default 1) |
Notes: Only implemented for the AIJ and SeqBAIJ matrix formats. Not a true parallel SOR, in parallel this implementation corresponds to block Jacobi with SOR on each block.
For AIJ matrix if a diagonal entry is zero (and the diagonal shift is zero) then by default the inverse of that zero will be used and hence the KSPSolve() will terminate with KSP_DIVERGED_NANORIF. If the option KSPSetErrorIfNotConverged() or -ksp_error_if_not_converged the code will terminate as soon as it detects the zero pivot.
For SeqBAIJ matrices this implements point-block SOR, but the omega, its, lits options are not supported.
For SeqBAIJ the diagonal blocks are inverted using dense LU with partial pivoting. If a zero pivot is detected the computation is stopped with an error
Developer Notes: We should add support for diagonal blocks that are singular to generate a Inf and thus cause KSPSolve() to terminate with KSP_DIVERGED_NANORIF instead of stopping the program allowing a nonlinear solver/ODE integrator to recover without stopping the program as currently happens.
Level:beginner
Location:src/ksp/pc/impls/sor/sor.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages