KSPEKSM#
Implements the Extended Krylov Subspace Method (EKSM) for solving multiple shifted linear systems simultaneously using KSP.
Options Database Keys#
-ksp_eksm_shift shift - the scalar shift for the internal linear solves
-ksp_eksm_haptol tol - the tolerance for happy breakdown (exact convergence) of
KSPEKSM
Note#
This solver should be used with no preconditioning, PCNONE. It is possible to use a preconditioner in the internal
linear solvers, see KSPEKSMGetKSP(). To configure the internal linear solvers from the command line, use the
-eksm_s_ and -eksm_m_ prefixes, respectively.
For instance -ksp_type eksm -eksm_s_ksp_type bcgs -eksm_s_pc_type bjacobi -eksm_m_pc_type none.
Unlike restarted methods such as KSPGMRES, this solver keeps the whole extended Krylov basis, so the maximum
iteration count set with KSPSetTolerances() also fixes the size of the workspace allocated in KSPSetUp():
two basis vectors per iteration and \(O(\textrm{max\_it}^2)\) scalars of dense storage. Choose it accordingly, and
set it before KSPSetUp(); changing it afterwards makes the next KSPSolve() fail.
When a mass matrix \(M\) is given to MatCreateNestFromMultipleShifts(), the residual norm used by the convergence
test and reported by -ksp_monitor is \(\|M^{-1}(b-(K+\sigma_i M)x_i)\|\) maximized over the shifts, not the
unpreconditioned residual norm.
See Also#
KSP: Linear System Solvers, KSPCreate(), KSPSetType(), KSPType, KSP, KSPEKSM, KSPEKSMSetHapTol(), KSPEKSMSetKSP(), KSPEKSMSetShift(),
MatCreateNestFromMultipleShifts(), MatCreateVecNestFromMultipleShifts()
Level#
beginner
Location#
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages