:orphan:
# DMPlexGetConeRecursive
Expand each given point into its cone points and do that recursively until we end up just with vertices (DAG points of depth 0, i.e. without cones). 
## Synopsis
```
#include "petscdmplex.h"   
PetscErrorCode DMPlexGetConeRecursive(DM dm, IS points, PetscInt *depth, IS *expandedPoints[], PetscSection *sections[])
```
Not Collective


## Input Parameters

- ***dm -*** The `DMPLEX`
- ***points -*** The `IS` of points, which must lie in the chart set with `DMPlexSetChart()`



## Output Parameters

- ***depth -*** (optional) Size of the output arrays, equal to `DMPLEX` depth, returned by `DMPlexGetDepth()`
- ***expandedPoints -*** (optional) An array of index sets with recursively expanded cones
- ***sections -*** (optional) An array of sections which describe mappings from points to their cone points





## Notes
Like `DMPlexGetConeTuple()` but recursive.

Array `expandedPoints` has size equal to `depth`. `Each expandedPoints`[d] contains DAG points with maximum depth d, recursively cone-wise expanded from the input points.
For example, for d=0 it contains only vertices, for d=1 it can contain vertices and edges, etc.


## Array section has size equal to depth.  Each `PetscSection` sections[d] realizes mapping from `expandedPoints`[d+1] (section points) to `expandedPoints`[d] (section dofs) as follows
(1) DAG points in expandedPoints[d+1] with `depth` d+1 to their cone points in `expandedPoints`[d];
(2) DAG points in expandedPoints[d+1] with `depth` in [0,d] to the same points in `expandedPoints`[d].


## See Also
 [](ch_unstructured), `DM`, `DMPLEX`, `DMPlexCreate()`, `DMPlexGetCone()`, `DMPlexGetConeTuple()`, `DMPlexRestoreConeRecursive()`, `DMPlexGetConeRecursiveVertices()`,
`DMPlexGetDepth()`, `PetscSection`, `IS`

## Level
advanced

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/plex.c.html#DMPlexGetConeRecursive">src/dm/impls/plex/plex.c</A>


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


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