#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
ksp | - iterative context obtained from KSPCreate() |
converge | - pointer to convergence test function | |
cctx | - context for private data for the convergence routine | |
destroy | - a routine for destroying the context |
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