DMPlexCreateHybridMesh#
Create a mesh with hybrid cells along an internal interface
Synopsis#
#include "petscdmplex.h"
#include "petscdmlabel.h"
PetscErrorCode DMPlexCreateHybridMesh(DM dm, DMLabel label, DMLabel bdlabel, PetscInt bdvalue, DMLabel *hybridLabel, DMLabel *splitLabel, DM *dmInterface, DM *dmHybrid)
Collective
Input Parameters#
dm - The original
DM
label - The label specifying the interface vertices
bdlabel - The optional label specifying the interface boundary vertices
bdvalue - Value of optional label specifying the interface boundary vertices
Output Parameters#
Note#
The hybridLabel indicates what parts of the original mesh impinged on the division surface. For points directly on the division surface, they are labeled with their dimension, so an edge 7 on the division surface would be 7 (1) in hybridLabel. For points that impinge from the positive side, they are labeled with 100+dim, so an edge 6 with one vertex 3 on the surface would be 6 (101) and 3 (0) in hybridLabel. If an edge 9 from the negative side of the surface also hits vertex 3, it would be 9 (-101) in hybridLabel.
The splitLabel indicates what points in the new hybrid mesh were the result of splitting points in the original mesh. The label value is \(\pm 100+dim\) for each point. For example, if two edges 10 and 14 in the hybrid resulting from splitting an edge in the original mesh, you would have 10 (101) and 14 (-101) in the splitLabel.
The dmInterface is a DM
built from the original division surface. It has a label which can be retrieved using
DMPlexGetSubpointMap()
which maps each point back to the point in the surface of the original mesh.
See Also#
DMPlex: Unstructured Grids, DM
, DMPLEX
, DMPlexConstructCohesiveCells()
, DMPlexLabelCohesiveComplete()
, DMPlexGetSubpointMap()
, DMCreate()
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