Compatible finite element methods for geophysical flows : automation and implementation Using firedrake (2019)