DMRefineHookAdd#

adds a callback to be run when interpolating a nonlinear problem to a finer grid

Synopsis#

#include "petscdm.h"          
#include "petscdmlabel.h"     
#include "petscds.h"     
PetscErrorCode DMRefineHookAdd(DM coarse, PetscErrorCode (*refinehook)(DM, DM, void *), PetscErrorCode (*interphook)(DM, Mat, DM, void *), void *ctx)

Logically Collective; No Fortran Support

Input Parameters#

  • coarse - DM on which to run a hook when interpolating to a finer level

  • refinehook - function to run when setting up the finer level

  • interphook - function to run to update data on finer levels (once per SNESSolve())

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

Calling sequence of refinehook#

PetscErrorCode refinehook(DM coarse, DM fine, void *ctx);
  • coarse - coarse level DM

  • fine - fine level DM to interpolate problem to

  • ctx - optional user-defined function context

Calling sequence of interphook#

PetscErrorCode interphook(DM coarse, Mat interp, DM fine, void *ctx)
  • coarse - coarse level DM

  • interp - matrix interpolating a coarse-level solution to the finer grid

  • fine - fine level DM to update

  • ctx - optional user-defined function context

Notes#

This function is only needed if auxiliary data that is attached to the DMs via, for example, PetscObjectCompose(), needs to be passed to fine grids while grid sequencing.

The actual interpolation is done when DMInterpolate() is called.

If this function is called multiple times, the hooks will be run in the order they are added.

See Also#

DM Basics, DM, DMCoarsenHookAdd(), DMInterpolate(), SNESFASGetInterpolation(), SNESFASGetInjection(), PetscObjectCompose(), PetscContainerCreate()

Level#

advanced

Location#

src/dm/interface/dm.c

Examples#

src/snes/tutorials/ex48.c


Edit on GitLab

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