# DMPlexRefineRegularGetAffineFaceTransforms
Gets the affine map from the reference face cell to each face in the given cell 
## Synopsis
```
#include "petscdmplextransform.h" 
PetscErrorCode DMPlexRefineRegularGetAffineFaceTransforms(DMPlexTransform tr, DMPolytopeType ct, PetscInt *Nf, PetscReal *v0[], PetscReal *J[], PetscReal *invJ[], PetscReal *detJ[])
```

## Input Parameters

- ***cr -*** The DMPlexCellRefiner object
- ***ct -*** The cell type



## Output Parameters

- ***Nf   -*** The number of faces for this cell type
- ***v0   -*** The translation of the first vertex for each face
- ***J    -*** The Jacobian for each face (map from original cell to subcell)
- ***invJ -*** The inverse Jacobian for each face
- ***detJ -*** The determinant of the Jacobian for each face


Note: The Jacobian and inverse Jacboian will be rectangular, and the inverse is really a generalized inverse.
```none
v0 + j x_face = x_cell
```
```none
invj (x_cell - v0) = x_face
```




## See Also
 `DMPlexCellRefinerGetAffineTransforms()`, `Create()`

## Level
developer

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/transform/impls/refine/regularplexrefregular.c.html#DMPlexRefineRegularGetAffineFaceTransforms">src/dm/impls/plex/transform/impls/refine/regularplexrefregular.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/impls/plex/transform/impls/refine/regularplexrefregular.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)  
