  Firedrake is a new tool for automating the numerical solution of partial
differential equations. Firedrake adopts the domain-specific language for the
finite element method of the FEniCS project, but with a pure Python
runtime-only implementation centred on the composition of several existing and
new abstractions for particular aspects of scientific computing. The result is
a more complete separation of concerns which eases the incorporation of
separate contributions from computer scientists, numerical analysts and
application specialists. These contributions may add functionality, or improve
performance.
  Firedrake benefits from automatically applying new optimisations. This
includes factorising mixed function spaces, transforming and vectorising inner
loops, and intrinsically supporting block matrix operations. Importantly,
Firedrake presents a simple public API for escaping the UFL abstraction. This
allows users to implement common operations that fall outside pure variational
formulations, such as flux-limiters.
