:orphan: # 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 [](ch_stag), `DM`, `DMPRODUCT`, `DMDA`, `DMPLEX`, `DMStagCreate1d()`, `DMStagCreate2d()`, `DMStagCreate3d()`, `DMType`, `DMCreate()`, `DMSetType()`, `DMStagVecSplitToDMDA()` ## Level beginner ## Location src/dm/impls/stag/stag.c --- [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](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)