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 $Ax = b$ into a better conditioned system $(P_l^{-1}AP_r^{-1})y = P_l^{-1}b$, where $x = P_r^{-1}y$.
These preconditioners should support the operations
A_ldiv_B!(y, P, x)computesP \ xin-place ofy;A_ldiv_B!(P, x)computesP \ xin-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:
ILU.jl for incomplete LU decompositions (using drop tolerance);
IncompleteSelectedInversion.jl for incomplete LDLt decompositions.