:orphan:
# DMPlexTransformExtrudeSetNormalFunction
Set a function to determine the extrusion normal 
## Synopsis
```
#include "petscdmplextransform.h" 
PetscErrorCode DMPlexTransformExtrudeSetNormalFunction(DMPlexTransform tr, PetscSimplePointFunc normalFunc)
```
Not Collective


## Input Parameters

- ***tr     -*** The `DMPlexTransform`
- ***normalFunc -*** A function determining the extrusion direction



## Calling sequence of `normalFunc`
```none
PetscErrorCode normalFunc(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt r, PetscScalar u[], void *ctx)
```

- ***dim  -*** The coordinate dimension of the original mesh (usually a surface)
- ***time -*** The current time, or 0.
- ***x    -*** The location of the current normal, in the coordinate space of the original mesh
- ***r    -*** The extrusion replica number (layer number) of this point
- ***u    -*** The user provides the computed normal on output; the sign and magnitude is not significant
- ***ctx  -*** An optional user context





## See Also
 `DMPlexTransform`, `DMPlexTransformExtrudeGetNormal()`

## Level
intermediate

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/transform/impls/extrude/plextrextrude.c.html#DMPlexTransformExtrudeSetNormalFunction">src/dm/impls/plex/transform/impls/extrude/plextrextrude.c</A>


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