sparkl
sparkl copied to clipboard
MPM physics simulation in Rust
This is a possibility for passing through the `ParticleData` which contains the `log_vol_gain`. Something like this may be needed if we decide to control the correction more locally.
This adds functions to compute the elastic energy density function from a given deformation gradient. The new code is different from the existing one. See `pos_energy`: https://github.com/dimforge/sparkl/blob/43c13a65fef40b7872ec638c866c4b42926f3354/src/dynamics/models/elasticity_corotated_linear.rs#L35-L37 We may want...
This PR implements the CPIC algorithm of the "Moving Least Squares Material Point Method" paper. Its purpose is to couple the GPU particle simulation (sparkl) with the CPU rigid body...
Before this change, ground friction was only applied on grid cells below the ground. Now, just like grid cells below the ground induce a friction impulse proportional to the normal...
I got cuda-related error. ```text error: failed to run custom build command for `cust_raw v0.11.3` Caused by: process didn't exit successfully: `/pro/rust/lib/sparkl/target/debug/build/cust_raw-0be2776e22288af7/build-script-build` (exit status: 101) --- stderr thread 'main' panicked...
- Builds on top of https://github.com/dimforge/sparkl/pull/24 - :warning: This needs a release of bevy rapier testbeds targeting 0.14 (https://github.com/dimforge/rapier/pull/723) - :warning: nalgebra dropped support for cuda, so this PR is...
The main objective is to update to bevy 0.14. I did try to make the full jump, but 99+ errors were overwhelming, so I'm splitting the work for each bevy...
Builds on top of https://github.com/dimforge/sparkl/pull/23 to update to bevy 0.13. The update went quite smoothly ; I didn´t make a full audit of the code to use newest API. :warning:...
Currently, `SingleGpuMpmContext::module` is a `&mut Module`. I believe it could be a `&Module` instead.
src_kernels/gpu_collider.rs ```rust pub struct GpuColliderSet { pub ptr: *const GpuCollider, pub len: usize, } impl GpuColliderSet { pub fn get(&self, i: usize) -> Option { if i >= self.len {...