Preconditioning
Many iterative solvers have the option to provide left and right preconditioners (Pl
and Pr
resp.) in order to speed up convergence or prevent stagnation. They transform a problem into a better conditioned system , where .
These preconditioners should support the operations
-
ldiv!(y, P, x)
computesP \ x
in-place ofy
; -
ldiv!(P, x)
computesP \ x
in-place ofx
; -
and
P \ x
.
If no preconditioners are passed to the solver, the method will default to
Pl = Pr = IterativeSolvers.Identity()
Available preconditioners
IterativeSolvers.jl itself does not provide any other preconditioners besides Identity()
, but recommends the following external packages:
-
IncompleteLU.jl for incomplete LU decompositions (using drop tolerance).
-
IncompleteSelectedInversion.jl for incomplete LDLt decompositions.
-
AlgebraicMultigrid.jl for some algebraic multigrid (AMG) preconditioners.
-
Preconditioners.jl which wraps a bunch of preconditioners from other packages. If you are a beginner or want to try different ones quickly, this is good starting place.