KSPMonitorSet#
Sets an ADDITIONAL function to be called at every iteration to monitor, i.e. display in some way, perhaps by printing in the terminal, the residual norm computed in a KSPSolve()
Synopsis#
#include "petscksp.h"
#include "petscmat.h"
PetscErrorCode KSPMonitorSet(KSP ksp, PetscErrorCode (*monitor)(KSP ksp, PetscInt it, PetscReal rnorm, void *ctx), void *ctx, PetscErrorCode (*monitordestroy)(void **ctx))
Logically Collective
Input Parameters#
ksp - iterative solver obtained from
KSPCreate()monitor - pointer to function (if this is
NULL, it turns off monitoringctx - [optional] context for private data for the monitor routine (use
NULLif no context is needed)monitordestroy - [optional] routine that frees monitor context (may be
NULL)
Calling sequence of monitor#
ksp - iterative solver obtained from
KSPCreate()it - iteration number
rnorm - (estimated) 2-norm of (preconditioned) residual
ctx - optional monitoring context, as set by
KSPMonitorSet()
Calling sequence of monitordestroy#
ctx - optional monitoring context, as set by
KSPMonitorSet()
Options Database Keys#
-ksp_monitor - sets
KSPMonitorResidual()-ksp_monitor draw - sets
KSPMonitorResidualDraw()and plots residual-ksp_monitor draw::draw_lg - sets
KSPMonitorResidualDrawLG()and plots residual-ksp_monitor_pause_final - Pauses any graphics when the solve finishes (only works for internal monitors)
-ksp_monitor_true_residual - sets
KSPMonitorTrueResidual()-ksp_monitor_true_residual draw::draw_lg - sets
KSPMonitorTrueResidualDrawLG()and plots residual-ksp_monitor_max - sets
KSPMonitorTrueResidualMax()-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.
Notes#
The options database option -ksp_monitor and related options are the easiest way to turn on KSP iteration monitoring
The default is to do no monitoring. To print the residual, or preconditioned
residual if KSPSetNormType(ksp,KSP_NORM_PRECONDITIONED) was called, use
KSPMonitorResidual() as the monitoring routine, with a PETSCVIEWERASCII 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 Note#
Only a single monitor function can be set for each KSP object
See Also#
KSP: Linear System Solvers, KSPMonitorResidual(), KSPMonitorCancel(), KSP
Level#
beginner
Location#
Examples#
src/ksp/ksp/tutorials/ex9.c
src/ksp/ksp/tutorials/ex2f.F90
src/ksp/ksp/tutorials/ex42.c
src/ts/tutorials/ex47.c
src/snes/tutorials/ex30.c
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages