GithubHelp home page GithubHelp logo

tomerwei / hot Goto Github PK

View Code? Open in Web Editor NEW

This project forked from penn-graphics-research/hot

0.0 1.0 0.0 206.71 MB

Hierarchical Optimization Time Integration (HOT) for efficient implicit timestepping of the material point method (MPM)

License: MIT License

CMake 4.57% C++ 94.47% C 0.05% Makefile 0.36% Shell 0.35% Perl 0.02% Python 0.18%

hot's Introduction

Hierarchical Optimization Time Integration (HOT)

Description

This is the opensource code for the ACM Transaction On Graphics (TOG) 2020 paper:

Hierarchical Optimization Time Integration for CFL-Rate MPM Stepping (https://dl.acm.org/doi/10.1145/3386760)

PDF, Supplemental Document, Youtube

Authors: Xinlei Wang*, Minchen Li*, Yu Fang, Xinxin Zhang, Ming Gao, Min Tang, Danny M. Kaufman, Chenfanfu Jiang (* Equal contributions)

We propose Hierarchical Optimization Time Integration (HOT) for efficient implicit timestepping of the material point method (MPM) irrespective of simulated materials and conditions. HOT is an MPM-specialized hierarchical optimization algorithm that solves nonlinear timestep problems for large-scale MPM systems near the CFL limit. HOT provides convergent simulations out of the box across widely varying materials and computational resolutions without parameter tuning. As an implicit MPM timestepper accelerated by a custom-designed Galerkin multigrid wrapped in a quasi-Newton solver, HOT is both highly parallelizable and robustly convergent. As we show in our analysis, HOT maintains consistent and efficient performance even as we grow stiffness, increase deformation, and vary materials over a wide range of finite strain, elastodynamic, and plastic examples. Through careful benchmark ablation studies, we compare the effectiveness of HOT against seemingly plausible alternative combinations of MPM with standard multigrid and other Newton-Krylov models. We show how these alternative designs result in severe issues and poor performance. In contrast, HOT outperforms existing state-of-the-art, heavily optimized implicit MPM codes with an up to 10ร— performance speedup across a wide range of challenging benchmark test simulations.

Compilation

The following instruction is tested on Ubuntu 18.04 LTS with g++7.4, on Ubuntu 19.10 with g++7.4, g++8.4, clang-9.

Dependencies

Run the command to install all dependencies:

sudo apt-get install make cmake g++ libeigen3-dev gfortran libmetis-dev 
sudo apt-get install libopenvdb-dev libboost-all-dev libilmbase-dev libopenexr-dev 
sudo apt-get install libtbb2 libtbb-dev libz-dev clang-format-6.0 clang-format libarpack2-dev
pip install --upgrade cmake

Build

Run the following command in the root directory.

make Release

Or use the cmake toolchain.

mkdir build && cd build && cmake .. && make -j4

Benchmarks

Data

Extract all models at Data/LevelSets in place.

Run Demos

Go to the project directory (Projects/multigrid/), check all default settings included in Configurations.h file.

To test different setups, run commands with specific options. For example:

./multigrid -test 777011 --3d --usecn -cneps 1e-7 -lsolver 3 -Ainv 1 --project --linesearch --bcproject -mg_level 3 -mg_times 1 -coarseSolver 2 -smoother 5 --l2norm -o faceless_lbfgs

Here are some of the command options:

  • usecn: whether to use characteristic norm
  • cneps: epsilon of characteristic norm
  • lsolver: numerical method
  • coarseSolver: top level solver in multigrid
  • smoother: non-top level smoother in multigrid
  • ...

Please see bash script tog.sh and README for more details.

Bibtex

Please cite our paper if you use this code for your research:

@article{Wang2020HOT,
author = {Wang, Xinlei and Li, Minchen and Fang, Yu and Zhang, Xinxin and Gao, Ming and Tang, Min and Kaufman, Danny M. and Jiang, Chenfanfu},
title = {Hierarchical Optimization Time Integration for CFL-Rate MPM Stepping},
year = {2020},
volume = {39},
number = {3},
journal = {ACM Trans. Graph.},
articleno = {Article 21},
numpages = {16}
}

hot's People

Contributors

littlemine avatar liminchen avatar

Watchers

James Cloos 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.