Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds support for the Material Point Method, which is a method for simulating non-rigid materials (elastic materials, granular materials, fluids, etc.) It currently supports:
It supports two types of boundary handling:
Both approach support friction/stick/slip interaction with particles. One-way coupling is supported, meaning that rigid-bodies (handled by the pre-existing rigid-body pipeline) can push particles, but particles cannot push rigid-bodies. So you can have rigid-objects moving around deformable objects, but you cannot have, e.g., a dynamic rigid object floating on water. Full two-ways coupling will be implemented in the future.
Unlike most open-source GPU MPM implementations out there, with Nexus:
The new MPM solver is implemented in new crates
nexus_mpm2d,nexus_mpm3d,nexus_mpm_shaders2d,nexus_mpm_shaders3d. But they should be controlled mainly through the unified multi-physics pipeline in thenexus2dandnexus3dcrates. All the shaders are written in Rust, and compiled to SpirV using rust-gpu.The viewer and examples have been updated. You can try them online there: https://nexus.dimforge.com/demos (scroll down on the demo list to find the MPM demos).
3D Centilever beam
An elastic beam fixed at one end (green rigid block with

Stickboundary condition).3D Water & Sand
Dynamically-added water poured on sand.
3D Sand on heightfield
A column of sand collapsing on a wavy heightfield.
3D Elastic balls
Five balls with different elasticity (more elastic on the left, more rigid on the right).
2D Sand columns
Columns of sand collapsing on their own weight, with various cohesion coefficient (stronger cohesions results in less collapse).
2D Dam break
A block of water flowing under its own weight, with disturbances induced by a cube placed on its path.
2D Hourglass
Sand flowing down an hourglass.