chombo-discharge
Loading...
Searching...
No Matches
Public Attributes | List of all members
ParticleManagement::detail::NNMergeEdge< Packed > Struct Template Reference

One candidate merge edge: a single particle's own nearest-neighbor query result. More...

#include <CD_NearestNeighborParticleMerge.H>

Public Attributes

Real distanceSquared
 Squared distance between the query particle and its candidate.
 
ParticleID queryID
 Global id of the query particle (always locally valid/owned – ghosts never initiate a query).
 
ParticleID candidateID
 Global id of the candidate (query's nearest neighbor). May be a local valid particle (same patch) or a ghost.
 
bool candidateIsLocal
 True iff the candidate is a locally-valid particle in the SAME patch as the query (i.e. not a ghost). Note this is NOT sufficient on its own to decide trivial-tier eligibility – see Realm::m_particleGhostExposure: a same-patch candidate can still require the propose/judge/verdict protocol if either participant is boundary-exposed.
 
std::vector< NNFallbackCandidatefallbackCandidates
 Next-nearest candidates beyond candidateID, in ascending distanceSquared order.
 

Detailed Description

template<typename Packed>
struct ParticleManagement::detail::NNMergeEdge< Packed >

One candidate merge edge: a single particle's own nearest-neighbor query result.

Produced once per over-threshold, unconsumed valid particle by findNearestNeighborCandidates() – exactly one edge per query particle, its single nearest neighbor among {this patch's own other valid particles} union {every ghost}. Distance is carried explicitly (never recomputed downstream) so trivial-tier resolution and the judge apply the same "closest-first, with a deterministic id tiebreak on exact ties" ordering.

Template Parameters
PackedSee MergeParticle.

Member Data Documentation

◆ fallbackCandidates

template<typename Packed >
std::vector<NNFallbackCandidate> ParticleManagement::detail::NNMergeEdge< Packed >::fallbackCandidates

Next-nearest candidates beyond candidateID, in ascending distanceSquared order.

Empty unless a_maxFallbackCandidates > 0 was passed to findNearestNeighborCandidates(); size at most a_maxFallbackCandidates. resolveTrivialTier() tries these in order when candidateID is blocked (stale, busy, exposed, a ghost, or too far), without re-querying the spatial index. Content is a generation-time snapshot; a candidate's validity is rechecked against a_consumedIDs/a_hasOutgoingCommitment when it is actually tried.


The documentation for this struct was generated from the following file: