Source repository: https://github.com/deepmind/deepmind-research/tree/master/meshgraphnets
Video site: sites.google.com/view/meshgraphnets
Paper: arxiv.org/abs/2010.03409
The code in this repository is the PyTorch version of Learning Mesh-Based Simulation with Graph Networks. Currently, the code of cloth simulation can be run on both windows and linux. Development environment is PyCharm 2021.1.3. Package dependencies are defined in requirements.txt, please install all dependencies before runnning. The result of this version of MGN network is not 100% conform to the original code, please tune it according to your need. Other GNN networks code will be added to this repository in the future to explore the GNN performance for physical simulation.
The novel ripple model, inspired by water ripple, is based on deepmind's meshgraphnets and utilizes ripples to enhance the information propagation. Further new features such as different aggregation methods, attention and stochastic message passing are also already added.
Install dependencies:
pip install -r requirements.txt
Download a dataset:
mkdir -p ${DATA}
bash meshgraphnets/download_dataset.sh flag_simple ${DATA}
Go to the dataset directory and generate .idx file(needed by package tfrecord for reading .tfrecord file in PyTorch):
python -m tfrecord.tools.tfrecord2idx <file>.tfrecord <file>.id
Configure running goals by setting the variables and flags variables at the beginning of run_model.py, which includes running mode (training/evaluation), model, epochs, saving path and etc.
Run the code after configurating the code:
python run_model.py
Plot a trajectory (rollout.pkl path can be defined inside plot_cloth.py):
python plot_cloth.py
Datasets can be downloaded using the script download_dataset.sh
. They contain a metadata file describing the available
fields and their shape, and tfrecord datasets for train, valid and test splits. Dataset names match the naming in the
paper. The following datasets are available:
airfoil
cylinder_flow
deforming_plate
flag_minimal
flag_simple
flag_dynamic
sphere_simple
sphere_dynamic
flag_minimal
is a truncated version of flag_simple, and is only used for integration tests.