Code generation systems greatly simplify the formulation of physical problems, allowing efficient and accurate discretizations to be rapidly deployed for challenging problems. However, domain-specific languages like UFL currently lack abstractions to describe time-dependence, leaving users to hand-code multistep or Runge–Kutta methods if they wish to obtain high temporal accuracy or utilize special time-stepping strategies.
In this talk, we describe IRKsome, a simple package that, given a UFL description of a semidiscrete problem and a Butcher tableau, produces UFL for the associated Runge–Kutta method. In this way, we can obtain high-order time-stepping methods with appropriate stability and/or symplecticity properties. On the down side, implicit Runge–Kutta methods lead to algebraic systems coupling together the several stages, which presents greater challenges to the linear solvers. We also present preliminary results on preconditioners.