  Code generation based software platforms, such as Firedrake, have become
popular tools for developing complicated finite element discretisations of
partial differential equations. We extended the code generation infrastructure
in Firedrake with optimisations that can exploit the structure inherent to some
finite elements. This includes sum factorisation on cuboid cells for
continuous, discontinuous, H(div) and H(curl) conforming elements. Our
experiments confirm optimal algorithmic complexity for high-order finite
element assembly. This is achieved through several novel contributions: the
introduction of a more powerful interface between the form compiler and the
library providing the finite elements; a more abstract, smarter library of
finite elements called FInAT that explicitly communicates the structure of
elements; and form compiler algorithms to automatically exploit this exposed
structure.
