Skip to main content
`Ctrl`+`K`

# DMGenerateRegister

Adds a grid generator to `DM`

## Synopsis

    #include "petscdm.h"
    PetscErrorCode DMGenerateRegister(const char sname[], PetscErrorCode (*fnc)(DM, PetscBool, DM *), PetscErrorCode (*rfnc)(DM, PetscReal *, DM *), PetscErrorCode (*alfnc)(DM, Vec, DMLabel, DMLabel, DM *), PetscInt dim)

Not Collective, No Fortran Support

## Input Parameters

- sname - name of a new user-defined grid generator

- fnc - generator function

- rfnc - refinement function

- alfnc - adapt by label function

- dim - dimension of boundary of domain

## Example Usage

       DMGenerateRegister("my_generator", MyGeneratorCreate, MyGeneratorRefiner, MyGeneratorAdaptor, dim);

Then, your generator can be chosen with the procedural interface via

      DMGenerate(dm, "my_generator",...)

or at runtime via the option

      -dm_generator my_generator

## Note

`DMGenerateRegister()` may be called multiple times to add several user-defined generators

## See Also

`DM`, `DMGenerateRegisterAll()`, `DMPlexGenerate()`, `DMGenerateRegisterDestroy()`

## Level

advanced

## Location

src/dm/interface/dmgenerate.c

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