DMCreateInterpolation#
Gets the interpolation matrix between two DM
objects. The resulting matrix map degrees of freedom in the vector obtained by DMCreateGlobalVector()
on the coarse DM
to similar vectors on the fine grid DM
.
Synopsis#
#include "petscdm.h"
#include "petscdmlabel.h"
#include "petscds.h"
PetscErrorCode DMCreateInterpolation(DM dmc, DM dmf, Mat *mat, Vec *vec)
Collective
Input Parameters#
Output Parameters#
mat - the interpolation
vec - the scaling (optional, pass
NULL
if not needed), seeDMCreateInterpolationScale()
Notes#
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 interpolation.
For DMDA
objects you can use this interpolation (more precisely the interpolation from the DMGetCoordinateDM()
) to interpolate the mesh coordinate
vectors EXCEPT in the periodic case where it does not make sense since the coordinate vectors are not periodic.
See Also#
DM Basics, DM
, DMDestroy()
, DMView()
, DMCreateGlobalVector()
, DMCreateColoring()
, DMCreateMatrix()
, DMCreateMassMatrix()
, DMRefine()
, DMCoarsen()
, DMCreateRestriction()
, DMCreateInterpolationScale()
Level#
developer
Location#
Examples#
src/ksp/ksp/tutorials/ex42.c
src/ts/tutorials/ex45.c
src/ts/tutorials/ex29.c
src/dm/impls/stag/tutorials/ex4.c
src/ts/tutorials/ex30.c
src/snes/tutorials/ex11.c
src/snes/tutorials/ex48.c
src/ksp/ksp/tutorials/ex65.c
src/dm/tutorials/ex3.c
src/snes/tutorials/ex36.c
Implementations#
DMCreateInterpolation_Composite() in src/dm/impls/composite/pack.c
DMCreateInterpolation_DA() in src/dm/impls/da/dainterp.c
DMCreateInterpolation_pforest() in src/dm/impls/forest/p4est/pforest.h
DMCreateInterpolation_Moab() in src/dm/impls/moab/dmmbmg.cxx
DMCreateInterpolation_Plex() in src/dm/impls/plex/plex.c
DMCreateInterpolation_Redundant() in src/dm/impls/redundant/dmredundant.c
DMCreateInterpolation_Stag() in src/dm/impls/stag/stag.c
DMCreateInterpolation_SNESVI() in src/snes/impls/vi/rs/virs.c
Index of all DM routines
Table of Contents for all manual pages
Index of all manual pages