Skip to content
/ gca-rom Public

GCA-ROM is a library which implements graph convolutional autoencoder architecture as a nonlinear model order reduction strategy.

License

Notifications You must be signed in to change notification settings

fpichi/gca-rom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GCA-ROM

GCA-ROM is a library which implements graph convolutional autoencoder architecture as a nonlinear model order reduction strategy.

Installation

GCA-ROM requires pytorch, pyg, matplotlib, scipy and h5py. They can be easily installed via pip or conda.

Open In Colab

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.

MacOS

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

Linux

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

Summary of GCA-ROM Features

- OFFLINE PHASE

- ONLINE PHASE

The proposed modular architecture, namely Graph Convolutional Autoencoder for Reduced Order Modelling (GCA-ROM), subsequently exploits:
  1. a graph-based layer to express an unstructured dataset;
  2. an encoder module compressing the information through:
    1. spatial convolutional layers based on MoNet to identify patterns between geometrically close regions;
    2. skip-connection operation, to keep track of the original information and help the learning procedure;
    3. a pooling operation, to down-sample the data to obtain smaller networks;
  3. a bottleneck, connected to the encoder by means of a dense layer, which contains the latent behavior in a vector;
  4. a decoder module, recovering the original data by applying the same operations as in the encoder, but in reverse order.

Tutorials

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:

Cite GCA-ROM

[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}
}

Authors and contributors

in collaboration with the MCSS group at EPFL of Prof. Jan S. Hesthaven.

With contributions from: