All Projects → WindQAQ → Mpm

WindQAQ / Mpm

Simulating on GPU using Material Point Method and rendering.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Mpm

Gprmax
gprMax is open source software that simulates electromagnetic wave propagation using the Finite-Difference Time-Domain (FDTD) method for numerical modelling of Ground Penetrating Radar (GPR)
Stars: ✭ 268 (+339.34%)
Mutual labels:  cuda, simulation
FLAMEGPU2
FLAME GPU 2 is a GPU accelerated agent based modelling framework for C++ and Python
Stars: ✭ 25 (-59.02%)
Mutual labels:  simulation, cuda
Hoomd Blue
Molecular dynamics and Monte Carlo soft matter simulation on GPUs.
Stars: ✭ 143 (+134.43%)
Mutual labels:  cuda, simulation
Nbody
N body gravity attraction problem solver
Stars: ✭ 40 (-34.43%)
Mutual labels:  cuda, simulation
Cme213 material 2013
CME 213 Class Material
Stars: ✭ 57 (-6.56%)
Mutual labels:  cuda
3d Ken Burns
an implementation of 3D Ken Burns Effect from a Single Image using PyTorch
Stars: ✭ 1,073 (+1659.02%)
Mutual labels:  cuda
Deformable conv2d pytorch
deformable_conv2d layer implemented in pytorch
Stars: ✭ 53 (-13.11%)
Mutual labels:  cuda
Pcraster
Environmental modeling software
Stars: ✭ 52 (-14.75%)
Mutual labels:  simulation
Optix Path Tracer
OptiX Path Tracer
Stars: ✭ 60 (-1.64%)
Mutual labels:  cuda
Kmnsim
Koszek-Matyja Network Simulator. Specify network architecture in a simple configuration file and run network simulations.
Stars: ✭ 59 (-3.28%)
Mutual labels:  simulation
Heteroflow
Concurrent CPU-GPU Programming using Task Models
Stars: ✭ 57 (-6.56%)
Mutual labels:  cuda
Dink
点云深度学习框架 | Point cloud Deep learning Framework
Stars: ✭ 56 (-8.2%)
Mutual labels:  cuda
Dokai
Collection of Docker images for ML/DL and video processing projects
Stars: ✭ 58 (-4.92%)
Mutual labels:  cuda
Gap
Gazebo plugins for applying domain randomization
Stars: ✭ 54 (-11.48%)
Mutual labels:  simulation
Pgdrive
PGDrive: an open-ended driving simulator with infinite scenes from procedural generation
Stars: ✭ 60 (-1.64%)
Mutual labels:  simulation
Pamtri
PAMTRI: Pose-Aware Multi-Task Learning for Vehicle Re-Identification (ICCV 2019) - Official PyTorch Implementation
Stars: ✭ 53 (-13.11%)
Mutual labels:  cuda
Cuda Samples
Samples for CUDA Developers which demonstrates features in CUDA Toolkit
Stars: ✭ 1,087 (+1681.97%)
Mutual labels:  cuda
Flattened Cnn
Flattened convolutional neural networks (1D convolution modules for Torch nn)
Stars: ✭ 59 (-3.28%)
Mutual labels:  cuda
Nvbio Gpl
NVBIO is a library of reusable components designed to accelerate bioinformatics applications using CUDA.
Stars: ✭ 56 (-8.2%)
Mutual labels:  cuda
Mrsl quadrotor
Stars: ✭ 56 (-8.2%)
Mutual labels:  simulation

MPM Simulation & Voxels Rendering

gpgpu free fall

This is the final project for the course, General-Purpose GPU Programming @ NTU CSIE.

We model and simulate fluid-like materials, such as snow and sand, using material point method. MPM is implemented in C++ & CUDA. And OpenGL is used for real-time result viewing. Besides, for high quality rendering, we use NVIDIA GVDB + OptiX Ray Tracing Engine.

Overview

Material point method overview

The material point method (MPM) is a numerical technique used to simulate the behavior of solids, liquids, gases, and any other continuum material. In the MPM, a continuum body is described by a number of small Lagrangian elements referred to as 'material points'. These material points are surrounded by a background mesh/grid that is used only to calculate gradient terms such as the deformation gradient. For more information, please go to Material point method - Wikipedia

Implementations

For more details about implementation, please go to our Project Page

Dependencies

Required

The following libraries has been put into this repository,

Optional

For high quality rendering as screenshots,

To generate videos from saved rendered frames,

How to Build

Source code are put in inc/ and src/. To compile the simulation program, simply type make. Compiled objects would appear in obj/, and there would be the executable file in root directory of the repository.

To compile the rendering program, GVDB-Voxels library and Nvidia OptiX ray tracing engine are needed. So please build gvdb-library at first. Then build the code in directory, gPointCloud/, which is modified from the sample code. For more information, please go to NVIDIA/gvdb-voxels.

How to Run

First of all, run make to generate the executable. Then prepare your own configuration file with format as follows:

model=MODEL

where MODEL is a JSON file formatted as:

{
  "model1": {
    "path": "PATH",
    "translate": [50.0, 0.0, 50.0],
    "scale": 0.5,
    "mass": 0.000026,
    "velocity": [0.0, -10.0, 0.0],
    "hardening": 15.0,
    "young": 1.4e5,
    "poisson": 0.2,
    "compression": 5.0e-2,
    "stretch": 5.0e-2
  }
}

The PATH is the ascii point cloud file where each line contains three values x y z seperated by a single space, and other parameters depend on your model setting. Finally, run

./test --config CONFIG_FILE

to simulate using MPM and render with OpenGL!

Screenshots

Letters falling scene

gpgpu free fall crashed completely

Two snow balls crashed each other

two snow balls crashed each other

References

Papers
Other Implementations

Contact

Issues and pull requests are welcomed, so are stars! ^_^ Feel free to contact project owner Sung Tzu-Wei, or contributors Yist Lin and Chen Li-Yu.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].