Skip to main content
`Ctrl`+`K`

# DMPlexLabelCohesiveComplete

Starting with a label marking points on an internal surface, we add all other mesh pieces to complete the surface

## Synopsis

    #include "petscdmplex.h"
    #include "petscdmlabel.h"
    PetscErrorCode DMPlexLabelCohesiveComplete(DM dm, DMLabel label, DMLabel blabel, PetscInt bvalue, PetscBool flip, PetscBool split, DM subdm)

## Input Parameters

- dm - The `DM`

- label - A `DMLabel` marking the surface

- blabel - A `DMLabel` marking the vertices on the boundary which will not be duplicated, or `NULL` to find them automatically

- bvalue - Value of `DMLabel` marking the vertices on the boundary

- flip - Flag to flip the submesh normal and replace points on the other side

- split - Split faces impinging on the surface, rather than clamping the surface boundary

- subdm - The `DM` associated with the label, or `NULL`

## Output Parameter

- label - A `DMLabel` marking all surface points

## Note

The vertices in blabel are called “unsplit” in the terminology from hybrid cell creation.

## See Also

DMPlex: Unstructured Grids, `DM`, `DMPLEX`, `DMPlexConstructCohesiveCells()`, `DMPlexLabelComplete()`

## Level

developer

## Location

src/dm/impls/plex/plexsubmesh.c

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