Table of Contents
Fetching ...

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.

Resolvent4py: a parallel Python package for analysis, model reduction and control of large-scale linear systems

TL;DR

The paper introduces resolvent4py, a parallel Python package for analysis, model reduction, and control of large-scale linear systems, addressing systems with on the order of to 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.

Paper Structure

This paper contains 10 sections, 1 equation, 5 figures, 1 table.

Figures (5)

  • Figure 1: Mach number contours of two-dimensional steady state solution for the Mach-- $7.7$ flow over a $15\deg$ compression ramp.
  • Figure 2: Eigenvalues of the linearized Navier-Stokes equations at non-dimensional spanwise wavenumber $\beta = 2\pi/0.066$ computed using resolvent4py (black dots). The red crosses denote the eigenvalues in Cao_2021 for comparison. The eigenvectors associated with $\lambda_1$, $\lambda_2$ and $\lambda_3$ are shown in figure \ref{['fig:ramp_evecs']}.
  • Figure 3: Real part of the spanwise velocity component from the eigenvectors corresponding to eigenvalues $\lambda_1$, $\lambda_2$ and $\lambda_3$ in figure \ref{['fig:ramp_evals']}.
  • Figure 4: Mach number contours of two-dimensional steady state solution for the Mach--$5.9$ flow over a $7\deg$ blunt cone, truncated to solely the post-shock regime and normalized by domain length.
  • Figure 5: Temperature forcing and response modes computed using RSVD-$\Delta$t plotted in streamwise and wall-normal coordinates normalized by the streamwise length of the domain.

Theorems & Definitions (2)

  • Remark 1
  • Remark 2