Strong and weak constraint 4DVar data assimilation using Firedrake and pyadjoint. Requires Firedrake branch allatoncereducedfunctional for the AllAtOnceReducedFunctional class.