https://github.com/gridap/gridaproms.jl
https://github.com/gridap/gridaproms.jl
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/gridap/gridaproms.jl
- Owner: gridap
- License: mit
- Created: 2023-11-26T05:39:27.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2026-04-14T16:32:27.000Z (2 months ago)
- Last Synced: 2026-04-14T18:24:11.179Z (2 months ago)
- Language: Julia
- Size: 90.6 MB
- Stars: 12
- Watchers: 0
- Forks: 3
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: NEWS.md
- License: LICENSE
Awesome Lists containing this project
README
# GridapROMs
This package provides a set of tools for the solution of parameterised 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](https://github.com/gridap/Gridap.jl).
| **Documentation** |
|:------------ |
| [](https://gridap.github.io/GridapROMs.jl/dev/) |
| **Citation** |
| [](https://arxiv.org/abs/2503.15994) |
|**Build Status** |
| [](https://github.com/gridap/GridapROMs.jl/actions/workflows/ci.yml) [](https://codecov.io/gh/gridap/GridapROMs.jl) |
## Installation
```julia
# Type ] to enter package mode
pkg> add GridapROMs
```
## Examples
Before running the following examples, it is necessary to import from file some geometries which can be found [here](https://github.com/gridap/GridapROMs.jl/tree/main/docs/src/assets). 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
```julia
# Type ] to enter package mode
pkg> add DrWatson
```
and call
```julia
julia> test_dir = datadir()
```
Now we can unzip the compressed folder in `dir` with
```julia
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`.
### Test 1
Solve a steady elasticity problem with a [proper orthogonal decomposition algorithm](https://link.springer.com/book/10.1007/978-3-319-15431-2) (POD). The presence of parameters affecting the problem's LHS/RHS are dealt with by employing a [discrete empirical interpolation method in matrix form](https://www.sciencedirect.com/science/article/pii/S0021999115006543) (MDEIM).
```julia
julia> include("examples/SteadyElasticityPOD.jl")
```
Solution | Convergence
:-------------------------:|:-------------------------:
| 
### Test 2
Solve the same problem, but with a tensor-train (TT) decomposition approach. In particular, we employ the [TT-SVD](https://epubs.siam.org/doi/10.1137/090752286) method to compute the reduced approximation subspace, and [TT-MDEIM](https://arxiv.org/abs/2412.14460) for the system approximation.
```julia
julia> include("examples/SteadyElasticityTTSVD.jl")
```
Solution | Convergence
:-------------------------:|:-------------------------:
| 
### Test 3
Solve an [advection-diffusion equation](https://gridap.github.io/Tutorials/dev/pages/t010_advection_diffusion/) with TT-SVD and TT-MDEIM.
```julia
julia> include("examples/AdvectionDiffusionTTSVD.jl")
```
Solution | Convergence
:-------------------------:|:-------------------------:
| 
### Test 4
Solve a 2D [electromagnetic wave scattering problem](https://gridap.github.io/Tutorials/dev/pages/t013_emscatter/) modeled by the steady Helmholtz equation in PLM condition. We employ POD and MDEIM for the reduced problem.
```julia
julia> include("examples/HelmholtzPOD.jl")
```
Solution | Convergence
:-------------------------:|:-------------------------:
| 
### Test 5
Solve a steady Stokes equation with a POD+MDEIM method.
```julia
julia> include("examples/SteadyStokesPOD.jl")
```
Solution - velocity | Solution - pressure | Convergence
:-------------------------:|:-------------------------:|:-------------------------:
|
|
### Test 6
Moving to transient applications, we first solve a heat equation with a [space-time RB-MDEIM method](https://www.sciencedirect.com/science/article/pii/S0377042724000165).
```julia
julia> include("examples/HeatEquationSTRB.jl")
```
Solution | Convergence
:-------------------------:|:-------------------------:
|
### Test 7
Lastly, we solve a transient Navier-Stokes equation with the same space-time RB method as in `Test 6`.
```julia
julia> include("examples/NStokesTransientSTRB.jl")
```
Solution - velocity | Solution - pressure | Convergence
:-------------------------:|:-------------------------:|:-------------------------:
|
|
## How to cite GridapROMs
In order to give credit to the `GridapROMs` contributors, we simply ask you to cite the references below in any publication in which you have made use of the `GridapROMs` project.
```
@article{MUELLER2026109985,
title = {GridapROMs.jl: Efficient reduced order modelling in the Julia programming language},
journal = {Computer Physics Communications},
volume = {320},
pages = {109985},
year = {2026},
issn = {0010-4655},
doi = {https://doi.org/10.1016/j.cpc.2025.109985},
url = {https://www.sciencedirect.com/science/article/pii/S0010465525004862},
author = {Nicholas Mueller and Santiago Badia},
keywords = {PDE, Reduced order model, Julia}
}
```