DMCreateInjection#

Gets injection matrix between two DM objects.

Synopsis#

#include "petscdm.h"          
#include "petscdmlabel.h"     
#include "petscds.h"     
PetscErrorCode DMCreateInjection(DM dac, DM daf, Mat *mat)

Collective

Input Parameters#

  • dac - the DM object

  • daf - the second, finer DM object

Output Parameter#

  • mat - the injection

Notes#

This is an operator that applied to a vector obtained with DMCreateGlobalVector() on the fine grid maps the values to a vector on the vector on the coarse DM by simply selecting the values on the coarse grid points. This compares to the operator obtained by DMCreateRestriction() or the transpose of the operator obtained by DMCreateInterpolation() that uses a “local weighted average” of the values around the coarse grid point as the coarse grid value.

For DMDA objects this only works for “uniform refinement”, that is the refined mesh was obtained DMRefine() or the coarse mesh was obtained by DMCoarsen(). The coordinates set into the DMDA are completely ignored in computing the injection.

See Also#

DM Basics, DM, DMDestroy(), DMView(), DMCreateGlobalVector(), DMCreateColoring(), DMCreateMatrix(), DMCreateMassMatrix(), DMCreateInterpolation(), DMCreateRestriction(), MatRestrict(), MatInterpolate()

Level#

developer

Location#

src/dm/interface/dm.c

Implementations#

DMCreateInjection_DA() in src/dm/impls/da/dainterp.c
DMCreateInjection_pforest() in src/dm/impls/forest/p4est/pforest.h
DMCreateInjection_Moab() in src/dm/impls/moab/dmmbmg.cxx
DMCreateInjection_Plex() in src/dm/impls/plex/plex.c


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