|
peclet-dem 1.1.0
Performance-portable XPBD Discrete Element Method (Kokkos + ArborX)
|
The per-contact overlap-projection body lives in PositionContactSweep so the colored launch loop and the fused colour sweep (solver_fused.hpp) share it verbatim: solveOne(idx) must only run concurrently on contacts that are body-disjoint within one launch (a colour class). More...
#include <solver_position.hpp>
Public Member Functions | |
| void | solveOne (int u) const |
| One work item: every contact of position unit u, sequentially in ascending contact index (a pair's points are a serial Gauss-Seidel sweep inside one item; §4.3). | |
| void | solveContact (int idx, int u) const |
Public Attributes | |
| Kokkos::View< const ContactC *, CpMem > | contacts |
| Kokkos::View< const float *, CpMem > | invMass |
| Kokkos::View< 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, CpMem > | maxOverlap |
| Kokkos::View< float *, CpMem > | posLambdaAcc |
| PosUnits | units |
| SlotOverride | ov {} |
| Kokkos::View< float, CpMem > | posResidual {} |
| float | omega = 1.0f |
The per-contact overlap-projection body lives in PositionContactSweep so the colored launch loop and the fused colour sweep (solver_fused.hpp) share it verbatim: solveOne(idx) must only run concurrently on contacts that are body-disjoint within one launch (a colour class).
Definition at line 504 of file solver_position.hpp.
|
inline |
One work item: every contact of position unit u, sequentially in ascending contact index (a pair's points are a serial Gauss-Seidel sweep inside one item; §4.3).
A one-point unit is today's per-contact arithmetic on today's contact.
Definition at line 531 of file solver_position.hpp.
References peclet::dem::PosUnits::begin(), peclet::dem::PosUnits::contact(), peclet::dem::PosUnits::end(), solveContact(), and units.
|
inline |
Definition at line 536 of file solver_position.hpp.
References peclet::dem::SlotOverride::a, peclet::dem::add3(), peclet::dem::ContactC::bodyA, peclet::dem::ContactC::bodyB, contacts, peclet::dem::dot3(), invMass, peclet::dem::ldF3(), peclet::dem::ldF4(), peclet::dem::PosUnits::leader(), maxOverlap, peclet::dem::ContactC::normal, peclet::dem::normalOfA(), omega, ov, posLambdaAcc, posPred, posResidual, peclet::dem::quatInverse(), peclet::dem::quatMult(), quatPred, quatStatic, peclet::dem::ContactC::rA, peclet::dem::ContactC::rB, peclet::dem::rotateVector(), peclet::dem::SlotOverride::slotA(), peclet::dem::SlotOverride::slotB(), peclet::dem::sub3(), units, peclet::dem::F4::x, peclet::dem::F4::y, and peclet::dem::F4::z.
Referenced by solveOne().
Definition at line 505 of file solver_position.hpp.
Referenced by solveContact().
| Kokkos::View<const float*, CpMem> peclet::dem::PositionContactSweep::invMass |
Definition at line 506 of file solver_position.hpp.
Referenced by solveContact().
| Kokkos::View<float* [3], CpMem> peclet::dem::PositionContactSweep::posPred |
Definition at line 507 of file solver_position.hpp.
Referenced by solveContact().
| Kokkos::View<const float* [4], CpMem> peclet::dem::PositionContactSweep::quatPred |
Definition at line 508 of file solver_position.hpp.
Referenced by solveContact().
| Kokkos::View<const float* [4], CpMem> peclet::dem::PositionContactSweep::quatStatic |
Definition at line 509 of file solver_position.hpp.
Referenced by solveContact().
| Kokkos::View<const float* [3], CpMem> peclet::dem::PositionContactSweep::invInertia |
Definition at line 510 of file solver_position.hpp.
| Kokkos::View<float, CpMem> peclet::dem::PositionContactSweep::maxOverlap |
Definition at line 511 of file solver_position.hpp.
Referenced by solveContact().
| Kokkos::View<float*, CpMem> peclet::dem::PositionContactSweep::posLambdaAcc |
Definition at line 512 of file solver_position.hpp.
Referenced by solveContact().
| PosUnits peclet::dem::PositionContactSweep::units |
Definition at line 514 of file solver_position.hpp.
Referenced by solveContact(), and solveOne().
| SlotOverride peclet::dem::PositionContactSweep::ov {} |
Definition at line 517 of file solver_position.hpp.
Referenced by solveContact().
| Kokkos::View<float, CpMem> peclet::dem::PositionContactSweep::posResidual {} |
Definition at line 525 of file solver_position.hpp.
Referenced by solveContact().
| float peclet::dem::PositionContactSweep::omega = 1.0f |
Definition at line 526 of file solver_position.hpp.
Referenced by solveContact().