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, PetscInt, PetscReal, KSPConvergedReason *, void *), void **cctx, PetscErrorCode (**destroy)(void *))
Logically Collective on ksp
Input Parameter#
ksp - iterative context obtained from
KSPCreate()
Output Parameters#
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