CompareParticle Struct Reference

SPADES API: spades::particles::CompareParticle Struct Reference
SPADES API
spades::particles::CompareParticle Struct Reference

Functor for comparing particles. More...

#include <ParticleOps.H>

Public Member Functions

template<class PArrs >
AMREX_GPU_DEVICE AMREX_FORCE_INLINE bool operator() (const amrex::Long p1, const amrex::Long p2, PArrs &parrs) const
 Compare particles.
 

Detailed Description

Functor for comparing particles.

This is used to sort particles based on cell index, entity type, and timestamp (in that order).

Member Function Documentation

◆ operator()()

template<class PArrs >
AMREX_GPU_DEVICE AMREX_FORCE_INLINE bool spades::particles::CompareParticle::operator() ( const amrex::Long p1,
const amrex::Long p2,
PArrs & parrs ) const
inline

Compare particles.

Parameters
p1[in] first particle
p2[in] second particle
parrs[in] particle arrays
Returns
boolean of p1 < p2 based on criteria
236 {
237 // sort by iv, then particle type then by timestamp
238 const amrex::IntVect piv1(AMREX_D_DECL(
239 parrs.m_idata[CommonIntData::i][p1],
240 parrs.m_idata[CommonIntData::j][p1],
241 parrs.m_idata[CommonIntData::k][p1]));
242 const amrex::IntVect piv2(AMREX_D_DECL(
243 parrs.m_idata[CommonIntData::i][p2],
244 parrs.m_idata[CommonIntData::j][p2],
245 parrs.m_idata[CommonIntData::k][p2]));
246
247 const auto m1 = parrs.m_idata[CommonIntData::type_id][p1];
248 const auto m2 = parrs.m_idata[CommonIntData::type_id][p2];
249 const auto t1 = parrs.m_rdata[CommonRealData::timestamp][p1];
250 const auto t2 = parrs.m_rdata[CommonRealData::timestamp][p2];
251 return (piv1 < piv2) ||
252 (piv1 == piv2 && ((m1 < m2) || (m1 == m2 && t1 < t2)));
253 }
@ type_id
Definition ParticleData.H:18
@ timestamp
Definition ParticleData.H:12

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