# PetscDualSpacePushforward
Transform the given function so that it operates on real space, rather than the reference element. Operationally, this means that we map the function evaluations depending on continuity requirements of our finite element method. 
## Synopsis
```
#include "petscfe.h" 
PetscErrorCode PetscDualSpacePushforward(PetscDualSpace dsp, PetscFEGeom *fegeom, PetscInt Nq, PetscInt Nc, PetscScalar pointEval[])
```

## Input Parameters

- ***dsp        -*** The `PetscDualSpace`
- ***fegeom     -*** The geometry for this cell
- ***Nq         -*** The number of function samples
- ***Nc         -*** The number of function components
- ***pointEval  -*** The function values



## Output Parameter

- ***pointEval  -*** The transformed function values





## Notes
Functionals transform in a complementary way (pullback) to functions, so that the scalar product is invariant. The type of transform is dependent on the associated k-simplex from the DeRahm complex.

This only handles transformations when the embedding dimension of the geometry in fegeom is the same as the reference dimension.


## See Also
 `PetscDualSpace`, `PetscDualSpacePullback()`, `PetscDualSpaceTransform()`, `PetscDualSpaceGetDeRahm()`

## Level
advanced

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/dt/dualspace/interface/dualspace.c.html#PetscDualSpacePushforward">src/dm/dt/dualspace/interface/dualspace.c</A>


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


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