Skip to main content
`Ctrl`+`K`

# DMStagCreateCompatibleDMStag

create a compatible `DMSTAG` with different dof/stratum

## Synopsis

    #include "petscdmstag.h"
    #include "petscdmproduct.h"
    PetscErrorCode DMStagCreateCompatibleDMStag(DM dm, PetscInt dof0, PetscInt dof1, PetscInt dof2, PetscInt dof3, DM *newdm)

Collective

## Input Parameters

- dm - the `DMSTAG` object

- dof0 - number of dof on the first stratum in the new `DMSTAG`

- dof1 - number of dof on the second stratum in the new `DMSTAG`

- dof2 - number of dof on the third stratum in the new `DMSTAG`

- dof3 - number of dof on the fourth stratum in the new `DMSTAG`

## Output Parameter

- newdm - the new, compatible `DMSTAG`

## Notes

DOF supplied for strata too big for the dimension are ignored; these may be set to `0`. For example, for a 2-dimensional `DMSTAG`, `dof2` sets the number of dof per element, and `dof3` is unused. For a 3-dimensional `DMSTAG`, `dof3` sets the number of DOF per element.

In contrast to `DMDACreateCompatibleDMDA()`, coordinates are not reused.

## See Also

DMSTAG: Staggered, Structured Grid, `DMSTAG`, `DMDACreateCompatibleDMDA()`, `DMGetCompatibility()`, `DMStagMigrateVec()`

## Level

intermediate

## Location

src/dm/impls/stag/stagutils.c

## Examples

src/dm/impls/stag/tutorials/ex1.c
src/dm/impls/stag/tutorials/ex4.c
src/dm/impls/stag/tutorials/ex3.c
src/dm/impls/stag/tutorials/ex2.c
src/dm/impls/stag/tutorials/ex6.c

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