Table of Contents
Fetching ...

pythOS: A Python library for solving IVPs by operator splitting

Victoria Guenter, Siqi Wei, Raymond J. Spiteri

TL;DR

pythOS addresses the challenge of solving IVPs arising from multi-physics PDE discretizations by unifying operator-splitting approaches in a Python library. It implements fractional-step (split RHS) methods, additive RK families (ARK and GARK), and multi-rate and multi-rate infinitesimal strategies, including IMEX variants, with support for complex coefficients and arbitrary numbers of sub-systems. The library interfaces with Firedrake for spatial discretization and with Irksome for exponential-time and implicit RK solvers, enabling flexible splitting strategies, sub-integrator choices, and cross-method comparisons. Demonstrations on a 2D advection–diffusion–reaction problem, a complex-valued ODE, and a stiff Brusselator illustrate high-order convergence, complex-time stepping, and practical performance, highlighting pythOS as a systematic tool for exploring operator-splitting in multi-physics contexts.

Abstract

Operator-splitting methods are widespread in the numerical solution of differential equations, especially the initial-value problems in ordinary differential equations that arise from a method-of-lines discretization of partial differential equations. Such problems can often be solved more effectively by treating the various terms individually with specialized methods rather than simultaneously in a monolithic fashion. This paper describes \pythOS, a Python software library for the systematic solution of differential equations by operator-splitting methods. The functionality of \pythOS\ focuses on fractional-step methods, including those with real and complex coefficients, but it also implements additive Runge--Kutta methods, generalized additive Runge--Kutta methods, and multi-rate, and multi-rate infinitesimal methods. Experimentation with the solution of practical problems is facilitated through an interface to the \Firedrake\ library for the finite element spatial discretization of partial differential equations and further enhanced by the convenient implementation of exponential time-integration methods and fully implicit Runge--Kutta methods available from the \Irksome\ software library. The functionality of \pythOS\ as well as some less generally appreciated aspects of operator-splitting methods are demonstrated by means of examples.

pythOS: A Python library for solving IVPs by operator splitting

TL;DR

pythOS addresses the challenge of solving IVPs arising from multi-physics PDE discretizations by unifying operator-splitting approaches in a Python library. It implements fractional-step (split RHS) methods, additive RK families (ARK and GARK), and multi-rate and multi-rate infinitesimal strategies, including IMEX variants, with support for complex coefficients and arbitrary numbers of sub-systems. The library interfaces with Firedrake for spatial discretization and with Irksome for exponential-time and implicit RK solvers, enabling flexible splitting strategies, sub-integrator choices, and cross-method comparisons. Demonstrations on a 2D advection–diffusion–reaction problem, a complex-valued ODE, and a stiff Brusselator illustrate high-order convergence, complex-time stepping, and practical performance, highlighting pythOS as a systematic tool for exploring operator-splitting in multi-physics contexts.

Abstract

Operator-splitting methods are widespread in the numerical solution of differential equations, especially the initial-value problems in ordinary differential equations that arise from a method-of-lines discretization of partial differential equations. Such problems can often be solved more effectively by treating the various terms individually with specialized methods rather than simultaneously in a monolithic fashion. This paper describes \pythOS, a Python software library for the systematic solution of differential equations by operator-splitting methods. The functionality of \pythOS\ focuses on fractional-step methods, including those with real and complex coefficients, but it also implements additive Runge--Kutta methods, generalized additive Runge--Kutta methods, and multi-rate, and multi-rate infinitesimal methods. Experimentation with the solution of practical problems is facilitated through an interface to the \Firedrake\ library for the finite element spatial discretization of partial differential equations and further enhanced by the convenient implementation of exponential time-integration methods and fully implicit Runge--Kutta methods available from the \Irksome\ software library. The functionality of \pythOS\ as well as some less generally appreciated aspects of operator-splitting methods are demonstrated by means of examples.
Paper Structure (22 sections, 28 equations, 5 figures, 3 algorithms)

This paper contains 22 sections, 28 equations, 5 figures, 3 algorithms.

Figures (5)

  • Figure 1: Convergence of the Godunov, Strang, PP3_4A-3, and Yoshida splitting methods applied to the 2D advection-diffusion-reaction problem \ref{['eq:ADR']}
  • Figure 2: Convergence of the Strang, CLT2, and CLT3 splitting methods applied to the 4-split 2D advection-diffusion-reaction problem \ref{['eq:ADR']}
  • Figure 3: Convergence of the 3-split versions of Strang, CLT2, and CLT3 splitting applied to the complex ODE \ref{['complex_ode']}.
  • Figure 4: Work-precision diagrams of Strang, CLT2, and CLT3 with RK3 sub-integrators applied to the complex ODE \ref{['complex_ode']} and the system of real ODEs \ref{['complex_ode_real']}.
  • Figure 5: Convergence of multi-rate infinitesimal and generalized additive Runge--Kutta methods applied to the stiff Brusselator problem \ref{['eq:stiff_brusselator']}.

Theorems & Definitions (1)

  • Remark 2.1