:orphan:
# DMPlexSetClosurePermutationTensor
Create a permutation from the default (BFS) point ordering in the closure, to a lexicographic ordering over the tensor product cell (i.e., line, quad, hex, etc.), and set this permutation in the section provided (or the section of the `DM`). 
## Synopsis
```
#include "petscdmplex.h"   
PetscErrorCode DMPlexSetClosurePermutationTensor(DM dm, PetscInt point, PetscSection section)
```

## Input Parameters

- ***dm      -*** The `DM`
- ***point   -*** Either a cell (highest dim point) or an edge (dim 1 point), or `PETSC_DETERMINE`
- ***section -*** The `PetscSection` to reorder, or `NULL` for the default section



## Example
A typical interpolated single-quad mesh might order points as
```none
  [c0, v1, v2, v3, v4, e5, e6, e7, e8]

  v4 -- e6 -- v3
  |           |
  e7    c0    e8
  |           |
  v1 -- e5 -- v2
```


(There is no significance to the ordering described here.)  The default section for a Q3 quad might typically assign
dofs in the order of points, e.g.,
```none
    c0 -> [0,1,2,3]
    v1 -> [4]
    ...
    e5 -> [8, 9]
```


which corresponds to the dofs
```none
    6   10  11  7
    13  2   3   15
    12  0   1   14
    4   8   9   5
```


The closure in BFS ordering works through height strata (cells, edges, vertices) to produce the ordering
```none
  0 1 2 3 8 9 14 15 11 10 13 12 4 5 7 6
```


After calling DMPlexSetClosurePermutationTensor(), the closure will be ordered lexicographically,
```none
   4 8 9 5 12 0 1 14 13 2 3 15 6 10 11 7
```





## Note
The point is used to determine the number of dofs/field on an edge. For SEM, this is related to the polynomial
degree of the basis.


## See Also
 [](ch_unstructured), `DM`, `DMPLEX`, `DMGetLocalSection()`, `PetscSectionSetClosurePermutation()`, `DMSetGlobalSection()`

## Level
developer

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

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


---
[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)  
