|
| enum class | ParticleManagement::KDPartition { ParticleManagement::Weight
, ParticleManagement::Count
, ParticleManagement::Hybrid
, ParticleManagement::WeightCapped
} |
| | How a kd merge divides a node into two children. More...
|
| |
| enum class | ParticleManagement::KDSplitPlacement { ParticleManagement::Center
, ParticleManagement::Jitter
, ParticleManagement::Cell
} |
| | Where the pieces of a split particle go. More...
|
| |
| enum class | ParticleManagement::KDPlacement { ParticleManagement::Centroid
, ParticleManagement::Sample
, ParticleManagement::Random
} |
| | Where a kd merge puts the particle a leaf reduces to. More...
|
| |
| enum class | ParticleManagement::KDAmrBoundary { ParticleManagement::Carve
, ParticleManagement::Nn
} |
| | How the AMR-scope kd merge resolves the leaves that touch a patch or rank boundary. More...
|
| |
| enum class | ParticleManagement::NNSearch { ParticleManagement::Tree
, ParticleManagement::Hash
, ParticleManagement::OneCell
} |
| | How the AMR-scope nearest-neighbour merge finds a particle's merge candidates. More...
|
| |
| enum class | ParticleManagement::ParticleMergeMethod {
ParticleManagement::None
, ParticleManagement::KdCell
, ParticleManagement::KdPatch
, ParticleManagement::KdAmr
,
ParticleManagement::NnAmr
, ParticleManagement::Reinitialize
, ParticleManagement::External
} |
| | The super-particle merge methods, named by the scope they group particles over. More...
|
| |
|
| ParticleMergeMethod | ParticleManagement::mergeMethodFromString (const std::string &a_str) noexcept |
| | Map a merge-method selector string to a ParticleMergeMethod.
|
| |
| KDPartition | ParticleManagement::kdPartitionFromString (const std::string &a_str) noexcept |
| | Turn an input string into a kd partition rule.
|
| |
| KDPlacement | ParticleManagement::kdPlacementFromString (const std::string &a_str) noexcept |
| | Turn an input string into a kd placement rule.
|
| |
| KDSplitPlacement | ParticleManagement::kdSplitPlacementFromString (const std::string &a_str) noexcept |
| | Turn an input string into a split placement rule.
|
| |
| KDAmrBoundary | ParticleManagement::kdAmrBoundaryFromString (const std::string &a_str) noexcept |
| | Turn an input string into a kd AMR boundary rule.
|
| |
| NNSearch | ParticleManagement::nnSearchFromString (const std::string &a_str) noexcept |
| | Turn an input string into a nearest-neighbour search backend.
|
| |
| template<class P , Real P::* weight, RealVect P::* position> |
| void | ParticleManagement::detail::buildKDCellLeaves (const std::vector< P > &a_particles, const int a_maxLeaves, const Real a_weightMedianLength, const bool a_capWeights, const std::function< RealVect(const RealVect &)> &a_splitPosition, const BinaryParticleReconcile< P > &a_particleReconcile, std::vector< std::pair< const P *, const P * > > &a_leaves) noexcept |
| | Build a KD partition of a list of particles and return the leaf particle ranges.
|
| |
| template<class Packed , Real Packed::* packWeight, RealVect Packed::* packPosition, class P , class Traits = ParticleTraits<P>> |
| ParticleMerger< P, Traits > | ParticleManagement::makeKDCellMerger (const Real a_weightMedianCellWidths, const bool a_capWeights, const KDSplitPlacement a_splitPlacement, std::function< RealVect()> a_probLo, std::function< Packed(const ParticleSoA< P, Traits > &, std::size_t)> a_gather, BinaryParticleReconcile< Packed > a_reconcile, std::function< void(ParticleSoA< P, Traits > &, const Packed *, const Packed *, const CellInfo &)> a_scatterLeaf) noexcept |
| | Create a per-cell KD-tree super-particle merger as a reusable ParticleMerger.
|
| |
| template<class Context , class P , class Traits = ParticleTraits<P>> |
| ParticleMerger< P, Traits > | ParticleManagement::makeReinitializeMerger (std::function< std::pair< long long, Context >(const ParticleSoA< P, Traits > &)> a_aggregate, std::function< void(ParticleSoA< P, Traits > &, const RealVect &, long long, const Context &)> a_emit, std::function< RealVect()> a_probLo) noexcept |
| | Create a reinitialize super-particle merger as a reusable ParticleMerger.
|
| |
Namespace containing various particle management utilities.
- Author
- Robert Marskar