petsc-3.14.6 2021-03-30
Report Typos and Errors


adds a callback to be run when restricting a problem to the coarse grid


#include "petscdm.h"          
#include "petscdmlabel.h"     
#include "petscds.h"     
PetscErrorCode DMSubDomainHookAdd(DM global,PetscErrorCode (*ddhook)(DM,DM,void*),PetscErrorCode (*restricthook)(DM,VecScatter,VecScatter,DM,void*),void *ctx)
Logically Collective on global

Input Arguments

global - global DM
ddhook - function to run to pass data to the decomposition DM upon its creation
restricthook - function to run to update data on block solve (at the beginning of the block solve)
ctx - [optional] user-defined context for provide data for the hooks (may be NULL)

Calling sequence for ddhook

   ddhook(DM global,DM block,void *ctx)

global - global DM
block - block DM
ctx - optional user-defined function context

Calling sequence for restricthook

   restricthook(DM global,VecScatter out,VecScatter in,DM block,void *ctx)

global - global DM
out - scatter to the outer (with ghost and overlap points) block vector
in - scatter to block vector values only owned locally
block - block DM
ctx - optional user-defined function context


This function is only needed if auxiliary data needs to be set up on subdomain DMs.

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

In order to compose with nonlinear preconditioning without duplicating storage, the hook should be implemented to extract the global information from its context (instead of from the SNES).

This function is currently not available from Fortran.

See Also

DMRefineHookAdd(), SNESFASGetInterpolation(), SNESFASGetInjection(), PetscObjectCompose(), PetscContainerCreate()




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