AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType > Class Template Reference

#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/latest/src/axom/spin/SparseOctreeLevel.hpp>

Inheritance diagram for axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >:

Classes

class  IteratorHelper
 Concrete instance of the BlockIteratorHelper class defined in the OctreeLevel base class. More...
 

Public Types

using Base = OctreeLevel< DIM, BlockDataType >
 
using GridPt = typename Base::GridPt
 
using BroodData = typename Base::BroodData
 
using BaseBlockIteratorHelper = typename Base::BlockIteratorHelper
 
using ConstBaseBlockIteratorHelper = typename Base::ConstBlockIteratorHelper
 
using BroodTraits = BroodRepresentationTraits< typename GridPt::CoordType, GridPt::DIMENSION, BroodData, PointRepresenationType >
 
using MapType = typename BroodTraits::MapType
 
using BroodType = typename BroodTraits::BroodType
 
using MapIter = typename MapType::iterator
 
using ConstMapIter = typename MapType::const_iterator
 
using IterHelper = IteratorHelper< SparseOctreeLevel, MapIter, BaseBlockIteratorHelper >
 
using ConstIterHelper = IteratorHelper< const SparseOctreeLevel, ConstMapIter, ConstBaseBlockIteratorHelper >
 
enum  { BROOD_SIZE = 1 << DIM }
 
using CoordType = axom::IndexType
 
using BlockIter = BlockIterator< OctreeLevel, BlockIteratorHelper, BlockDataType >
 
using ConstBlockIter = BlockIterator< const OctreeLevel, ConstBlockIteratorHelper, const BlockDataType >
 

Public Member Functions

 SparseOctreeLevel (int level=-1)
 Default constructor for an octree level. More...
 
BaseBlockIteratorHelpergetIteratorHelper (bool begin)
 Factory function to return a SparseBlockIterHelper for this level. More...
 
ConstBaseBlockIteratorHelpergetIteratorHelper (bool begin) const
 Factory function to return a ConstSparseBlockIterHelper for this level. More...
 
bool hasBlock (const GridPt &pt) const
 Predicate to check whether the block associated with the given GridPt pt is in the current level. More...
 
void addAllChildren (const GridPt &pt)
 Adds all children of the given grid point to the octree level. More...
 
BlockDataType & operator[] (const GridPt &pt)
 Accessor for the data associated with pt. More...
 
const BlockDataType & operator[] (const GridPt &pt) const
 Const accessor for the data associated with pt. More...
 
BroodDatagetBroodData (const GridPt &pt)
 Access the data associated with the entire brood. More...
 
const BroodDatagetBroodData (const GridPt &pt) const
 Const access to data associated with the entire brood. More...
 
bool empty () const
 Predicate to check if there are any blocks in this octree level. More...
 
int numBlocks () const
 Returns the number of blocks (internal and leaf) in the level. More...
 
int numInternalBlocks () const
 Returns the number of internal blocks in the level. More...
 
int numLeafBlocks () const
 Returns the number of leaf blocks in the level. More...
 
TreeBlockStatus blockStatus (const GridPt &pt) const
 Helper function to determine the status of an octree block within this octree level. More...
 
CoordType maxCoord () const
 Returns the maximum coordinate value in the level. More...
 
GridPt maxGridCell () const
 Returns a GridPt whose coordinates are set to maxCoord. More...
 
int level () const
 
bool inBounds (const GridPt &pt) const
 Predicate to check whether the block associated with the given GridPt pt is an allowed block in the level. More...
 
bool isLeaf (const GridPt &pt) const
 Predicate to check whether the block associated with the given GridPt pt is a leaf block. More...
 
bool isInternal (const GridPt &pt) const
 Predicate to check whether the block associated with the given GridPt pt is an internal block. More...
 
BlockIter begin ()
 Begin iterator to points and data in tree level. More...
 
ConstBlockIter begin () const
 Const begin iterator to points and data in tree level. More...
 
BlockIter end ()
 End iterator to points and data in tree level. More...
 
ConstBlockIter end () const
 Const end iterator to points and data in tree level. More...
 

Protected Attributes

int m_level
 

Member Typedef Documentation

◆ Base

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::Base = OctreeLevel<DIM, BlockDataType>

◆ GridPt

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::GridPt = typename Base::GridPt

◆ BroodData

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::BroodData = typename Base::BroodData

◆ BaseBlockIteratorHelper

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::BaseBlockIteratorHelper = typename Base::BlockIteratorHelper

◆ ConstBaseBlockIteratorHelper

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::ConstBaseBlockIteratorHelper = typename Base::ConstBlockIteratorHelper

◆ BroodTraits

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::BroodTraits = BroodRepresentationTraits<typename GridPt::CoordType, GridPt::DIMENSION, BroodData, PointRepresenationType>

◆ MapType

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::MapType = typename BroodTraits::MapType

◆ BroodType

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::BroodType = typename BroodTraits::BroodType

◆ MapIter

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::MapIter = typename MapType::iterator

◆ ConstMapIter

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::ConstMapIter = typename MapType::const_iterator

◆ IterHelper

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::IterHelper = IteratorHelper<SparseOctreeLevel, MapIter, BaseBlockIteratorHelper>

◆ ConstIterHelper

template<int DIM, typename BlockDataType , typename PointRepresenationType >
using axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::ConstIterHelper = IteratorHelper<const SparseOctreeLevel, ConstMapIter, ConstBaseBlockIteratorHelper>

◆ CoordType

template<int DIM, typename BlockDataType >
using axom::spin::OctreeLevel< DIM, BlockDataType >::CoordType = axom::IndexType
inherited

The coordinate type of a block in the octree

◆ BlockIter

template<int DIM, typename BlockDataType >
using axom::spin::OctreeLevel< DIM, BlockDataType >::BlockIter = BlockIterator<OctreeLevel, BlockIteratorHelper, BlockDataType>
inherited

◆ ConstBlockIter

template<int DIM, typename BlockDataType >
using axom::spin::OctreeLevel< DIM, BlockDataType >::ConstBlockIter = BlockIterator<const OctreeLevel, ConstBlockIteratorHelper, const BlockDataType>
inherited

Member Enumeration Documentation

◆ anonymous enum

template<int DIM, typename BlockDataType >
anonymous enum
inherited
Enumerator
BROOD_SIZE 

Constructor & Destructor Documentation

◆ SparseOctreeLevel()

template<int DIM, typename BlockDataType , typename PointRepresenationType >
axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::SparseOctreeLevel ( int  level = -1)
inline

Member Function Documentation

◆ getIteratorHelper() [1/2]

template<int DIM, typename BlockDataType , typename PointRepresenationType >
BaseBlockIteratorHelper* axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::getIteratorHelper ( bool  begin)
inlinevirtual

Factory function to return a SparseBlockIterHelper for this level.

Parameters
beginA boolean to determine if this is to be a begin (true) or end (false) iterator

Implements axom::spin::OctreeLevel< DIM, BlockDataType >.

References axom::spin::OctreeLevel< DIM, BlockDataType >::begin().

◆ getIteratorHelper() [2/2]

template<int DIM, typename BlockDataType , typename PointRepresenationType >
ConstBaseBlockIteratorHelper* axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::getIteratorHelper ( bool  begin) const
inlinevirtual

Factory function to return a ConstSparseBlockIterHelper for this level.

Parameters
beginA boolean to determine if this is to be a begin (true) or end (false) iterator

Implements axom::spin::OctreeLevel< DIM, BlockDataType >.

References axom::spin::OctreeLevel< DIM, BlockDataType >::begin().

◆ hasBlock()

template<int DIM, typename BlockDataType , typename PointRepresenationType >
bool axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::hasBlock ( const GridPt pt) const
inlinevirtual

Predicate to check whether the block associated with the given GridPt pt is in the current level.

Implements axom::spin::OctreeLevel< DIM, BlockDataType >.

◆ addAllChildren()

template<int DIM, typename BlockDataType , typename PointRepresenationType >
void axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::addAllChildren ( const GridPt pt)
inlinevirtual

◆ operator[]() [1/2]

template<int DIM, typename BlockDataType , typename PointRepresenationType >
BlockDataType& axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::operator[] ( const GridPt pt)
inlinevirtual

Accessor for the data associated with pt.

Implements axom::spin::OctreeLevel< DIM, BlockDataType >.

◆ operator[]() [2/2]

template<int DIM, typename BlockDataType , typename PointRepresenationType >
const BlockDataType& axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::operator[] ( const GridPt pt) const
inlinevirtual

◆ getBroodData() [1/2]

template<int DIM, typename BlockDataType , typename PointRepresenationType >
BroodData& axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::getBroodData ( const GridPt pt)
inlinevirtual

◆ getBroodData() [2/2]

template<int DIM, typename BlockDataType , typename PointRepresenationType >
const BroodData& axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::getBroodData ( const GridPt pt) const
inlinevirtual

◆ empty()

template<int DIM, typename BlockDataType , typename PointRepresenationType >
bool axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::empty ( ) const
inlinevirtual

Predicate to check if there are any blocks in this octree level.

Implements axom::spin::OctreeLevel< DIM, BlockDataType >.

◆ numBlocks()

template<int DIM, typename BlockDataType , typename PointRepresenationType >
int axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::numBlocks ( ) const
inlinevirtual

◆ numInternalBlocks()

template<int DIM, typename BlockDataType , typename PointRepresenationType >
int axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::numInternalBlocks ( ) const
inlinevirtual

◆ numLeafBlocks()

template<int DIM, typename BlockDataType , typename PointRepresenationType >
int axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::numLeafBlocks ( ) const
inlinevirtual

◆ blockStatus()

template<int DIM, typename BlockDataType , typename PointRepresenationType >
TreeBlockStatus axom::spin::SparseOctreeLevel< DIM, BlockDataType, PointRepresenationType >::blockStatus ( const GridPt pt) const
inlinevirtual

Helper function to determine the status of an octree block within this octree level.

Parameters
ptThe grid point of the block index that we are testing
Returns
The status of the grid point pt (e.g. LeafBlock, InternalBlock, ...)

Implements axom::spin::OctreeLevel< DIM, BlockDataType >.

References axom::spin::BlockNotInTree, axom::spin::InternalBlock, and axom::spin::LeafBlock.

◆ maxCoord()

template<int DIM, typename BlockDataType >
CoordType axom::spin::OctreeLevel< DIM, BlockDataType >::maxCoord ( ) const
inlineinherited

Returns the maximum coordinate value in the level.

Note
This is (2^l -1), where L is the current level

References axom::spin::OctreeLevel< DIM, BlockDataType >::m_level.

◆ maxGridCell()

template<int DIM, typename BlockDataType >
GridPt axom::spin::OctreeLevel< DIM, BlockDataType >::maxGridCell ( ) const
inlineinherited

Returns a GridPt whose coordinates are set to maxCoord.

See also
maxCoord()

References axom::spin::OctreeLevel< DIM, BlockDataType >::maxCoord().

◆ level()

template<int DIM, typename BlockDataType >
int axom::spin::OctreeLevel< DIM, BlockDataType >::level ( ) const
inlineinherited

Accessor for the instance's level

References axom::spin::OctreeLevel< DIM, BlockDataType >::m_level.

◆ inBounds()

template<int DIM, typename BlockDataType >
bool axom::spin::OctreeLevel< DIM, BlockDataType >::inBounds ( const GridPt pt) const
inlineinherited

Predicate to check whether the block associated with the given GridPt pt is an allowed block in the level.

Parameters
[in]ptThe gridpoint of the block to check
Note
pt is inBounds if each of its coordinates is a non-negative integer less than maxCoord()
See also
maxCoord()

References axom::spin::OctreeLevel< DIM, BlockDataType >::maxCoord().

◆ isLeaf()

template<int DIM, typename BlockDataType >
bool axom::spin::OctreeLevel< DIM, BlockDataType >::isLeaf ( const GridPt pt) const
inlineinherited

Predicate to check whether the block associated with the given GridPt pt is a leaf block.

References axom::spin::OctreeLevel< DIM, BlockDataType >::blockStatus(), and axom::spin::LeafBlock.

◆ isInternal()

template<int DIM, typename BlockDataType >
bool axom::spin::OctreeLevel< DIM, BlockDataType >::isInternal ( const GridPt pt) const
inlineinherited

Predicate to check whether the block associated with the given GridPt pt is an internal block.

References axom::spin::OctreeLevel< DIM, BlockDataType >::blockStatus(), and axom::spin::InternalBlock.

◆ begin() [1/2]

template<int DIM, typename BlockDataType >
BlockIter axom::spin::OctreeLevel< DIM, BlockDataType >::begin ( )
inlineinherited

Begin iterator to points and data in tree level.

◆ begin() [2/2]

template<int DIM, typename BlockDataType >
ConstBlockIter axom::spin::OctreeLevel< DIM, BlockDataType >::begin ( ) const
inlineinherited

Const begin iterator to points and data in tree level.

◆ end() [1/2]

template<int DIM, typename BlockDataType >
BlockIter axom::spin::OctreeLevel< DIM, BlockDataType >::end ( )
inlineinherited

End iterator to points and data in tree level.

◆ end() [2/2]

template<int DIM, typename BlockDataType >
ConstBlockIter axom::spin::OctreeLevel< DIM, BlockDataType >::end ( ) const
inlineinherited

Const end iterator to points and data in tree level.

Member Data Documentation

◆ m_level

template<int DIM, typename BlockDataType >
int axom::spin::OctreeLevel< DIM, BlockDataType >::m_level
protectedinherited

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