tlm_adjoint

tlm_adjoint is a Python library for the automated derivation of higher order tangent-linear and adjoint models. This interfaces with FEniCS or Firedrake for the calculation of higher order partial differential equation constrained derivative information. Currently targetting FEniCS 2019.1.0 and the Firedrake master branch.

The principles used by the library are described in Maddison et al, SISC 41(5), pp. C417‒C445, 2019.

tlm_adjoint can be found in the tlm_adjoint GitHub repository.

libsupermesh

I was the PI of the ARCHER embedded CSE eCSE03-08, "Parallel supermeshing for multimesh modelling", for which the libsupermesh parallel supermeshing library was developed. Details regarding the library can be found in the report.

The latest version can be found in the libsupermesh GitHub repository.

Spud

I have previously contributed to the Spud options system. This provides a means of describing options for complex numerical models, and configuring these models using a simple graphical user interface.

The Spud system is described in Ham et al, GMD 2, pp. 33‒42, 2009. The latest version can be accessed here.

Fluidity

I have previously contributed to Fluidity. This is an adaptive mesh finite element computational fluid dynamics code.

Further information, including the Fluidity manual and access to the latest version, can be found here.

timestepping library

I was the developer of the "timestepping" extension to the FEniCS system, which was included with the dolfin-adjoint library. This was used to optimise time dependent finite element problems, with automated adjoining and similar optimisation of the time-dependent adjoint.

The principles used by the library are described in Maddison and Farrell, CMAME 276, pp. 95‒121, 2014.

The timestepping library is superseded by tlm_adjoint.