Giter Site home page Giter Site logo

sunwoong-yang / gca-rom Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fpichi/gca-rom

0.0 0.0 0.0 395.82 MB

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

Home Page: https://fpichi.github.io/gca-rom/

License: GNU General Public License v3.0

Python 49.83% Jupyter Notebook 50.17%

gca-rom's Introduction

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 [email protected]: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 [57] 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 10 different benchmarks, including:

  • scalar/vector and linear/nonlinear equations (01_poisson.py)
  • advection-dominated regime (02_advection.py)
  • physical and geometrical parametrizations (03_graetz.py)
  • bifurcating phenomena (04_navier_stokes_vx.py, 05_navier_stokes_vy.py, 06_navier_stokes_p.py)
  • time-dependent models (07_diffusion.py, 08_poiseuille.py)
  • a 3D elastic problem (09_elasticity.py)
  • high-dimensional parametric applications (10_stokes.py)

To run a benchmark, navigate to the tutorial folder and run the corresponding file.py. 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 Below are some snaphots of the approximated solutions for the available becnhamrks:

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:

Made with contrib.rocks.

gca-rom's People

Contributors

beatrizmoya avatar fpichi avatar francpp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.