Skip to main content
`Ctrl`+`K`

# DMRegister

Adds a new `DM` type implementation

## Synopsis

    #include "petscdm.h"
    #include "petscdmlabel.h"
    #include "petscds.h"
    PetscErrorCode DMRegister(const char sname[], PetscErrorCode (*function)(DM dm))

Not Collective, No Fortran Support

## Input Parameters

- sname - The name of a new user-defined creation routine

- function - The creation routine itself

## Calling sequence of function

- dm - the new `DM` that is being created

## Note

`DMRegister()` may be called multiple times to add several user-defined `DM`s

## Example Usage

        DMRegister("my_da", MyDMCreate);

Then, your `DM` type can be chosen with the procedural interface via

        DMCreate(MPI_Comm, DM *);
        DMSetType(DM,"my_da");

or at runtime via the option

        -da_type my_da

## See Also

DM Basics, `DM`, `DMType`, `DMSetType()`, `DMRegisterAll()`, `DMRegisterDestroy()`

## 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