:orphan: # DMRestrict restricts user-defined problem data to a coarser `DM` by running hooks registered by `DMCoarsenHookAdd()` ## Synopsis ``` #include "petscdm.h" #include "petscdmlabel.h" #include "petscds.h" PetscErrorCode DMRestrict(DM fine, Mat restrct, Vec rscale, Mat inject, DM coarse) ``` Collective if any hooks are ## Input Parameters - ***fine -*** finer `DM` from which the data is obtained - ***restrct -*** restriction matrix, apply using `MatRestrict()`, usually the transpose of the interpolation - ***rscale -*** scaling vector for restriction - ***inject -*** injection matrix, also use `MatRestrict()` - ***coarse -*** coarser `DM` to update ## Developer Note Though this routine is called `DMRestrict()` the hooks are added with `DMCoarsenHookAdd()`, a consistent terminology would be better ## See Also [](ch_dmbase), `DM`, `DMCoarsenHookAdd()`, `MatRestrict()`, `DMInterpolate()`, `DMRefineHookAdd()` ## Level developer ## 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)