6.3.1. Preconditioning within KSP

Up: Contents Next: Convergence Tests Previous: Krylov Methods

Since the rate of convergence of Krylov projection methods for a particular linear system is strongly dependent on its spectrum, preconditioning is typically used to alter the spectrum and hence accelerate the convergence rate of iterative techniques. Preconditioning can be applied to the system (1 ) by

where ML and MR indicate preconditioning matrices (or, matrices from which the preconditioner is to be constructed). If ML = I in (2 ), right preconditioning results, and the residual of (1 ),

is preserved. In contrast, the residual is altered for left (MR = I ) and symmetric preconditioning, as given by

By default, all KSP implementations use left preconditioning. Right preconditioning can be activated for some methods by using the options database command -ksp_right_pc or calling the routine

   ierr = KSPSetPreconditionerSide(KSP ksp,PCSide PC_RIGHT); 
Attempting to use right preconditioning for a method that does not currently support it results in an error message of the form
   KSPSetUp_Richardson:No right preconditioning for KSPRICHARDSON 
We summarize the defaults for the residuals used in KSP convergence monitoring within Table 3 . Details regarding specific convergence tests and monitoring routines are presented in the following sections. The preconditioned residual is used by default for convergence testing of all left-preconditioned KSP methods except for the conjugate gradient, Richardson, and Chebyshev methods. For these three cases the true residual is used by default, but the preconditioned residual can be employed instead with the options database command ksp_preres or by calling the routine
   ierr = KSPSetUsePreconditionedResidual(KSP ksp); 

Note: the bi-conjugate gradient method requires application of both the matrix and its transpose plus the preconditioner and its transpose. Currently no all matrices and preconditioners provide this support and thus the KSPBICG cannot always be used.


Up: Contents Next: Convergence Tests Previous: Krylov Methods