Sets an ADDITIONAL function to be called at every iteration to monitor the residual/error etc.


#include "petscksp.h" 
#include "petscmat.h" 
PetscErrorCode  KSPMonitorSet(KSP ksp,PetscErrorCode (*monitor)(KSP,PetscInt,PetscReal,void*),void *mctx,PetscErrorCode (*monitordestroy)(void**))
Logically Collective on ksp

Input Parameters

ksp - iterative context obtained from KSPCreate()
monitor - pointer to function (if this is NULL, it turns off monitoring
mctx - [optional] context for private data for the monitor routine (use NULL if no context is desired)
monitordestroy - [optional] routine that frees monitor context (may be NULL)

Calling Sequence of monitor

    monitor (KSP ksp, PetscInt it, PetscReal rnorm, void *mctx)

ksp - iterative context obtained from KSPCreate()
it - iteration number
rnorm - (estimated) 2-norm of (preconditioned) residual
mctx - optional monitoring context, as set by KSPMonitorSet()

Options Database Keys

-ksp_monitor - sets KSPMonitorDefault()
-ksp_monitor_true_residual - sets KSPMonitorTrueResidualNorm()
-ksp_monitor_max - sets KSPMonitorTrueResidualMaxNorm()
-ksp_monitor_lg_residualnorm - sets line graph monitor, uses KSPMonitorLGResidualNormCreate()
-ksp_monitor_lg_true_residualnorm - sets line graph monitor, uses KSPMonitorLGResidualNormCreate()
-ksp_monitor_singular_value - sets KSPMonitorSingularValue()
-ksp_monitor_cancel - cancels all monitors that have been hardwired into a code by calls to KSPMonitorSet(), but does not cancel those set via the options database.


The default is to do nothing. To print the residual, or preconditioned residual if KSPSetNormType(ksp,KSP_NORM_PRECONDITIONED) was called, use KSPMonitorDefault() as the monitoring routine, with a ASCII viewer as the context.

Several different monitoring routines may be set by calling KSPMonitorSet() multiple times; all will be called in the order in which they were set.

Fortran Notes

Only a single monitor function can be set for each KSP object

Level: beginner

See Also

KSPMonitorDefault(), KSPMonitorLGResidualNormCreate(), KSPMonitorCancel(), KSP