PETSc version 3.16.5
Fix/Edit manual page

# KSPGCR

Implements the preconditioned Generalized Conjugate Residual method.

### Options Database Keys

| -ksp_gcr_restart <restart> | - the number of stored vectors to orthogonalize against

### Notes

The GCR Krylov method supports non-symmetric matrices and permits the use of a preconditioner which may vary from one iteration to the next. Users can can define a method to vary the preconditioner between iterates via KSPGCRSetModifyPC().

Restarts are solves with x0 not equal to zero. When a restart occurs, the initial starting solution is given by the current estimate for x which was obtained by the last restart iterations of the GCR algorithm.

Unlike GMRES and FGMRES, when using GCR, the solution and residual vector can be directly accessed at any iterate, with zero computational cost, via a call to KSPBuildSolution() and KSPBuildResidual() respectively.

This implementation of GCR will only apply the stopping condition test whenever ksp->its > ksp->chknorm, where ksp->chknorm is specified via the command line argument -ksp_check_norm_iteration or via the function KSPSetCheckNormIteration(). Hence the residual norm reported by the monitor and stored in the residual history will be listed as 0.0 before this iteration. It is actually not 0.0; just not calculated.

The method implemented requires the storage of 2 x restart + 1 vectors, twice as much as GMRES. Support only for right preconditioning.

Contributed by Dave May

### References

| 1. | - S. C. Eisenstat, H. C. Elman, and H. C. Schultz. Variational iterative methods for nonsymmetric systems of linear equations. SIAM J. Numer. Anal., 20, 1983

### See Also

KSPCreate(), KSPSetType(), KSPType (for list of available types), KSP,
KSPGCRSetRestart(), KSPGCRSetModifyPC(), KSPGMRES, KSPFGMRES

### Level

beginner

### Location

src/ksp/ksp/impls/gcr/gcr.c
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages