fdvar documentation

fdvar is a Python library for parallel-in-time 4DVar data assimilation using the Firedrake finite element library and the PETSc/TAO optimisation library.

fdvar uses Firedrake and Pyadjoint’s automatic differentiation capabilities to automate the construction of the 4DVar system and it’s derivatives, and provides a variety of preconditioners for solving the optimisation problem using TAO.

Features

  • Automatic construction of derivatives from forward model.

  • Automatic construction of solvers from reduced functional.

  • Time-parallel preconditioners.

  • Access to range of composable optimisation and linear solvers via PETSc/TAO.

  • Works with any PDE expressable using the Unified Form Language.

Installation

  1. Install Firedrake using the instructions here

  2. Install fdvar into the Firedrake virtual environment. There are two installation options:

    • Coming soon … Pypi release compatible with the latest Firedrake release.

    • Cloning the github repository:

      1. git clone https://github.com/firedrakeproject/fdvar.git

      2. pip install './fdvar'

  3. We recommend using the excellent implicit Runge-Kutta library Irksome for timestepping. You can either:

    • follow the instructions on the Irksome website, or

    • use the demos optional dependency in the pip install step above: pip install './fdvar[demos]'.

Getting Started

Demos

A Python script is generated for each demo and is linked at the bottom of the demo.

Getting in touch

Please get in touch with any questions related to fdvar by raising an issue on the GitHub repository. For more general Firedrake queries please see the Firedrake contact page

Contributors

fdvar has been developed by: