Skip to main content
`Ctrl`+`K`

# SNESMonitorSet

Sets an ADDITIONAL function that is to be used at every iteration of the `SNES` nonlinear solver to display the iteration’s progress.

## Synopsis

    #include "petscsnes.h"
    PetscErrorCode SNESMonitorSet(SNES snes, PetscErrorCode (*f)(SNES, PetscInt, PetscReal, void *), void *mctx, PetscErrorCode (*monitordestroy)(void **))

Logically Collective

## Input Parameters

- snes - the `SNES` context

- f - the monitor function, for the calling sequence see `SNESMonitorFunction`

- mctx - [optional] user-defined 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`)

## Options Database Keys

- -snes_monitor - sets `SNESMonitorDefault()`

- -snes_monitor draw::draw_lg - sets line graph monitor,

- -snes_monitor_cancel - cancels all monitors that have been hardwired into a code by calls to `SNESMonitorSet()`, but does not cancel those set via the options database.

## Note

Several different monitoring routines may be set by calling `SNESMonitorSet()` 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 `SNES` object

## See Also

SNES: Nonlinear Solvers, `SNES`, `SNESSolve()`, `SNESMonitorDefault()`, `SNESMonitorCancel()`, `SNESMonitorFunction`

## Level

intermediate

## Location

src/snes/interface/snes.c

## Examples

src/ts/tutorials/ex12.c
src/snes/tutorials/ex21.c
src/ts/tutorials/ex7.c
src/ts/tutorials/ex52.c
src/snes/tutorials/ex3.c
src/snes/tutorials/ex2.c
src/snes/tutorials/ex22.c

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