Skip to main content
`Ctrl`+`K`

# DMCoarsenHookRemove

remove a callback set with `DMCoarsenHookAdd()`

## Synopsis

    #include "petscdm.h"
    #include "petscdmlabel.h"
    #include "petscds.h"
    PetscErrorCode DMCoarsenHookRemove(DM fine, PetscErrorCode (*coarsenhook)(DM, DM, void *), PetscErrorCode (*restricthook)(DM, Mat, Vec, Mat, DM, void *), void *ctx)

Logically Collective; No Fortran Support

## Input Parameters

- fine - `DM` on which to run a hook when restricting to a coarser level

- coarsenhook - function to run when setting up a coarser level

- restricthook - function to run to update data on coarser levels

- ctx - [optional] user-defined context for provide data for the hooks (may be `NULL`)

## Notes

This function does nothing if the `coarsenhook` is not in the list.

See `DMCoarsenHookAdd()` for the calling sequence of `coarsenhook` and `restricthook`

## See Also

DM Basics, `DM`, `DMCoarsenHookAdd()`, `DMRefineHookAdd()`, `SNESFASGetInterpolation()`, `SNESFASGetInjection()`, `PetscObjectCompose()`, `PetscContainerCreate()`

## Level

advanced

## Location

src/dm/interface/dm.c

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