:html_theme.sidebar_secondary.remove: true
# Finite Elements (PetscFE)

The `PetscFE` class encapsulates a finite element discretization. Each `PetscFE` object contains a `PetscSpace`, its dual `PetscDualSpace`, and a `DMPLEX`
in the classic Ciarlet triple representation (<a href="https://finite-element.github.io/2_finite_elements.html" target=_blank>https://finite-element.github.io/2_finite_elements.html</a>).

<ul>
  <li><a href="http://arxiv.org/abs/1309.1204">Achieving High Performance with Unified Residual Evaluation</a>, Matthew G. Knepley, Jed Brown, Karl Rupp, Barry F. Smith, 2013.</li>
  <li><a href="http://arxiv.org/abs/1607.04245">Finite Element Integration with Quadrature on the GPU</a>, Matthew G. Knepley, Karl Rupp, Andy R. Terrel, 2016.</li>
</ul>

There are many <A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/snes/tutorials/index.html">SNES Examples</A> using `PetscFE`, such ex12, ex17, and ex62.

Developer Note:
Using an entire `DMPLEX` object to provide the cell information seems unnecessary and complicated. Why not have a simple `PetscCell` object that could encapsulate this information. It could then be used by a variety of `DM` etc.


## Manual Pages by Level

### Beginner - Basic usage
```{hlist}
---
columns: 3
---
- [](PetscFE.md)
- [](PetscFECreate.md)
- [](PetscFECreateByCell.md)
- [](PetscFECreateDefault.md)
- [](PetscFECreateFromSpaces.md)
- [](PetscFECreateLagrange.md)
- [](PetscFECreateLagrangeByCell.md)
- [](PetscFEDestroy.md)
- [](PetscFEGeomCreate.md)
- [](PetscFEGeomDestroy.md)
- [](PetscFEJacobianType.md)
- [](PetscFEType.md)
- [](PetscFEView.md)
```



### Intermediate - Setting options for algorithms and data structures
```{hlist}
---
columns: 3
---
- [](PETSCFEBASIC.md)
- [](PETSCFECOMPOSITE.md)
- [](PETSCFEOPENCL.md)
- [](PetscFECompositeGetMapping.md)
- [](PetscFECopyQuadrature.md)
- [](PetscFECreateTabulation.md)
- [](PetscFEGeom.md)
- [](PetscFEGeomComplete.md)
- [](PetscFEGeomGetCellPoint.md)
- [](PetscFEGeomGetChunk.md)
- [](PetscFEGeomGetPoint.md)
- [](PetscFEGeomRestoreChunk.md)
- [](PetscFEGetBasisSpace.md)
- [](PetscFEGetCeedBasis.md)
- [](PetscFEGetCellTabulation.md)
- [](PetscFEGetDimension.md)
- [](PetscFEGetDualSpace.md)
- [](PetscFEGetFaceCentroidTabulation.md)
- [](PetscFEGetFaceQuadrature.md)
- [](PetscFEGetFaceTabulation.md)
- [](PetscFEGetNumComponents.md)
- [](PetscFEGetNumDof.md)
- [](PetscFEGetQuadrature.md)
- [](PetscFEGetSpatialDimension.md)
- [](PetscFEGetTileSizes.md)
- [](PetscFEGetType.md)
- [](PetscFEIntegrate.md)
- [](PetscFEIntegrateBd.md)
- [](PetscFEIntegrateBdJacobian.md)
- [](PetscFEIntegrateBdResidual.md)
- [](PetscFEIntegrateJacobian.md)
- [](PetscFEIntegrateResidual.md)
- [](PetscFESetBasisSpace.md)
- [](PetscFESetCeed.md)
- [](PetscFESetDualSpace.md)
- [](PetscFESetFaceQuadrature.md)
- [](PetscFESetFromOptions.md)
- [](PetscFESetName.md)
- [](PetscFESetNumComponents.md)
- [](PetscFESetQuadrature.md)
- [](PetscFESetTileSizes.md)
- [](PetscFESetType.md)
- [](PetscFESetUp.md)
- [](PetscFEViewFromOptions.md)
- [](PetscTabulationDestroy.md)
```



### Advanced - Setting more advanced options and customization
```{hlist}
---
columns: 3
---
- [](PetscFEGetHeightSubspace.md)
- [](PetscFEPushforward.md)
- [](PetscFEPushforwardGradient.md)
- [](PetscFEPushforwardHessian.md)
- [](PetscFERefine.md)
- [](PetscFERegister.md)
```



### Developer - Interfaces rarely needed by applications programmers
```{hlist}
---
columns: 3
---
- [](PetscFEIntegrateHybridJacobian.md)
- [](PetscFEIntegrateHybridResidual.md)
- [](PetscFEOpenCLGetRealType.md)
- [](PetscFEOpenCLSetRealType.md)
```



## Single list of manual pages
```{hlist}
---
columns: 3
---
- [](PETSCFEBASIC.md)
- [](PETSCFECOMPOSITE.md)
- [](PETSCFEOPENCL.md)
- [](PetscFE.md)
- [](PetscFECompositeGetMapping.md)
- [](PetscFECopyQuadrature.md)
- [](PetscFECreate.md)
- [](PetscFECreateByCell.md)
- [](PetscFECreateDefault.md)
- [](PetscFECreateFromSpaces.md)
- [](PetscFECreateLagrange.md)
- [](PetscFECreateLagrangeByCell.md)
- [](PetscFECreateTabulation.md)
- [](PetscFEDestroy.md)
- [](PetscFEGeom.md)
- [](PetscFEGeomComplete.md)
- [](PetscFEGeomCreate.md)
- [](PetscFEGeomDestroy.md)
- [](PetscFEGeomGetCellPoint.md)
- [](PetscFEGeomGetChunk.md)
- [](PetscFEGeomGetPoint.md)
- [](PetscFEGeomRestoreChunk.md)
- [](PetscFEGetBasisSpace.md)
- [](PetscFEGetCeedBasis.md)
- [](PetscFEGetCellTabulation.md)
- [](PetscFEGetDimension.md)
- [](PetscFEGetDualSpace.md)
- [](PetscFEGetFaceCentroidTabulation.md)
- [](PetscFEGetFaceQuadrature.md)
- [](PetscFEGetFaceTabulation.md)
- [](PetscFEGetHeightSubspace.md)
- [](PetscFEGetNumComponents.md)
- [](PetscFEGetNumDof.md)
- [](PetscFEGetQuadrature.md)
- [](PetscFEGetSpatialDimension.md)
- [](PetscFEGetTileSizes.md)
- [](PetscFEGetType.md)
- [](PetscFEIntegrate.md)
- [](PetscFEIntegrateBd.md)
- [](PetscFEIntegrateBdJacobian.md)
- [](PetscFEIntegrateBdResidual.md)
- [](PetscFEIntegrateHybridJacobian.md)
- [](PetscFEIntegrateHybridResidual.md)
- [](PetscFEIntegrateJacobian.md)
- [](PetscFEIntegrateResidual.md)
- [](PetscFEJacobianType.md)
- [](PetscFEOpenCLGetRealType.md)
- [](PetscFEOpenCLSetRealType.md)
- [](PetscFEPushforward.md)
- [](PetscFEPushforwardGradient.md)
- [](PetscFEPushforwardHessian.md)
- [](PetscFERefine.md)
- [](PetscFERegister.md)
- [](PetscFESetBasisSpace.md)
- [](PetscFESetCeed.md)
- [](PetscFESetDualSpace.md)
- [](PetscFESetFaceQuadrature.md)
- [](PetscFESetFromOptions.md)
- [](PetscFESetName.md)
- [](PetscFESetNumComponents.md)
- [](PetscFESetQuadrature.md)
- [](PetscFESetTileSizes.md)
- [](PetscFESetType.md)
- [](PetscFESetUp.md)
- [](PetscFEType.md)
- [](PetscFEView.md)
- [](PetscFEViewFromOptions.md)
- [](PetscTabulationDestroy.md)
```


