Skip to main content
`Ctrl`+`K`

# DMPlexCreateSubmesh

Extract a hypersurface from the mesh using vertices defined by a label

## Synopsis

    #include "petscdmplex.h"
    #include "petscdmlabel.h"
    PetscErrorCode DMPlexCreateSubmesh(DM dm, DMLabel vertexLabel, PetscInt value, PetscBool markedFaces, DM *subdm)

## Input Parameters

- dm - The original mesh

- vertexLabel - The `DMLabel` marking points contained in the surface

- value - The label value to use

- markedFaces - `PETSC_TRUE` if surface faces are marked in addition to vertices, `PETSC_FALSE` if only vertices are marked

## Output Parameter

- subdm - The surface mesh

## Note

This function produces a `DMLabel` mapping original points in the submesh to their depth. This can be obtained using `DMPlexGetSubpointMap()`.

## See Also

DMPlex: Unstructured Grids, `DM`, `DMPLEX`, `DMPlexGetSubpointMap()`, `DMGetLabel()`, `DMLabelSetValue()`

## Level

developer

## Location

src/dm/impls/plex/plexsubmesh.c

## Implementations

DMPlexCreateSubmesh_Uninterpolated() in src/dm/impls/plex/plexsubmesh.c
DMPlexCreateSubmesh_Interpolated() in src/dm/impls/plex/plexsubmesh.c

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