|
peclet-dem 1.1.0
Performance-portable XPBD Discrete Element Method (Kokkos + ArborX)
|
One full colored PGS sweep. More...
#include <solver_velocity.hpp>
Public Member Functions | |
| void | solveOne (int idx) const |
Public Attributes | |
| Kokkos::View< const ManifoldC *, CpMem > | manifolds |
| Kokkos::View< const float *, CpMem > | invMass |
| Kokkos::View< const float *[3], CpMem > | invInertia |
| Kokkos::View< const float *[4], CpMem > | quat |
| Kokkos::View< float *[3], CpMem > | velPred |
| Kokkos::View< float *[3], CpMem > | angVelPred |
| Kokkos::View< const int *, CpMem > | realIdx |
| float | growthRate |
| float | restitutionNormal |
| float | restVelThreshold |
| Kokkos::View< float, CpMem > | maxApproach |
| Kokkos::View< float, CpMem > | maxApproachQS |
| Kokkos::View< float *, CpMem > | lambdaAcc |
| Kokkos::View< const float *, CpMem > | vn0 |
| Kokkos::View< const unsigned char *, CpMem > | sideFlag |
| Kokkos::View< float *[3], CpMem > | lambdaT |
| float | frictionDynamic |
| Kokkos::View< const float *[3], CpMem > | vt0 |
| float | restitutionTangent |
| Kokkos::View< const float *, CpMem > | posImpulse |
| Kokkos::View< float *, CpMem > | restBank |
| Kokkos::View< float *, CpMem > | restRel |
| Kokkos::View< const float *, CpMem > | restVPeak |
| Kokkos::View< float *, CpMem > | restOrphan |
| Kokkos::View< const float *, CpMem > | restOrphanVPeak |
| SlotOverride | ov {} |
One full colored PGS sweep.
Per manifold: current approach vtil = s*vn, restitution target -e*vtil0 on every closed contact (Moreau; Poisson mode: Newton's -e*max(vtil0,0)) (e via the resting threshold on vn0), incremental impulse dp = (vtil-target)/w, accumulator projection p := max(0, p+dp), apply the applied difference in place. maxApproach records the largest applied velocity correction (physical units) for the adaptive stop.
The per-manifold solve body lives in PGSManifoldSweep so the colored sweep and the level-ordered ("multilevel") bucket sweep share it verbatim: solveOne(idx) must only run concurrently on manifolds that are body-disjoint within one launch (a colour class, or a (level, colour) bucket – a subset of a colour class).
Definition at line 1070 of file solver_velocity.hpp.
|
inline |
Definition at line 1122 of file solver_velocity.hpp.
References peclet::dem::add3(), angVelPred, peclet::dem::ManifoldC::bodyA, peclet::dem::ManifoldC::bodyB, peclet::dem::cross3v(), peclet::dem::dot3(), peclet::dem::ManifoldC::friction_sum, frictionDynamic, peclet::dem::detail::genInvMass(), growthRate, invInertia, invMass, peclet::dem::invRotateVector(), lambdaAcc, lambdaT, peclet::dem::detail::ld3(), manifolds, maxApproach, maxApproachQS, peclet::dem::ManifoldC::normal_sum, peclet::dem::ManifoldC::num_points, peclet::dem::SlotOverride::omega, ov, posImpulse, quat, peclet::dem::ManifoldC::rA_sum, peclet::dem::ManifoldC::rB_sum, realIdx, peclet::dem::SlotOverride::relax(), restBank, peclet::dem::ManifoldC::restitution_sum, restitutionNormal, restitutionTangent, restOrphan, restOrphanVPeak, restRel, restVelThreshold, restVPeak, peclet::dem::rotateVector(), peclet::dem::scale3(), sideFlag, peclet::dem::SlotOverride::slotA(), peclet::dem::SlotOverride::slotB(), peclet::dem::sub3(), peclet::dem::ManifoldC::torque_armA_sum, peclet::dem::ManifoldC::torque_armB_sum, velPred, vn0, vt0, peclet::dem::ManifoldC::wallVel_sum, peclet::dem::F3::x, peclet::dem::F4::x, peclet::dem::F3::y, peclet::dem::F4::y, peclet::dem::F3::z, and peclet::dem::F4::z.
Referenced by peclet::dem::solveVelocityPGSBucketsKokkos().
Definition at line 1071 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::invMass |
Definition at line 1072 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float* [3], CpMem> peclet::dem::PGSManifoldSweep::invInertia |
Definition at line 1073 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float* [4], CpMem> peclet::dem::PGSManifoldSweep::quat |
Definition at line 1074 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float* [3], CpMem> peclet::dem::PGSManifoldSweep::velPred |
Definition at line 1075 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float* [3], CpMem> peclet::dem::PGSManifoldSweep::angVelPred |
Definition at line 1076 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const int*, CpMem> peclet::dem::PGSManifoldSweep::realIdx |
Definition at line 1077 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::growthRate |
Definition at line 1078 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::restitutionNormal |
Definition at line 1079 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::restVelThreshold |
Definition at line 1080 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float, CpMem> peclet::dem::PGSManifoldSweep::maxApproach |
Definition at line 1081 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float, CpMem> peclet::dem::PGSManifoldSweep::maxApproachQS |
Definition at line 1085 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float*, CpMem> peclet::dem::PGSManifoldSweep::lambdaAcc |
Definition at line 1086 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::vn0 |
Definition at line 1087 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const unsigned char*, CpMem> peclet::dem::PGSManifoldSweep::sideFlag |
Definition at line 1088 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float* [3], CpMem> peclet::dem::PGSManifoldSweep::lambdaT |
Definition at line 1089 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::frictionDynamic |
Definition at line 1090 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float* [3], CpMem> peclet::dem::PGSManifoldSweep::vt0 |
Definition at line 1091 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::restitutionTangent |
Definition at line 1092 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::posImpulse |
Definition at line 1093 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float*, CpMem> peclet::dem::PGSManifoldSweep::restBank |
Definition at line 1105 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float*, CpMem> peclet::dem::PGSManifoldSweep::restRel |
Definition at line 1106 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::restVPeak |
Definition at line 1111 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float*, CpMem> peclet::dem::PGSManifoldSweep::restOrphan |
Definition at line 1116 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::restOrphanVPeak |
Definition at line 1117 of file solver_velocity.hpp.
Referenced by solveOne().
| SlotOverride peclet::dem::PGSManifoldSweep::ov {} |
Definition at line 1120 of file solver_velocity.hpp.
Referenced by solveOne().