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

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#

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#

PetscErrorCode destroy(void *cctx)

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(), KSP, KSPSetConvergenceTest(), KSPGetConvergenceTest()

Level#

advanced

Location#

src/ksp/ksp/interface/itfunc.c


Edit on GitLab

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