|
peclet-dem 0.4.0
Performance-portable XPBD Discrete Element Method (Kokkos + ArborX)
|
Functions | |
| float | effMass (float invMass) |
| Effective mass with fixed bodies (invMass == 0) mapped to a huge-but-finite mass so the momentum-weighted restriction stays finite and the group's inverse mass underflows to ~0. | |
| bool | eligible (const ManifoldC &m, int idx, Kokkos::View< const int *, CpMem > mColor, Kokkos::View< const float *, CpMem > vn0, Kokkos::View< const float *[3], CpMem > vt0, Kokkos::View< const unsigned char *, CpMem > persistent, Kokkos::View< const float *[3], CpMem > posPred, F3 gHat, float qsThr, int gateMask) |
| Coarse-eligibility of a manifold: active + base-coloured (non-dup) + quasi-static approach (|vn0| <= qsThr: a ballistic pair is never aggregated, so an impactor keeps its fine-level momentum-conserving physics), plus the gates selected in gateMask. | |
Variables | |
| constexpr int | kGatePersistent = 1 |
| Optional eligibility gates beyond the quasi-static approach test (a SELECTION, not a sink – impulses stay symmetric; gating only decides which contacts join the coarse problem): kGatePersistent – contact must have existed last substep (a fresh contact is an event). | |
| constexpr int | kGateCone = 2 |
| constexpr int | kGateSlip = 4 |
| float peclet::dem::mldetail::effMass | ( | float | invMass | ) |
Effective mass with fixed bodies (invMass == 0) mapped to a huge-but-finite mass so the momentum-weighted restriction stays finite and the group's inverse mass underflows to ~0.
Definition at line 70 of file solver_multilevel.hpp.
| bool peclet::dem::mldetail::eligible | ( | const ManifoldC & | m, |
| int | idx, | ||
| Kokkos::View< const int *, CpMem > | mColor, | ||
| Kokkos::View< const float *, CpMem > | vn0, | ||
| Kokkos::View< const float *[3], CpMem > | vt0, | ||
| Kokkos::View< const unsigned char *, CpMem > | persistent, | ||
| Kokkos::View< const float *[3], CpMem > | posPred, | ||
| F3 | gHat, | ||
| float | qsThr, | ||
| int | gateMask | ||
| ) |
Coarse-eligibility of a manifold: active + base-coloured (non-dup) + quasi-static approach (|vn0| <= qsThr: a ballistic pair is never aggregated, so an impactor keeps its fine-level momentum-conserving physics), plus the gates selected in gateMask.
Definition at line 90 of file solver_multilevel.hpp.
References peclet::dem::ManifoldC::bodyA, peclet::dem::ManifoldC::bodyB, peclet::dem::dot3(), kGateCone, kGatePersistent, kGateSlip, peclet::dem::ldF3(), peclet::dem::ManifoldC::num_points, peclet::dem::sub3(), peclet::dem::F3::x, peclet::dem::F3::y, and peclet::dem::F3::z.
|
inlineconstexpr |
Optional eligibility gates beyond the quasi-static approach test (a SELECTION, not a sink – impulses stay symmetric; gating only decides which contacts join the coarse problem): kGatePersistent – contact must have existed last substep (a fresh contact is an event).
kGateCone – support-oriented only (|up| > 0.3|dx|, computeSideFlagsKokkos's cone). kGateSlip – exclude sustained shear (|vt0| > qsThr): a discharging silo's bulk is normal-quasi-static in every direction, and cancelling aggregate-relative approach there acts as fake bulk viscosity (measured: large-orifice discharge 16.7 k/s vs 24.5 reference ungated) – but it SLIPS, while a crushing bed does not.
Definition at line 83 of file solver_multilevel.hpp.
Referenced by eligible().
|
inlineconstexpr |
Definition at line 84 of file solver_multilevel.hpp.
Referenced by eligible().
|
inlineconstexpr |
Definition at line 85 of file solver_multilevel.hpp.
Referenced by peclet::dem::demSolveContacts(), and eligible().