# DMPlexTransformCellTransform
Describes the transform of a given source cell into a set of other target cells. These produced cells become the new mesh. 
## Synopsis
```
#include "petscdmplextransform.h" 
PetscErrorCode DMPlexTransformCellTransform(DMPlexTransform tr, DMPolytopeType source, PetscInt p, PetscInt *rt, PetscInt *Nt, DMPolytopeType *target[], PetscInt *size[], PetscInt *cone[], PetscInt *ornt[])
```

## Input Parameters

- ***tr     -*** The `DMPlexTransform` object
- ***source -*** The source cell type
- ***p      -*** The source point, which can also determine the refine type



## Output Parameters

- ***rt     -*** The refine type for this point
- ***Nt     -*** The number of types produced by this point
- ***target -*** An array of length Nt giving the types produced
- ***size   -*** An array of length Nt giving the number of cells of each type produced
- ***cone   -*** An array of length Nt*size[t]*coneSize[t] giving the cell type for each point in the cone of each produced point
- ***ornt   -*** An array of length Nt*size[t]*coneSize[t] giving the orientation for each point in the cone of each produced point





## Notes
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
```none
   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
```none
   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}
```



## See Also
 [](chapter_unstructured), `DM`, `DMPLEX`, `DMPlexTransform`, `DMPolytopeType`, `DMPlexTransformApply()`, `DMPlexTransformCreate()`

## Level
advanced

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/transform/interface/plextransform.c.html#DMPlexTransformCellTransform">src/dm/impls/plex/transform/interface/plextransform.c</A>

## Examples
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/tutorials/ex11.c.html">src/dm/impls/plex/tutorials/ex11.c.html</A><BR>

## Implementations

<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/transform/impls/extrude/plextrextrude.c.html#DMPlexTransformCellTransform_Extrude">DMPlexTransformCellTransform_Extrude in src/dm/impls/plex/transform/impls/extrude/plextrextrude.c</A><BR>
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/transform/impls/filter/plextrfilter.c.html#DMPlexTransformCellTransform_Filter">DMPlexTransformCellTransform_Filter in src/dm/impls/plex/transform/impls/filter/plextrfilter.c</A><BR>
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/transform/impls/refine/1d/plexref1d.c.html#DMPlexTransformCellTransform_1D">DMPlexTransformCellTransform_1D in src/dm/impls/plex/transform/impls/refine/1d/plexref1d.c</A><BR>
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/transform/impls/refine/bl/plexrefbl.c.html#DMPlexTransformCellTransform_BL">DMPlexTransformCellTransform_BL in src/dm/impls/plex/transform/impls/refine/bl/plexrefbl.c</A><BR>
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/transform/impls/refine/sbr/plexrefsbr.c.html#DMPlexTransformCellTransform_SBR">DMPlexTransformCellTransform_SBR in src/dm/impls/plex/transform/impls/refine/sbr/plexrefsbr.c</A><BR>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/impls/plex/transform/interface/plextransform.c)


[Index of all DMPlex routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
