# Citing Firedrake¶

If you publish results using Firedrake, we would be grateful if you would cite the relevant papers.

The simplest way to determine what these are 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 *
Citations.print_at_exit()
```

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 [RHM+16]. If you use the extruded mesh functionality please cite [MBM+16] and [BMH+16]. When using quadrilateral meshes, please cite [HH16] and [MBM+16].

The form compiler, TSFC, is documented in [HMLH17] and [HKH17]. If, in addition, your work relies on the kernel-level performance optimisations that Firedrake performs using COFFEE, please cite the COFFEE papers [LVR+15] and [LHK17].

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

## 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.

[BMH+16] | 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: http://arxiv.org/abs/1604.05937, arXiv:1604.05937, doi:10.5194/gmd-9-3803-2016. |

[HH16] | 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: http://arxiv.org/abs/1505.03357, arXiv:1505.03357, doi:10.1137/15M1021325. |

[HKH17] | 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: http://arxiv.org/abs/1711.02473, arXiv:1711.02473. |

[HMLH17] | Miklós Homolya, Lawrence Mitchell, Fabio Luporini, and David A Ham. TSFC: a structure-preserving form compiler. 2017. arXiv:1705.03667. |

[KM18] | 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: http://arxiv.org/abs/1706.01346, arXiv:1706.01346, doi:10.1137/17M1133208. |

[LHK17] | Fabio Luporini, David A. Ham, and Paul H. J. Kelly. An algorithm for the optimization of finite element integration loops. ACM Transactions on Mathematical Software, 44(1):3:1–3:26, 2017. arXiv:1604.05872, doi:10.1145/3054944. |

[LVR+15] | Fabio Luporini, Ana Lucia Varbanescu, Florian Rathgeber, Gheorghe-Teodor Bercea, J. Ramanujam, David A. Ham, and Paul H. J. Kelly. Cross-loop optimization of arithmetic intensity for finite element local assembly. ACM Transactions on Architecture and Code Optimization, 11(4):57:1–57:25, 2015. URL: http://doi.acm.org/10.1145/2687415, doi:10.1145/2687415. |

[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: http://arxiv.org/abs/1411.2940, arXiv:1411.2940, doi:10.1137/15M1021167. |

[RHM+16] | Florian Rathgeber, David A. Ham, Lawrence Mitchell, Michael Lange, Fabio Luporini, Andrew T. T. Mcrae, Gheorghe-Teodor Bercea, Graham R. Markall, and Paul H. J. Kelly. Firedrake: automating the finite element method by composing abstractions. ACM Trans. Math. Softw., 43(3):24:1–24:27, 2016. URL: http://arxiv.org/abs/1501.01809, arXiv:1501.01809, doi:10.1145/2998441. |