Resolvent4py: a parallel Python package for analysis, model reduction and control of large-scale linear systems
Alberto Padovan, Vishal Anantharaman, Clarence W. Rowley, Blaine Vollmer, Tim Colonius, Daniel J. Bodony
TL;DR
The paper introduces resolvent4py, a parallel Python package for analysis, model reduction, and control of large-scale linear systems, addressing systems with $N$ on the order of $10^6$ to $10^9$ states. It provides a Pythonic API built on MPI via mpi4py and data structures from PETSc/SLEPc, centralized around a LinearOperator abstraction with multiple concrete representations. Core capabilities include eigendecomposition (with shift-and-invert), SVD via RSVD (including time-stepping variants for resolvent analysis), and linear-time-invariant balanced truncation, complemented by parallel I/O and utility routines. Demonstrations on hypersonic flows—the compression ramp and blunt cone—showcase the library’s ability to handle multi-million-degree-of-freedom problems and reproduce established results, underscoring its potential to accelerate large-scale physics analyses and engineering workflows. The work aims to democratize access to scalable linear-system tools and sets the stage for future expansions to time-periodic, harmonic resolvent analyses and nonlinear extensions.
Abstract
In this paper, we present resolvent4py, a parallel Python package for the analysis, model reduction and control of large-scale linear systems with millions or billions of degrees of freedom. This package provides the user with a friendly Python-like experience (akin to that of well-established libraries such as numpy and scipy), while enabling MPI-based parallelism through mpi4py, petsc4py and slepc4py. In turn, this allows for the development of streamlined and efficient Python code that can be used to solve several problems in fluid mechanics, solid mechanics, graph theory, molecular dynamics and several other fields.
