Skip to main content
`Ctrl`+`K`

# KSPGetAndClearConvergenceTest

Gets the function to be used to determine convergence. Removes the current test without calling destroy on the test context

## Synopsis

    #include "petscksp.h"
    #include "petscmat.h"
    PetscErrorCode KSPGetAndClearConvergenceTest(KSP ksp, PetscErrorCode (**converge)(KSP ksp, PetscInt it, PetscReal rnorm, KSPConvergedReason *reason, void *ctx), void **ctx, PetscErrorCode (**destroy)(void *ctx))

Logically Collective

## Input Parameter

- ksp - iterative solver obtained from `KSPCreate()`

## Output Parameters

- converge - pointer to convergence test function

- ctx - context for private data for the convergence routine

- destroy - a routine for destroying the context

## Calling sequence of `converge`

- ksp - iterative solver obtained from `KSPCreate()`

- it - iteration number

- rnorm - (estimated) 2-norm of (preconditioned) residual

- reason - the reason why it has converged or diverged

- ctx - optional convergence context, as set by `KSPSetConvergenceTest()`

## Calling sequence of `destroy`

- ctx - the convergence test context

## Note

This is intended to be used to allow transferring the convergence test (and its context) to another testing object (for example another `KSP`) and then calling `KSPSetConvergenceTest()` on this original `KSP`. If you just called `KSPGetConvergenceTest()` followed by `KSPSetConvergenceTest()` the original context information would be destroyed and hence the transferred context would be invalid and trigger a crash on use

## See Also

KSP: Linear System Solvers, `KSP`, `KSPConvergedDefault()`, `KSPGetConvergenceContext()`, `KSPSetTolerances()`, `KSPSetConvergenceTest()`, `KSPGetConvergenceTest()`

## Level

advanced

## Location

src/ksp/ksp/interface/itfunc.c

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