KSPIDR#

IDR(s): Induced Dimension Reduction method for general nonsymmetric linear systems [GS11].

Options Database Keys#

  • -ksp_idr_s s - shadow space dimension (default 4); larger s improves convergence at the cost of s additional vectors and s extra inner products per step, see KSPIDRSetS()

  • -ksp_idr_cosine cth - omega stabilization cosine threshold (default 0.7, 0 = off); prevents near-orthogonality stalling in the minimal-residual omega step

Notes#

IDR(s) is a short-recurrence, non-restarting Krylov method for general nonsymmetric linear systems. It requires no growing subspace and avoids the restart stagnation of KSPGMRES. The parameter s controls the trade-off between memory and convergence speed: s=1 is mathematically equivalent to KSPBCGS; s=4 typically converges as fast as GMRES(50); s=8 often outperforms GMRES(100). Memory usage is (3s+3) vectors plus an s-by-s dense matrix. This implements the biorthogonal variant described in [GS11].

KSPIDR uses a PetscRandom which may be obtained with KSPIDRGetRandom() (see also KSPIDRSetRandom()). The PetscRandom may be controlled from the options database with the options prefix of the KSP object.

References#

[GS11] (1,2)

M. B. Van Gijzen and P. Sonneveld. Algorithm 913: an elegant IDR(s) variant that efficiently exploits biorthogonality properties. ACM Transactions on Mathematical Software, 38(1):1–19, 2011. doi:10.1145/2049662.2049667.

See Also#

KSP: Linear System Solvers, KSPCreate(), KSPSetType(), KSPType, KSP, KSPBCGS, KSPBCGSL, KSPGMRES, KSPIDRSetS(), KSPIDRGetS(), KSPIDRSetCosine(), KSPIDRGetCosine(), KSPIDRSetRandom(), KSPIDRGetRandom()

Level#

intermediate

Location#

src/ksp/ksp/impls/idr/idr.c


Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages