petsc-3.4.5 2014-06-29

KSPDefaultConverged

Determines convergence of the iterative solvers (default code).

Synopsis

#include "petscksp.h" 
PetscErrorCode  KSPDefaultConverged(KSP ksp,PetscInt n,PetscReal rnorm,KSPConvergedReason *reason,void *ctx)
Collective on KSP

Input Parameters

ksp - iterative context
n - iteration number
rnorm - 2-norm residual value (may be estimated)
ctx - convergence context which must be created by KSPDefaultConvergedCreate()

reason is set to

positive - if the iteration has converged;
negative - if residual norm exceeds divergence threshold;
0 - otherwise.

Notes

KSPDefaultConverged() reaches convergence when
     rnorm < MAX (rtol * rnorm_0, abstol);
Divergence is detected if
     rnorm > dtol * rnorm_0,

where

Use KSPSetTolerances() to alter the defaults for rtol, abstol, dtol.

The precise values of reason are macros such as KSP_CONVERGED_RTOL, which are defined in petscksp.h.

Keywords

KSP, default, convergence, residual

See Also

KSPSetConvergenceTest(), KSPSetTolerances(), KSPSkipConverged(), KSPConvergedReason, KSPGetConvergedReason(),
KSPDefaultConvergedSetUIRNorm(), KSPDefaultConvergedSetUMIRNorm(), KSPDefaultConvergedCreate(), KSPDefaultConvergedDestroy()

Level:intermediate
Location:
src/ksp/ksp/interface/iterativ.c
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages

rtol = relative tolerance,- . abstol = absolute tolerance.
dtol = divergence tolerance,- - rnorm_0 is the two norm of the right hand side. When initial guess is non-zero you can call KSPDefaultConvergedSetUIRNorm() to use the norm of (b - A*(initial guess)) as the starting point for relative norm convergence testing.