A two-stage method for constructing projection-based reduced-order models (ROMs) of parameterized PDEs, based on Tucker tensor factorization of solution snapshots.
Solution snapshots are encoded offline via a multi-linear Tucker factorization of the snapshot tensor, enabling a reduced basis that varies nonlinearly with PDE parameters to be rapidly constructed online for use in a Galerkin ROM. Two extensions of this strategy are developed: reduced bases orthonormalized with respect to a general discrete inner product, and interpolation of Tucker-encoded states via Radial Basis Functions and the Mamonov/Olshanskii method. The approach targets regimes where monolithic-basis ROMs struggle, including sparse parameter sampling and problems with slowly decaying Kolmogorov
Three basis construction methods are compared:
- Monolithic: a single global SVD basis computed from all training snapshots, used as a baseline
- Radial Basis Functions (RBF): a parameter-interpolated basis using Gaussian RBF weights on the Tucker parameter factor
- Mamonov/Olshanskii (MO): a locally informed basis using distance-weighted interpolation on the K nearest training neighbors
2D heat equation on
2D wave equation on
Maxwell equations on a 3D domain, tracking the electric field
Two additional features distinguish this problem:
-
Curl-enriched bases: the
$\boldsymbol{E}$ basis is augmented with the weak curl of the$\boldsymbol{B}$ modes, and vice versa. -
Q-DEIM hyperreduction: approximates the parametric current source in a low-rank form, with a greedy QR-based selection of interpolation points (Q-DEIM) to reduce online assembly cost to scale with the approximation rank rather than the mesh size
src/
Bases/
rbf.py # Radial Basis Function interpolant
mo.py # Mamonov/Olshanskii interpolant
Heat/
FOM.py # Finite element heat equation model
ROM.py # POD-ROM for the heat equation
plots.py
Wave/
FOM.py # Finite element wave equation model
ROM.py # POD-ROM for the wave equation
plots.py
Maxwell/
FOM.py # Finite element Maxwell model
ROM.py # Enriched hyperreduced-POD-ROM for Maxwell
error_sweeps.py
plots.py
Utils/
utils.py # Shared utilities (Tucker loading, norms, orthonormalization)
experiments/
Heat/
generate_data.py # Run FOM over training/test parameters
tucker.py # Compute Tucker decomposition and monolithic SVD
run.ipynb # ROM experiments and plots
Wave/
generate_data.py
tucker.py
run.ipynb
Maxwell/
generate_data.py
tucker.py
generate_current.py # Compute Q-DEIM basis and interpolation points for the current source
run.ipynb
Each experiment is self-contained in its run.ipynb notebook under experiments/Heat/, experiments/Wave/, and experiments/Maxwell/.