DMCreateInterpolationScale#

Forms L = 1/(R*1) where 1 is the vector of all ones, and R is the transpose of the interpolation between the DM.

Synopsis#

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

Input Parameters#

  • dac - DM that defines a coarse mesh

  • daf - DM that defines a fine mesh

  • mat - the restriction (or interpolation operator) from fine to coarse

Output Parameter#

  • scale - the scaled vector

Note#

xcoarse = diag(L)Rxfine preserves scale and is thus suitable for state (versus residual) restriction. In other words xcoarse is the coarse representation of xfine.

Developer Note#

If the fine-scale DMDA has the -dm_bind_below option set to true, then DMCreateInterpolationScale() calls MatSetBindingPropagates() on the restriction/interpolation operator to set the bindingpropagates flag to true.

See Also#

DM Basics, DM, MatRestrict(), MatInterpolate(), DMCreateInterpolation(), DMCreateRestriction(), DMCreateGlobalVector()

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