# DMSTAG
`"stag"` - A `DM` object representing a "staggered grid" or a structured cell complex. 


## Notes
This implementation parallels the `DMDA` implementation in many ways, but allows degrees of freedom
to be associated with all "strata" in a logically-rectangular grid.

Each stratum can be characterized by the dimension of the entities ("points", to borrow the `DMPLEX`
terminology), from 0- to 3-dimensional.

In some cases this numbering is used directly, for example with `DMStagGetDOF()`.
To allow easier reading and to some extent more similar code between different-dimensional implementations
of the same problem, we associate canonical names for each type of point, for each dimension of DMStag.

* 1-dimensional `DMSTAG` objects have vertices (0D) and elements (1D).
* 2-dimensional `DMSTAG` objects have vertices (0D), faces (1D), and elements (2D).
* 3-dimensional `DMSTAG` objects have vertices (0D), edges (1D), faces (2D), and elements (3D).

This naming is reflected when viewing a `DMSTAG` object with `DMView()`, and in forming
convenient options prefixes when creating a decomposition with `DMCreateFieldDecomposition()`.


## See Also
 [](chapter_stag), `DM`, `DMPRODUCT`, `DMDA`, `DMPLEX`, `DMStagCreate1d()`, `DMStagCreate2d()`, `DMStagCreate3d()`, `DMType`, `DMCreate()`,
`DMSetType()`, `DMStagVecSplitToDMDA()`

## Level
beginner

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/stag/stag.c.html#DMSTAG">src/dm/impls/stag/stag.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/impls/stag/stag.c)


[Index of all DMStag routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
