peclet-dem
Performance-portable XPBD Discrete Element Method (Kokkos + ArborX)
Loading...
Searching...
No Matches
integration.hpp File Reference

dem — portable (Kokkos) time integration kernels (integration.cu). More...

#include <Kokkos_Core.hpp>
#include "contact_preprocessing.hpp"
#include "dem_portable.hpp"

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).
 

Detailed Description

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.