← Back to ProjectsSoftware2026 – Present

[ Crush ]

GPU-autonomous physics engine for solid matter lifecycle simulation

GPU-autonomous solid mechanics engine. The CPU dispatches once at init; from that point the GPU owns collision, deformation, fracture, and material evolution with no readback or blocking waits. Three simulation layers couple in a single loop: SDF collision detect, MPM for inter-body momentum transfer (Dynamic Duo coupling, Li et al. SIGGRAPH 2024), and trivariate NURBS isogeometric analysis for intra-body stress. Fracture propagates natively via Boehm knot insertion when the metric tensor degenerates. Each body carries a 64-property material vector (PBM64) that evolves under physical law. Currently at ~16us/iteration. Rust, Vulkan compute via ash 0.38, mm-tonne-s-N-MPa.

The CPU dispatches once at initialization. From that point, the GPU owns the physics:

Three simulation layers couple in a single loop. Signed distance fields detect collisions via trilinear SDF sampling in body-local space. When penetration is detected, penalty forces are generated. MPM (material point method) handles inter-body momentum transfer, friction, and contact using fixed-point i32 atomics for P2G scatter -- the Dynamic Duo coupling from Li et al. (SIGGRAPH 2024), where MPM handles the brutal inter-object physics while FEM handles delicate intra-object deformation. Trivariate NURBS isogeometric analysis resolves intra-body stress fields with C2 continuity, where control points are the FEM nodes directly. The Stable Neo-Hookean constitutive model derives Lame parameters from PBM64's Young's modulus and Poisson's ratio.

Control Loop Architecture flowchart

Fracture is detected when the metric tensor degenerates: det(G)/det(G_rest) collapses toward zero -- mesh singularity. Boehm knot insertion at the fracture parametric location plus control point splitting creates a discontinuity in the NURBS basis, a crack native to the representation with no remeshing. Fragments become new bodies: new MPM entities with their own FEM interiors, new SDFs, new PBM64 slots. Small debris fragments demote to bare MPM particles (no FEM interior, just mass and momentum).

PBM64 -- each body carries a 64-property material vector (256 bytes, GPU-resident). Every physics domain reads what it needs and writes what it computes, in-place, no CPU round-trips. Heating steel past its Curie temperature kills its magnetization. Corroding iron increases porosity and weakens tensile strength until fracture toughness is exceeded. The material evolves under physical law.

Sleep/wake -- bodies with deformation rate below 1% for enough consecutive iterations enter sleep: indirect dispatch counts go to zero, the body costs nothing until another body's SDF contact atomically wakes it (100us latency, no scheduler round-trip). Bodies with near-infinite structural life may never wake again.

Currently at ~16us/iteration with 2 bodies. MPM pipeline, fracture detection/execution, event-driven idle, chemistry/thermal pass, and timeline semaphore async output are not yet implemented.

Technologies

RustVulkanGPU ComputeMPMIsogeometric AnalysisNURBS-FEM