Skip to main content
`Ctrl`+`K`

# DMMonitorSet

Sets an additional monitor function that is to be used after a solve to monitor discretization performance.

## Synopsis

    #include "petscdm.h"
    #include "petscdmlabel.h"
    #include "petscds.h"
    PetscErrorCode DMMonitorSet(DM dm, PetscErrorCode (*f)(DM, void *), void *mctx, PetscCtxDestroyFn *monitordestroy)

Logically Collective

## Input Parameters

- dm - the `DM`

- f - the monitor function

- 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`), see `PetscCtxDestroyFn` for the calling sequence

## Options Database Key

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

## Note

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

## Fortran Note

Only a single monitor function can be set for each `DM` object

## Developer Note

This API has a generic name but seems specific to a very particular aspect of the use of `DM`

## See Also

DM Basics, `DM`, `DMMonitorCancel()`, `DMMonitorSetFromOptions()`, `DMMonitor()`, `PetscCtxDestroyFn`

## Level

intermediate

## Location

src/dm/interface/dm.c

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