Irksome: automated implicit time stepping and fast solvers for finite elements
Please login to view abstract download link
High-order implicit time-stepping of discretized partial differential equations offers great theoretical properties and signficant computational challenges. On one hand, fully implicit Runge--Kutta or Galerkin-type schemes can maintain important physical properties (dissipation, conservation) with high accuracy, whereas diagonally implicit or multi-step schemes only do so with order barriers or time-step restrictions. On the other hand, fully implicit schemes require the construction and solution of a large, coupled algebraic system for all the discrete stages. This operator is far more involved than that for a single-stage or method-of-lines discretization. Both constructing and solving the algebraic system present major challenges. Irksome is a Python library that overcomes these practical challenges. Builing on top of Firedrake, it takes a user-provided semidiscrete variational problem nand a description of the time-stepping scheme (for example, the Butcher tableau of a Runge--Kutta method), and then automates the construction of the fully discrete variational problem. Then, Irksome works with the Firedrake/PETSc interface to offer highly-effective strategies for solving the algebraic systems. These include stage-segregated schemes that facilitate use of preconditioners for single-stage schemes as well as multigrid algorithms with custom relaxation that couples the stages together. This talk will survey Irksome and some of its capabilities, including Runge--Kutta and Galerkin-type methods for first-order time derivatives and Runge--Kutta--Nyström methods for problems with second-order time derivatives. Examples will focus on demonstrating Irksome's ease of use and the significant gains in accuracy and efficiency to be obtained from fully implicit schemes with efficient solvers. We will also present recent developments on time stepping methods in Irksome that can preserve bounds constraints by means of variational inequalities.
