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< _Geo, SPLIT_FACTOR, Derived >
using Geo = _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< _Geo, SPLIT_FACTOR, Derived >
 LinkedGrid ()=default
 
 LinkedGrid (Geo::Region range, Derived *parent=nullptr, Geo::RowMajorIdx idx=typename Geo::RowMajorIdx(0), int level=0)
 
 LinkedGrid (LinkedGrid &&other) noexcept
 
LinkedGridoperator= (LinkedGrid &&other) noexcept
 
void split (u32 splitLevel=1)
 
Derived * getRoot ()
 
Derived * getChild (const Geo::Point &p)
 
u32 getSiblingIdx () const
 
Derived * getNextSibling ()
 

Static Public Member Functions

static constexpr u32 getMaxChildren ()
 
- Static Public Member Functions inherited from LinkedGrid< _Geo, SPLIT_FACTOR, Derived >
static constexpr u32 getMaxChildren ()
 

Data Fields

Vector< Itemitems
 
- Data Fields inherited from LinkedGrid< _Geo, SPLIT_FACTOR, Derived >
Derived * parent = nullptr
 
Derived * subtrees = nullptr
 
Geo::Region range = typename Geo::Region()
 
Geo::RowMajorIdx idx = typename Geo::RowMajorIdx(0)
 
unsigned int level = 0
 

Static Public Attributes

static constexpr int CAPACITY = THRESHOLD
 
- Static Public Attributes inherited from LinkedGrid< _Geo, SPLIT_FACTOR, Derived >
static constexpr u32 SplitFactor = SPLIT_FACTOR
 

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< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::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.

References Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::operator=().

Here is the call graph for this function:

◆ ~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.

References Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::destroySubtrees().

Here is the call graph for this function:

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 ( )

◆ 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 ( )

◆ 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.

References LinkedGrid< _Geo, SPLIT_FACTOR, Derived >::range.

Referenced by Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::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.

References LinkedGrid< _Geo, SPLIT_FACTOR, Derived >::range.

◆ getMaxChildren()

template<typename _Geometry , typename _Item , int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
static 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.

References Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::findChildNode(), and LinkedGrid< _Geo, SPLIT_FACTOR, Derived >::range.

Referenced by do_density(), and do_density().

Here is the call graph for this function:
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.

References Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::onNode().

Here is the call graph for this function:

◆ 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.

References LinkedGrid< _Geo, SPLIT_FACTOR, Derived >::operator=().

Referenced by Spacetree< _Geometry, _Item, THRESHOLD, SPLIT_FACTOR, _TaskBackend >::Spacetree().

Here is the call graph for this function:
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.

References assert, and LinkedGrid< _Geo, SPLIT_FACTOR, Derived >::subtrees.

◆ 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 ( )

Field Documentation

◆ CAPACITY

template<typename _Geometry , typename _Item , int THRESHOLD = 64, int SPLIT_FACTOR = 2, typename _TaskBackend = ThreadPoolTaskBackend>
constexpr 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: