Skip to content

Latest commit

 

History

History

meshgraphnets

Learning Mesh-Based Simulation with Graph Networks (ICLR 2021)

Video site: sites.google.com/view/meshgraphnets

Paper: arxiv.org/abs/2010.03409

If you use the code here please cite this paper:

@inproceedings{pfaff2021learning,
  title={Learning Mesh-Based Simulation with Graph Networks},
  author={Tobias Pfaff and
          Meire Fortunato and
          Alvaro Sanchez-Gonzalez and
          Peter W. Battaglia},
  booktitle={International Conference on Learning Representations},
  year={2021}
}

Overview

This release contains the full datasets used in the paper, as well as data loaders (dataset.py), and the learned model core (core_model.py). These components are designed to work with all of our domains.

We also include demonstration code for a full training and evaluation pipeline, for the cylinder_flow and flag_simple domains only. This includes graph encoding, evaluation, rollout and plotting trajectory. Refer to the respective cfd_* and cloth_* files for details.

Setup

Prepare environment, install dependencies:

virtualenv --python=python3.6 "${ENV}"
${ENV}/bin/activate
pip install -r meshgraphnets/requirements.txt

Download a dataset:

mkdir -p ${DATA}
bash meshgraphnets/download_dataset.sh flag_simple ${DATA}

Running the model

Train a model:

python -m meshgraphnets.run_model --mode=train --model=cloth \
    --checkpoint_dir=${DATA}/chk --dataset_dir=${DATA}/flag_simple

Generate some trajectory rollouts:

python -m meshgraphnets.run_model --mode=eval --model=cloth \
    --checkpoint_dir=${DATA}/chk --dataset_dir=${DATA}/flag_simple \
    --rollout_path=${DATA}/rollout_flag.pkl

Plot a trajectory:

python -m meshgraphnets.plot_cloth --rollout_path=${DATA}/rollout_flag.pkl

The instructions above train a model for the flag_simple domain; for the cylinder_flow dataset, use --model=cfd and the plot_cfd script.

Datasets

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
flag_dynamic_sizing
sphere_simple
sphere_dynamic
sphere_dynamic_sizing

flag_minimal is a truncated version of flag_simple, and is only used for integration tests. flag_dynamic_sizing and sphere_dynamic_sizing can be used to learn the sizing field. These datasets have the same structure as the other datasets, but contain the meshes in their state before remeshing, and define a matching sizing_field target for each mesh.