Citing Firedrake

If you publish results using Firedrake, we would be grateful if you would cite the Firedrake user manual:

  title        = {Firedrake User Manual},
  author       = {David A. Ham and Paul H. J. Kelly and Lawrence Mitchell and Colin J. Cotter and Robert C. Kirby and Koki Sagiyama and Nacime Bouziani and Sophia Vorderwuelbecke and Thomas J. Gregory and Jack Betteridge and Daniel R. Shapero and Reuben W. Nixon-Hill and Connor J. Ward and Patrick E. Farrell and Pablo D. Brubeck and India Marsden and Thomas H. Gibson and Miklós Homolya and Tianjiao Sun and Andrew T. T. McRae and Fabio Luporini and Alastair Gregory and Michael Lange and Simon W. Funke and Florian Rathgeber and Gheorghe-Teodor Bercea and Graham R. Markall},
  organization = {Imperial College London and University of Oxford and Baylor University and University of Washington},
  edition      = {First edition},
  year         = {2023},
  month        = {5},
  doi          = {10.25561/104839},

The simplest way to determine any additional relevant papers to cite is by asking Firedrake itself. You can ask that a list of citations relevant to your computation be printed when exiting by calling Citations.print_at_exit() after importing Firedrake:

from firedrake import *


Alternatively, you can select that this should occur by passing the command-line option -citations. In both cases, you will also obtain the correct citations for PETSc.

If you cannot use this approach, there are a number of papers. Those which are relevant depend a little on which functionality you used.

For Firedrake itself, please cite [HKM+23]. If you use the extruded mesh functionality please cite [MBM+16] and [BMH+16]. When using quadrilateral meshes, please cite [HH16] and [MBM+16]. If you use VertexOnlyMesh(), please cite [NHSCH23].

If you use the interfaces to couple Firedrake and machine learning frameworks such as PyTorch, please cite [BH21] and [BH23]. If you use the AbstractExternalOperator interface, please cite [BH21].

The form compiler, TSFC, is documented in [HMLH18] and [HKH17].

If you make use of matrix-free functionality and custom block preconditioning, please cite [KM18].

If you would like to help us to keep track of research directly benefitting from Firedrake, please feel free to add your paper in bibtex format in the bibliography for firedrake applications.

Citing other packages

Firedrake relies heavily on PETSc, which you should cite appropriately. Additionally, if you talk about UFL in your work, please cite the UFL paper.

Making your simulations reproducible with Zenodo integration

In addition to citing the work you use, you will want to provide references to the exact versions of Firedrake and its dependencies which you used. Firedrake supports this through Zenodo integration.


Gheorghe-Teodor Bercea, Andrew T. T. McRae, David A. Ham, Lawrence Mitchell, Florian Rathgeber, Luigi Nardi, Fabio Luporini, and Paul H. J. Kelly. A structure-exploiting numbering algorithm for finite elements on extruded meshes, and its performance evaluation in firedrake. Geoscientific Model Development, 9(10):3803–3815, 2016. URL:, arXiv:1604.05937, doi:10.5194/gmd-9-3803-2016.

[BH21] (1,2)

Nacime Bouziani and David A Ham. Escaping the abstraction: a foreign function interface for the Unified Form Language [UFL]. Differentiable Programming Workshop at NeurIPS 2021, 2021. arXiv: 2111.00945. URL:


Nacime Bouziani and David A. Ham. Physics-driven machine learning models coupling PyTorch and Firedrake. In ICLR 2023 Workshop on Physics for Machine Learning. 2023. doi:10.48550/arXiv.2303.06871.


Thomas H. Gibson, Lawrence Mitchell, David A. Ham, and Colin J. Cotter. Slate: extending Firedrake's domain-specific abstraction to hybridized solvers for geoscience and beyond. 2020. URL:, arXiv:1802.00303, doi:10.5194/gmd-13-735-2020.


David A. Ham, Paul H. J. Kelly, Lawrence Mitchell, Colin J. Cotter, Robert C. Kirby, Koki Sagiyama, Nacime Bouziani, Sophia Vorderwuelbecke, Thomas J. Gregory, Jack Betteridge, Daniel R. Shapero, Reuben W. Nixon-Hill, Connor J. Ward, Patrick E. Farrell, Pablo D. Brubeck, India Marsden, Thomas H. Gibson, Miklós Homolya, Tianjiao Sun, Andrew T. T. McRae, Fabio Luporini, Alastair Gregory, Michael Lange, Simon W. Funke, Florian Rathgeber, Gheorghe-Teodor Bercea, and Graham R. Markall. Firedrake User Manual. Imperial College London and University of Oxford and Baylor University and University of Washington, first edition edition, 5 2023. doi:10.25561/104839.


M. Homolya, L. Mitchell, F. Luporini, and D. Ham. Tsfc: a structure-preserving form compiler. SIAM Journal on Scientific Computing, 40(3):C401–C428, 2018. URL:, doi:10.1137/17M1130642.


Miklós Homolya and David A. Ham. A parallel edge orientation algorithm for quadrilateral meshes. SIAM Journal on Scientific Computing, 38(5):S48–S61, 2016. URL:, arXiv:1505.03357, doi:10.1137/15M1021325.


Miklós Homolya, Robert C. Kirby, and David A. Ham. Exposing and exploiting structure: optimal code generation for high-order finite element methods. 2017. URL:, arXiv:1711.02473.


Tobin Isaac. Recursive, Parameter-Free, Explicitly Defined Interpolation Nodes for Simplices. SIAM Journal on Scientific Computing, 42(6):A4046–A4062, 2020. URL:, arXiv:2002.09421, doi:10.1137/20M1321802.


Robert C. Kirby and Lawrence Mitchell. Solver composition across the PDE/linear algebra barrier. SIAM Journal on Scientific Computing, 40(1):C76–C98, 2018. URL:, arXiv:1706.01346, doi:10.1137/17M1133208.

[MBM+16] (1,2)

Andrew T. T. McRae, Gheorghe-Teodor Bercea, Lawrence Mitchell, David A. Ham, and Colin J. Cotter. Automated generation and symbolic manipulation of tensor product finite elements. SIAM Journal on Scientific Computing, 38(5):S25–S47, 2016. URL:, arXiv:1411.2940, doi:10.1137/15M1021167.


Reuben W. Nixon-Hill, Daniel Shapero, Colin J. Cotter, and David A. Ham. Consistent point data assimilation in firedrake and icepack. 2023. URL:, arXiv:2304.06058.