peclet-dem 0.4.0
Performance-portable XPBD Discrete Element Method (Kokkos + ArborX)
Loading...
Searching...
No Matches
peclet::dem::mldetail Namespace Reference

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
 

Function Documentation

◆ effMass()

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.

◆ eligible()

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.

Variable Documentation

◆ kGatePersistent

constexpr int peclet::dem::mldetail::kGatePersistent = 1
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().

◆ kGateCone

constexpr int peclet::dem::mldetail::kGateCone = 2
inlineconstexpr

Definition at line 84 of file solver_multilevel.hpp.

Referenced by eligible().

◆ kGateSlip

constexpr int peclet::dem::mldetail::kGateSlip = 4
inlineconstexpr

Definition at line 85 of file solver_multilevel.hpp.

Referenced by peclet::dem::demSolveContacts(), and eligible().