|
peclet-dem
Performance-portable XPBD Discrete Element Method (Kokkos + ArborX)
|
dem — portable (Kokkos) XPBD position solve (pure overlap removal). More...
Go to the source code of this file.
Namespaces | |
| namespace | peclet |
| namespace | peclet::dem |
| namespace | peclet::dem::detail |
Functions | |
| float | peclet::dem::detail::computeW (F3 r, F3 dir, float invM, F3 invI) |
| F4 | peclet::dem::detail::deltaQuat (F3 dTheta, F4 q) |
| void | peclet::dem::solvePositionKokkos (Kokkos::View< const ContactC *, CpMem > contacts, int numContacts, Kokkos::View< const float *, CpMem > invMass, Kokkos::View< const float *[3], CpMem > posPred, Kokkos::View< const float *[4], CpMem > quatPred, Kokkos::View< const float *[4], CpMem > quatStatic, Kokkos::View< const float *[3], CpMem > invInertia, Kokkos::View< float *[3], CpMem > deltaPos, Kokkos::View< float *[4], CpMem > deltaQuat, Kokkos::View< int *, CpMem > constraintCounts, Kokkos::View< float, CpMem > maxOverlap) |
Accumulate XPBD position corrections for numContacts contacts. | |
dem — portable (Kokkos) XPBD position solve (pure overlap removal).
Kokkos port of solve_position_jacobi_kernel (solver_position.cu): one thread per contact evaluates the linearized non-penetration constraint C(x) (using the delta-rotated lever arms / normal), computes the XPBD position correction, and atomically scatters delta_pos / delta_quat and bumps the per-body constraint count (the caller averages by it). Faithful copy of the CUDA math over the SoA Views. Friction is a separate cluster (ported separately); the position solve does overlap only.
Definition in file solver_position.hpp.