GCA-ROM is a library which implements graph convolutional autoencoder architecture as a nonlinear model order reduction strategy.
GCA-ROM requires pytorch
, pyg
, matplotlib
, scipy
and h5py
.
They can be easily installed via pip
or conda
.
In the notebook folder, one can find the *.ipynb
files corresponding to the tutorials to run the models in Google Colab without installing the package.
The latest version of pyg
is currently not available on conda
. The required dependencies, exported in utils/gca_rom.yml, can be automatically installed in a new environment via
conda env create -f gca_rom.yml
conda create -n 'gca_rom' python=3.10
conda activate gca_rom
conda install pytorch -c pytorch
conda install pyg -c pyg
conda install matplotlib pandas scipy jupyter h5py
The official distribution is on GitHub, and you can clone the repository using
git clone git@github.com:fpichi/gca-rom.git
- a graph-based layer to express an unstructured dataset;
- an encoder module compressing the information through:
- spatial convolutional layers based on MoNet to identify patterns between geometrically close regions;
- skip-connection operation, to keep track of the original information and help the learning procedure;
- a pooling operation, to down-sample the data to obtain smaller networks;
- a bottleneck, connected to the encoder by means of a dense layer, which contains the latent behavior in a vector;
- a decoder module, recovering the original data by applying the same operations as in the encoder, but in reverse order.
The nonlinear ROM methodology has been tested on 14 different benchmarks, including:
- scalar/vector and linear/nonlinear equations (01_poisson.ipynb)
- advection-dominated regime (02_advection.ipynb)
- physical and geometrical parametrizations (03_graetz.ipynb)
- bifurcating phenomena (04_navier_stokes_vx.ipynb, 05_navier_stokes_vy.ipynb, 06_navier_stokes_p.ipynb)
- time-dependent models (07_diffusion.ipynb, 08_poiseuille.ipynb)
- a 3D elastic problem (09_elasticity.ipynb)
- high-dimensional parametric applications (10_stokes.ipynb)
- complex time-dependent problems (11_holed_advection.ipynb, 12_lid_driven_cavity.ipynb, 13_moving_hole_advection.ipynb)
To run a benchmark, navigate to the tutorial folder and run the corresponding file.ipynb. If available, a GUI will open with preset values for the hyperparameter configuration of the network. Once the window is closed, the code starts the training phase, unless a trained model with the same configuration already exists.
After the GCA-ROM is evaluated, many plots are automatically generated, ranging from training losses, latent evolution, relative errors, solution and error fields, and gif of the dynamics. Below are some snaphots of the approximated solutions for the available benchmarks:
[1] Pichi, F., Moya, B. and Hesthaven, J.S. (2023) ‘A graph convolutional autoencoder approach to model order reduction for parametrized PDEs’. Available at: arXiv, Journal of Computational Physics
If you use GCA-ROM for academic research, you are encouraged to cite the paper using:
@article{PichiGraphConvolutionalAutoencoder2024,
title = {A Graph Convolutional Autoencoder Approach to Model Order Reduction for Parametrized {{PDEs}}},
author = {Pichi, Federico and Moya, Beatriz and Hesthaven, Jan S.},
year = {2024},
journal = {Journal of Computational Physics},
volume = {501},
pages = {112762},
doi = {10.1016/j.jcp.2024.112762},
urldate = {2024-01-18}
}
- Federico Pichi (fpichi@sissa.it)
- Beatriz Moya García (beatriz.moya@cnrsatcreate.sg)
in collaboration with the MCSS group at EPFL of Prof. Jan S. Hesthaven.
With contributions from:
- Oisín Morrison (oisinmmm@gmail.com)
- Francesco Pettenon (francesco.pettenon@epfl.ch)
- Francesco Sala (francesco.sala@epfl.ch)
- Leonardo Trentini (leonardo.trentini@epfl.ch)