|
peclet-dem 0.4.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 unsigned char *, CpMem > | restPersistent |
| Kokkos::View< const float *, CpMem > | restVPeak |
| F3 | restGHat {0, 0, 0} |
| Kokkos::View< const unsigned char *, CpMem > | restGrounded |
| bool | restNewtonOff = false |
| bool | restOneSided = false |
| Kokkos::View< float *, CpMem > | restOrphan |
| Kokkos::View< const float *, CpMem > | restOrphanVPeak |
One full colored PGS sweep.
Per manifold: current approach vtil = s*vn, restitution target -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 985 of file solver_velocity.hpp.
|
inline |
Definition at line 1046 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, posImpulse, quat, peclet::dem::ManifoldC::rA_sum, peclet::dem::ManifoldC::rB_sum, realIdx, restBank, restGHat, restGrounded, peclet::dem::ManifoldC::restitution_sum, restitutionNormal, restitutionTangent, restNewtonOff, restOneSided, restOrphan, restOrphanVPeak, restPersistent, restRel, restVelThreshold, restVPeak, peclet::dem::rotateVector(), peclet::dem::scale3(), sideFlag, 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 986 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::invMass |
Definition at line 987 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float* [3], CpMem> peclet::dem::PGSManifoldSweep::invInertia |
Definition at line 988 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float* [4], CpMem> peclet::dem::PGSManifoldSweep::quat |
Definition at line 989 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float* [3], CpMem> peclet::dem::PGSManifoldSweep::velPred |
Definition at line 990 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float* [3], CpMem> peclet::dem::PGSManifoldSweep::angVelPred |
Definition at line 991 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const int*, CpMem> peclet::dem::PGSManifoldSweep::realIdx |
Definition at line 992 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::growthRate |
Definition at line 993 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::restitutionNormal |
Definition at line 994 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::restVelThreshold |
Definition at line 995 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float, CpMem> peclet::dem::PGSManifoldSweep::maxApproach |
Definition at line 996 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float, CpMem> peclet::dem::PGSManifoldSweep::maxApproachQS |
Definition at line 1000 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float*, CpMem> peclet::dem::PGSManifoldSweep::lambdaAcc |
Definition at line 1001 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::vn0 |
Definition at line 1002 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const unsigned char*, CpMem> peclet::dem::PGSManifoldSweep::sideFlag |
Definition at line 1003 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float* [3], CpMem> peclet::dem::PGSManifoldSweep::lambdaT |
Definition at line 1004 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::frictionDynamic |
Definition at line 1005 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float* [3], CpMem> peclet::dem::PGSManifoldSweep::vt0 |
Definition at line 1006 of file solver_velocity.hpp.
Referenced by solveOne().
| float peclet::dem::PGSManifoldSweep::restitutionTangent |
Definition at line 1007 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::posImpulse |
Definition at line 1008 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float*, CpMem> peclet::dem::PGSManifoldSweep::restBank |
Definition at line 1021 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float*, CpMem> peclet::dem::PGSManifoldSweep::restRel |
Definition at line 1022 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const unsigned char*, CpMem> peclet::dem::PGSManifoldSweep::restPersistent |
Definition at line 1023 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::restVPeak |
Definition at line 1028 of file solver_velocity.hpp.
Referenced by solveOne().
| F3 peclet::dem::PGSManifoldSweep::restGHat {0, 0, 0} |
Definition at line 1034 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const unsigned char*, CpMem> peclet::dem::PGSManifoldSweep::restGrounded |
Definition at line 1035 of file solver_velocity.hpp.
Referenced by solveOne().
| bool peclet::dem::PGSManifoldSweep::restNewtonOff = false |
Definition at line 1037 of file solver_velocity.hpp.
Referenced by solveOne().
| bool peclet::dem::PGSManifoldSweep::restOneSided = false |
Definition at line 1038 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<float*, CpMem> peclet::dem::PGSManifoldSweep::restOrphan |
Definition at line 1043 of file solver_velocity.hpp.
Referenced by solveOne().
| Kokkos::View<const float*, CpMem> peclet::dem::PGSManifoldSweep::restOrphanVPeak |
Definition at line 1044 of file solver_velocity.hpp.
Referenced by solveOne().