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#

  • hybridLabel - The label fully marking the interface, or NULL if no output is desired

  • splitLabel - The label containing the split points, or NULL if no output is desired

  • dmInterface - The new interface DM, or NULL

  • dmHybrid - The new DM with cohesive cells

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


Edit on GitLab

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