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

dem — portable (Kokkos) manifold velocity solve (normal restitution impulse). More...

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

Go to the source code of this file.

Namespaces

namespace  peclet
 
namespace  peclet::dem
 
namespace  peclet::dem::detail
 

Functions

F3 peclet::dem::detail::ld3 (Kokkos::View< const float *[3], CpMem > v, int i)
 
float peclet::dem::detail::genInvMass (F3 tau, F3 invIlocal, F4 q)
 
void peclet::dem::solveVelocityKokkos (Kokkos::View< const ManifoldC *, CpMem > manifolds, int numManifolds, Kokkos::View< const float *, CpMem > invMass, Kokkos::View< const float *[3], CpMem > invInertia, Kokkos::View< const float *[4], CpMem > quat, Kokkos::View< const float *[3], CpMem > velPred, Kokkos::View< const float *[3], CpMem > angVelPred, Kokkos::View< const int *, CpMem > realIdx, float growthRate, float restitutionNormal, Kokkos::View< float *[3], CpMem > deltaVel, Kokkos::View< float *[3], CpMem > deltaAngVel)
 Accumulate normal-restitution velocity deltas for numManifolds manifolds.
 

Detailed Description

dem — portable (Kokkos) manifold velocity solve (normal restitution impulse).

Kokkos port of solve_velocity_jacobi_kernel (solver_velocity.cu): one thread per manifold computes the aggregate normal impulse (with growth-velocity term and restitution) and atomically scatters the linear/angular velocity deltas onto the two bodies' REAL indices. Faithful copy of the CUDA math; runs on the particle SoA expressed as Kokkos Views. Friction is a separate per-contact pass (solver_position) and is not done here, matching the original.

Definition in file solver_velocity.hpp.