This package provides a set of tools for the solution of parameterized partial differential equations (PDEs) with reduced order models (ROMs). The presence of parameters severely impacts the feasibility of running high-fidelity (HF) codes such as the finite element (FE) method, because typically the solution is required for many different values of the parameters. ROMs create surrogate models that approximate the solution manifold on a lower-dimensional manifold. These surrogates provide accurate solutions in a much shorter time and with much fewer computational resources. The library is developed in close collaboration with Gridap.jl.
Documentation |
---|
Citation |
Build Status |
# Type ] to enter package mode
pkg> add GridapROMs
Before running the following examples, it is necessary to import from file some geometries which can be found here. The file name is models.zip
. The geometries must be unzipped and moved to a directory where the numerical experiments are ran. This directory should be placed inside the data
directory of the Julia
project which is being used to run these experiments. To find this directory, first add the package DrWatson
with
# Type ] to enter package mode
pkg> add DrWatson
and call
julia> test_dir = datadir()
Now we can unzip the compressed folder in dir
with
julia> model_dir = joinpath(@__DIR__,"docs/src/assets")
# Type ; to enter shell mode
shell> unzip $model_dir/models.zip -d $test_dir
In the following numerical examples, we provide a plot of the convergence errors for a series of tolerances (which determine the accuracy of the method), and a solution plot obtained with a fixed tolerance of 1e-5
.
Solve a steady elasticity problem with a proper orthogonal decomposition algorithm (POD). The presence of parameters affecting the problem's LHS/RHS are dealt with by employing a discrete empirical interpolation method in matrix form (MDEIM).
julia> include("examples/SteadyElasticityPOD.jl")
Solution | Convergence |
---|---|
![]() |
![]() |
Solve the same problem, but with a tensor-train (TT) decomposition approach. In particular, we employ the TT-SVD method to compute the reduced approximation subspace, and TT-MDEIM for the system approximation.
julia> include("examples/SteadyElasticityTTSVD.jl")
Solution | Convergence |
---|---|
![]() |
![]() |
Solve a steady Stokes equation with a POD+MDEIM method.
julia> include("examples/SteadyStokesPOD.jl")
Solution - velocity | Solution - pressure | Convergence |
---|---|---|
![]() |
![]() |
![]() |
Moving to transient applications, we first solve a heat equation with a space-time RB-MDEIM method.
julia> include("examples/HeatEquationSTRB.jl")
Solution | Convergence |
---|---|
![]() |
![]() |
Lastly, we solve a transient Navier-Stokes equation with the same space-time RB method as in Test 4
.
julia> include("examples/NStokesTransientSTRB.jl")
Solution - velocity | Solution - pressure | Convergence |
---|---|---|
![]() |
![]() |
![]() |
In order to give credit to the ROManifolds
contributors, we simply ask you to cite the references below in any publication in which you have made use of the ROManifolds
project.
@misc{mueller2025gridapromsjlefficientreducedorder,
title={GridapROMs.jl: Efficient reduced order modelling in the Julia programming language},
author={Nicholas Mueller and Santiago Badia},
year={2025},
eprint={2503.15994},
archivePrefix={arXiv},
primaryClass={math.NA},
url={https://arxiv.org/abs/2503.15994},
}