KSPSetNormType#
Sets the norm that is used for convergence testing.
Synopsis#
#include "petscksp.h"
PetscErrorCode KSPSetNormType(KSP ksp, KSPNormType normtype)
Logically Collective
Input Parameters#
ksp - Krylov solver context
normtype - one of
KSP_NORM_NONE - skips computing the norm, this should generally only be used if you are using
the Krylov method as a smoother with a fixed small number of iterations.
Implicitly sets `KSPConvergedSkip()` as the `KSP` convergence test.
Note that certain algorithms such as `KSPGMRES` ALWAYS require the norm calculation,
for these methods the norms are still computed, they are just not used in
the convergence test.
KSP_NORM_PRECONDITIONED - the default for left-preconditioned solves, uses the l2 norm
of the preconditioned residual P^{-1}(b - A x).
KSP_NORM_UNPRECONDITIONED - uses the l2 norm of the true b - Ax residual.
KSP_NORM_NATURAL - supported by `KSPCG`, `KSPCR`, `KSPCGNE`, `KSPCGS`
Options Database Key#
-ksp_norm_type <none,preconditioned,unpreconditioned,natural> - set
KSP
norm type
Note#
Not all combinations of preconditioner side (see KSPSetPCSide()
) and norm type are supported by all Krylov methods.
If only one is set, PETSc tries to automatically change the other to find a compatible pair. If no such combination
is supported, PETSc will generate an error.
Developer Note#
Supported combinations of norm and preconditioner side are set using KSPSetSupportedNorm()
.
See Also#
KSP: Linear System Solvers, KSPSetUp()
, KSPSolve()
, KSPDestroy()
, KSPConvergedSkip()
, KSPSetCheckNormIteration()
, KSPSetPCSide()
, KSPGetPCSide()
, KSPNormType
Level#
advanced
Location#
Examples#
src/snes/tutorials/ex11.c
src/ksp/ksp/tutorials/ex71.c
src/ksp/pc/tutorials/ex4.c
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages