Peano
Loading...
Searching...
No Matches
Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend > Struct Template Reference

#include <spacetree.h>

Inheritance diagram for Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >:
Collaboration diagram for Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >:

Public Types

using Base = LinkedGrid<_Geometry, SPLIT_FACTOR, Spacetree>
using Geo = _Geometry
using Item = _Item
using TaskBackend = _TaskBackend
using IterOrder = IterationOrderSelector<Spacetree>::type
using LeafsIterator = LeafsIterator<Spacetree, IterOrder>
using BoundaryLeafsIterator = BoundaryLeafsIterator<Spacetree, IterOrder>
using InsideRegionLeafsIterator = InsideRegionLeafsIterator<Spacetree, IterOrder>
using OutsideRegionLeafsIterator = OutsideRegionLeafsIterator<Spacetree, IterOrder>
template<int LEVEL = 4>
using LeafOrLevelIterator = LeafOrLevelIterator<Spacetree, LEVEL, IterOrder>
template<int LEVEL = 4>
using BottomUpLeafOrLevelIterator = BottomUpLeafOrLevelIterator<Spacetree, LEVEL, IterOrder>
Public Types inherited from LinkedGrid< _Geometry, 2, Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > >
using Geo

Public Member Functions

 Spacetree (Geo::Region range)
 Spacetree ()=default
 Spacetree (Geo::Region range, Spacetree *parent, Geo::RowMajorIdx idx, int level)
 Spacetree (Spacetree &&other) noexcept
Spacetreeoperator= (Spacetree &&other) noexcept
SpacetreefindLeaf (const Geo::Point &p)
SpacetreefindChildNode (const Geo::Region &region)
Spacetreeinsert (Item item)
void pushItem (Item p)
void splitIntoSubtrees ()
SpacetreegetRegionParent (const Geo::Region &range, bool refined=false)
template<StatelessOnNodeCallback< Spacetree > Callback, typename Iter = LeafsIterator>
void onNode (Callback F, u32 numThreads=0)
template<StatelessOnNodeCallback< Spacetree > Callback, typename Iter>
void onNode (Callback F, Iter iter, u32 numThreads=0)
template<typename StateInitF, StatefulOnNodeCallback< Spacetree, std::invoke_result_t< StateInitF > > Callback, typename Iter = LeafsIterator>
auto onNode (Callback F, StateInitF stateInitF, u32 numThreads=0)
template<typename StateInitF, StatefulOnNodeCallback< Spacetree, std::invoke_result_t< StateInitF > > Callback, typename Iter>
auto onNode (Callback F, StateInitF stateInitF, Iter iter, u32 numThreads=0)
void destroySubtrees ()
void clear ()
 ~Spacetree ()
Public Member Functions inherited from LinkedGrid< _Geometry, 2, Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > >
 LinkedGrid ()=default
LinkedGridoperator= (LinkedGrid &&other) noexcept
void split (u32 splitLevel=1)
Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > * getRoot ()
Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > * getChild (const Geo::Point &p)
u32 getSiblingIdx () const
Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > * getNextSibling ()

Static Public Member Functions

static constexpr u32 getMaxChildren ()
Static Public Member Functions inherited from LinkedGrid< _Geometry, 2, Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > >
static constexpr u32 getMaxChildren ()

Data Fields

Vector< Itemitems
Data Fields inherited from LinkedGrid< _Geometry, 2, Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > >
Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > * parent
Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > * subtrees
Geo::Region range
Geo::RowMajorIdx idx
unsigned int level

Static Public Attributes

static constexpr int CAPACITY = THRESHOLD
Static Public Attributes inherited from LinkedGrid< _Geometry, 2, Spacetree< _Geometry, _Item, 64, 2, ThreadPoolTaskBackend > >
static constexpr u32 SplitFactor

Detailed Description

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
struct Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >

Definition at line 52 of file spacetree.h.

Member Typedef Documentation

◆ Base

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::Base = LinkedGrid<_Geometry, SPLIT_FACTOR, Spacetree>

Definition at line 53 of file spacetree.h.

◆ BottomUpLeafOrLevelIterator

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
template<int LEVEL = 4>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::BottomUpLeafOrLevelIterator = BottomUpLeafOrLevelIterator<Spacetree, LEVEL, IterOrder>

Definition at line 72 of file spacetree.h.

◆ BoundaryLeafsIterator

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::BoundaryLeafsIterator = BoundaryLeafsIterator<Spacetree, IterOrder>

Definition at line 64 of file spacetree.h.

◆ Geo

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::Geo = _Geometry

Definition at line 55 of file spacetree.h.

◆ InsideRegionLeafsIterator

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::InsideRegionLeafsIterator = InsideRegionLeafsIterator<Spacetree, IterOrder>

Definition at line 65 of file spacetree.h.

◆ Item

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::Item = _Item

Definition at line 56 of file spacetree.h.

◆ IterOrder

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::IterOrder = IterationOrderSelector<Spacetree>::type

Definition at line 61 of file spacetree.h.

◆ LeafOrLevelIterator

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
template<int LEVEL = 4>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::LeafOrLevelIterator = LeafOrLevelIterator<Spacetree, LEVEL, IterOrder>

Definition at line 69 of file spacetree.h.

◆ LeafsIterator

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::LeafsIterator = LeafsIterator<Spacetree, IterOrder>

Definition at line 63 of file spacetree.h.

◆ OutsideRegionLeafsIterator

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::OutsideRegionLeafsIterator = OutsideRegionLeafsIterator<Spacetree, IterOrder>

Definition at line 66 of file spacetree.h.

◆ TaskBackend

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
using Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::TaskBackend = _TaskBackend

Definition at line 57 of file spacetree.h.

Constructor & Destructor Documentation

◆ Spacetree() [1/4]

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::Spacetree ( Geo::Region range)
explicit

Definition at line 76 of file spacetree.h.

◆ Spacetree() [2/4]

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::Spacetree ( )
default

Referenced by Spacetree< Geo, part, 64, 2, ThreadPoolTaskBackend >::destroySubtrees().

Here is the caller graph for this function:

◆ Spacetree() [3/4]

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::Spacetree ( Geo::Region range,
Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend > * parent,
Geo::RowMajorIdx idx,
int level )

Definition at line 80 of file spacetree.h.

◆ Spacetree() [4/4]

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::Spacetree ( Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend > && other)
noexcept

Definition at line 82 of file spacetree.h.

◆ ~Spacetree()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::~Spacetree ( )

Definition at line 269 of file spacetree.h.

Member Function Documentation

◆ clear()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
void Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::clear ( )

Definition at line 256 of file spacetree.h.

Referenced by Spacetree< Geo, part, 64, 2, ThreadPoolTaskBackend >::clear().

Here is the caller graph for this function:

◆ destroySubtrees()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
void Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::destroySubtrees ( )

Definition at line 249 of file spacetree.h.

Referenced by SpacetreePruner< Spacetree, SPLIT >::mergeChildren(), and Spacetree< Geo, part, 64, 2, ThreadPoolTaskBackend >::~Spacetree().

Here is the caller graph for this function:

◆ findChildNode()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree * Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::findChildNode ( const Geo::Region & region)

Definition at line 104 of file spacetree.h.

Referenced by Spacetree< Geo, part, 64, 2, ThreadPoolTaskBackend >::getRegionParent().

Here is the caller graph for this function:

◆ findLeaf()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree * Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::findLeaf ( const Geo::Point & p)

Definition at line 93 of file spacetree.h.

◆ getMaxChildren()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
constexpr u32 Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::getMaxChildren ( )
staticconstexpr

◆ getRegionParent()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree * Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::getRegionParent ( const Geo::Region & range,
bool refined = false )

Definition at line 180 of file spacetree.h.

Referenced by do_density(), and do_density().

Here is the caller graph for this function:

◆ insert()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree * Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::insert ( Item item)

Definition at line 117 of file spacetree.h.

Referenced by SpacetreeSorter< Spacetree, PreSortCallback >::run().

Here is the caller graph for this function:

◆ onNode() [1/4]

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
template<StatelessOnNodeCallback< Spacetree > Callback, typename Iter>
void Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::onNode ( Callback F,
Iter iter,
u32 numThreads = 0 )

Definition at line 202 of file spacetree.h.

◆ onNode() [2/4]

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
template<typename StateInitF, StatefulOnNodeCallback< Spacetree, std::invoke_result_t< StateInitF > > Callback, typename Iter>
auto Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::onNode ( Callback F,
StateInitF stateInitF,
Iter iter,
u32 numThreads = 0 )

Definition at line 228 of file spacetree.h.

◆ onNode() [3/4]

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
template<typename StateInitF, StatefulOnNodeCallback< Spacetree, std::invoke_result_t< StateInitF > > Callback, typename Iter = LeafsIterator>
auto Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::onNode ( Callback F,
StateInitF stateInitF,
u32 numThreads = 0 )

Definition at line 222 of file spacetree.h.

◆ onNode() [4/4]

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
template<StatelessOnNodeCallback< Spacetree > Callback, typename Iter = LeafsIterator>
void Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::onNode ( Callback F,
u32 numThreads = 0 )

◆ operator=()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Spacetree & Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::operator= ( Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend > && other)
noexcept

Definition at line 86 of file spacetree.h.

Referenced by Spacetree< Geo, part, 64, 2, ThreadPoolTaskBackend >::Spacetree().

Here is the caller graph for this function:

◆ pushItem()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
void Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::pushItem ( Item p)

Definition at line 140 of file spacetree.h.

◆ splitIntoSubtrees()

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
void Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::splitIntoSubtrees ( )

Definition at line 146 of file spacetree.h.

Field Documentation

◆ CAPACITY

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
int Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::CAPACITY = THRESHOLD
staticconstexpr

◆ items

template<typename _Geometry, typename _Item, int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
Vector<Item> Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::items

The documentation for this struct was generated from the following file:
  • benchmarks/other/noh2d-common/spacetree/spacetree/spacetree.h