:orphan: # KSPSetConvergenceTest Sets the function to be used to determine convergence. ## Synopsis ``` #include "petscksp.h" #include "petscmat.h" PetscErrorCode KSPSetConvergenceTest(KSP ksp, PetscErrorCode (*converge)(KSP, PetscInt, PetscReal, KSPConvergedReason *, void *), void *cctx, PetscErrorCode (*destroy)(void *)) ``` Logically Collective ## Input Parameters - ***ksp -*** iterative context obtained from `KSPCreate()` - ***converge -*** pointer to the function - ***cctx -*** context for private data for the convergence routine (may be null) - ***destroy -*** a routine for destroying the context (may be null) ## Calling sequence of `converge` ```none PetscErrorCode converge(KSP ksp, PetscInt it, PetscReal rnorm, KSPConvergedReason *reason, void *mctx) ``` - ***ksp -*** iterative context obtained from `KSPCreate()` - ***it -*** iteration number - ***rnorm -*** (estimated) 2-norm of (preconditioned) residual - ***reason -*** the reason why it has converged or diverged - ***cctx -*** optional convergence context, as set by `KSPSetConvergenceTest()` ## Calling Sequence of `destroy` ```none PetscErrorCode destroy(void *cctx) ``` ## Notes Must be called after the `KSP` type has been set so put this after a call to `KSPSetType()`, or `KSPSetFromOptions()`. The default convergence test, `KSPConvergedDefault()`, aborts if the residual grows to more than 10000 times the initial residual. The default is a combination of relative and absolute tolerances. The residual value that is tested may be an approximation; routines that need exact values should compute them. In the default PETSc convergence test, the precise values of reason are macros such as `KSP_CONVERGED_RTOL`, which are defined in petscksp.h. ## See Also [](ch_ksp), `KSP`, `KSPConvergedDefault()`, `KSPGetConvergenceContext()`, `KSPSetTolerances()`, `KSP`, `KSPGetConvergenceTest()`, `KSPGetAndClearConvergenceTest()` ## Level advanced ## Location src/ksp/ksp/interface/itfunc.c ## Examples src/ksp/ksp/tutorials/ex2f.F90
src/ksp/ksp/tutorials/ex57f.F90
src/ksp/ksp/tutorials/ex71.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/interface/itfunc.c) [Index of all KSP routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)