|
peclet-dem
Performance-portable XPBD Discrete Element Method (Kokkos + ArborX)
|
dem — portable (Kokkos) time integration kernels (integration.cu). More...
Go to the source code of this file.
Classes | |
| struct | peclet::dem::Domain |
| struct | peclet::dem::KE2 |
| Berendsen thermostat: reduce translational + rotational KE over real particles, compute the two scaling factors, and rescale linear/angular velocities. More... | |
Namespaces | |
| namespace | peclet |
| namespace | peclet::dem |
| namespace | peclet::dem::detail |
Typedefs | |
| using | peclet::dem::V3 = Kokkos::View< float *[3], CpMem > |
| using | peclet::dem::V4 = Kokkos::View< float *[4], CpMem > |
| using | peclet::dem::Vf = Kokkos::View< float *, CpMem > |
| using | peclet::dem::Vi = Kokkos::View< int *, CpMem > |
Functions | |
| void | peclet::dem::detail::st3 (const V3 &v, int i, F3 a) |
| void | peclet::dem::detail::st4 (const V4 &v, int i, F4 a) |
| void | peclet::dem::predictVelocityKokkos (int n, V3 pos, Vf invMass, V3 vel, V4 quat, V3 angVel, V3 invInertia, V3 posPred, V4 quatPred, V3 velPred, V3 angVelPred, V3 deltaPos, V4 deltaQuat, V3 deltaVel, V3 deltaAngVel, Vi constraintCounts, F3 gravity, float dt, V3 extForce) |
| Predict velocity (gravity + gyroscopic precession), speculative position, and clear all deltas. | |
| void | peclet::dem::applyVelocityDeltasKokkos (int n, V3 velPred, V3 angVelPred, V3 deltaVel, V3 deltaAngVel) |
| Add accumulated velocity/angular deltas onto the predicted velocity, then clear the delta buffers. | |
| void | peclet::dem::applyVelocityAndPredictPositionKokkos (int n, V3 pos, Vf invMass, V3 vel, V4 quat, V3 velPred, V3 angVelPred, V3 posPred, V4 quatPred, V3 angVel, float dt) |
| Re-integration: persist solved velocity, trapezoidal position predict, quaternion integrate. | |
| void | peclet::dem::computeContactCountsKokkos (Kokkos::View< const ContactC *, CpMem > contacts, int numContacts, Vi constraintCounts) |
| Per-contact constraint-count pre-pass (active contacts, dist <= 0). | |
| void | peclet::dem::applyUpdatesKokkos (int n, V3 posPred, V3 velPred, V3 deltaPos, V3 deltaVel, Vi constraintCounts) |
| Jacobi count-averaged apply of position/velocity deltas, then clear deltas + counts. | |
| void | peclet::dem::finalCommitKokkos (int n, V3 pos, Vf invMass, V3 posPred, V4 quat, V4 quatPred, Domain dom) |
| Final commit: periodic wrap of the predicted position into the domain, commit position + quat. | |
| void | peclet::dem::applyThermostatKokkos (int numReal, V3 vel, Vf invMass, V3 angVel, V3 invInertia, V4 quat, double kB, double tau, double Ttarget, float dt) |
| void | peclet::dem::updateGrowthScalesKokkos (int n, Vf scale, Vf targetScale, float factor) |
| Growth mode: scale = target * factor (when active). | |
dem — portable (Kokkos) time integration kernels (integration.cu).
The per-particle element-wise steps of the XPBD step over the particle SoA Views: velocity predict (gravity + gyroscopic Euler term), re-integration (apply velocity deltas, trapezoidal position predict, quaternion integrate+normalize), iterative delta apply, Jacobi count-averaged update, final commit with periodic wrap, contact-count pre-pass, and growth-scale update. Faithful copies of the CUDA kernels. Ghost generation and the thermostat are separate units.
Definition in file integration.hpp.