:orphan: # 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, PetscErrorCode (*monitordestroy)(void **)) ``` 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`) ## 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 [](ch_dmbase), `DM`, `DMMonitorCancel()`, `DMMonitorSetFromOptions()`, `DMMonitor()` ## Level intermediate ## Location src/dm/interface/dm.c --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/interface/dm.c) [Index of all DM routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)