#include "petscdmplex.h" PetscErrorCode DMPlexCellRefinerRefine(DMPlexCellRefiner cr, DMPolytopeType source, PetscInt p, PetscInt *rt, PetscInt *Nt, DMPolytopeType *target[], PetscInt *size[], PetscInt *cone[], PetscInt *ornt[])
source | - The cell type for a source point | |
p | - The source point, or PETSC_DETERMINE if the refine is homogeneous |
rt | - The refine type for this cell | |
Nt | - The number of cell types generated by refinement | |
target | - The cell types generated | |
size | - The number of subcells of each type, ordered by dimension | |
cone | - A list of the faces for each subcell of the same type as source | |
ornt | - A list of the face orientations for each subcell of the same type as source |
Note: The cone array gives the cone of each subcell listed by the first three outputs. For each cone point, we need the cell type, point identifier, and orientation within the subcell. The orientation is with respect to the canonical division (described in these outputs) of the cell in the original mesh. The point identifier is given by
the number of cones to be taken, or 0 for the current cell
the cell cone point number at each level from which it is subdivided
the replica number r of the subdivision.The orientation is with respect to the canonical cone orientation. For example, the prescription for edge division is
Nt = 2
target = {DM_POLYTOPE_POINT, DM_POLYTOPE_SEGMENT}
size = {1, 2}
cone = {DM_POLYTOPE_POINT, 1, 0, 0, DM_POLYTOPE_POINT, 0, 0, DM_POLYTOPE_POINT, 0, 0, DM_POLYTOPE_POINT, 1, 1, 0}
ornt = { 0, 0, 0, 0}