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——一个基于算子分裂法系统求解微分方程的Python软件库。\pythOS的核心功能聚焦于分数步方法,包括具有实系数与复系数的算法,同时该库也实现了加性Runge--Kutta方法、广义加性Runge--Kutta方法、多速率方法以及多速率无穷小方法。通过与偏微分方程有限元空间离散库\Firedrake的接口,本库便于开展实际问题的求解实验;结合\Irksome软件库提供的指数时间积分方法与完全隐式Runge--Kutta方法的便捷实现,进一步增强了其实用性。本文通过算例展示了\pythOS的功能特性以及算子分裂法中某些较少被关注的方面。