petsc-3.12.1 2019-10-22
Report Typos and Errors

# 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"
    PetscErrorCode  KSPGetAndClearConvergenceTest(KSP ksp,PetscErrorCode (**converge)(KSP,PetscInt,PetscReal,KSPConvergedReason*,void*),void **cctx,PetscErrorCode (**destroy)(void*))

Logically Collective on ksp

### Input Parameter

ksp -iterative context obtained from KSPCreate()

### Output Parameter

| converge | - pointer to convergence test function
| cctx | - context for private data for the convergence routine
| destroy | - a routine for destroying the context

### Calling sequence of converge

        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()

Notes: 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

KSPConvergedDefault(), KSPGetConvergenceContext(), KSPSetTolerances(), KSP, 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