# PetscQuadraturePushForward
Push forward a quadrature functional under an affine transformation. 
## Synopsis
```
#include "petscdt.h" 
PetscErrorCode PetscQuadraturePushForward(PetscQuadrature q, PetscInt imageDim, const PetscReal origin[], const PetscReal originImage[], const PetscReal J[], PetscInt formDegree, PetscQuadrature *Jinvstarq)
```
Collecive on `PetscQuadrature`


## Input Parameters

- ***q -*** the quadrature functional
- ***imageDim -*** the dimension of the image of the transformation
- ***origin -*** a point in the original space
- ***originImage -*** the image of the origin under the transformation
- ***J -*** the Jacobian of the image: an [imageDim x dim] matrix in row major order
- ***formDegree -*** transform the quadrature weights as k-forms of this form degree (if the number of components is a multiple of (dim choose formDegree), it is assumed that they represent multiple k-forms) [see `PetscDTAltVPullback()` for interpretation of formDegree]



## Output Parameters

- ***Jinvstarq -*** a quadrature rule where each point is the image of a point in the original quadrature rule, and where the k-form weights have been pulled-back by the pseudoinverse of J to the k-form weights in the image space.





## Note
The new quadrature rule will have a different number of components if spaces have different dimensions.  For example, pushing a 2-form forward from a two dimensional space to a three dimensional space changes the number of components from 1 to 3.


## See Also
 `PetscQuadrature`, `PetscDTAltVPullback()`, `PetscDTAltVPullbackMatrix()`

## Level
intermediate

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


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


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