/solid-sim-tutorial-gpu

A curated set of C++ examples for optimization-based elastodynamic contact simulation using CUDA, emphasizing algorithmic convergence, penetration-free, and inversion-free conditions. Designed for readability and understanding, this tutorial helps beginners learn how to write simple GPU code for efficient solid simulations.

Primary LanguageCudaGNU General Public License v3.0GPL-3.0

MUDA-based Solid Simulation Tutorial

This is a tutorial for elastodynamic contact simulation using MUDA (a CUDA programming paradigm).

The basic architecture of the simulators follows @liminchen's Numpy version solid-sim-tutorial.

The tutorial (written by a beginner of simulation) aims at helping beginners learn how to write simple CUDA codes for efficient solid simulations on the GPU. An introductory section for the first example of this tutorial can be found at https://phys-sim-book.github.io/lec4.6-gpu_accel.html.

Usage

  1. Clone the repository
git clone https://github.com/Roushelfy/solid-sim-muda
cd solid-sim-muda
git submodule update --init --recursive
  1. build with cmake
mkdir build
cd build
cmake ..
cmake --build .

Requirements

Eigen3==3.4.0

CMake>=3.29

CUDA>=11.0

Examples

1. Simple Mass-Spring System

Simple Mass-Spring System

2. Dirichlet Boundary Condition

Dirichlet Boundary Condition

3. Contact

Contact

4. Friction

Friction

5. Moving Dirichlet Boundary Condition

Moving Dirichlet Boundary

6. Neohookean Solids

Neohookean Model

7. Neohookean Solids with Self-Contact

Neohookean Model with Self Collision

8. Neohookean Solids with Frictional Self-Contact

Neohookean Model with Self  Friction