  The efficient solution of discretisations of coupled systems of partial
differential equations (PDEs) is at the core of much of numerical simulation.
Significant effort has been expended on scalable algorithms to precondition
Krylov iterations for the linear systems that arise. With few exceptions, the
reported numerical implementation of such solution strategies is specific to a
particular model setup, and intimately ties the solver strategy to the
discretisation and PDE, especially when the preconditioner requires auxiliary
operators. In this paper, we present recent improvements in the Firedrake
finite element library that allow for straightforward development of the
building blocks of extensible, composable preconditioners that decouple the
solver from the model formulation. Our implementation extends the algebraic
composability of linear solvers offered by the PETSc library by augmenting
operators, and hence preconditioners, with the ability to provide any necessary
auxiliary operators. Rather than specifying up front the full solver
configuration, tied to the model, solvers can be developed independently of
model formulation and configured at runtime. We illustrate with examples from
incompressible fluids and temperature-driven convection.
