AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::slam::BivariateMap< SetType, DataType, StridePolicy > Class Template Reference

A Map for BivariateSet. It associates a constant number of values to every element in a BivariateSet (as determined by StridePolicy). More...

#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/v0.5.0/src/axom/slam/BivariateMap.hpp>

Inheritance diagram for axom::slam::BivariateMap< SetType, DataType, StridePolicy >:

Classes

class  BivariateMapIterator
 An iterator type for a BivariateMap, iterating via its ElementFlatIndex. More...
 

Public Types

using SetPosition = typename SetType::PositionType
 
using SetElement = typename SetType::ElementType
 
using MapType = slam::Map< SetType, DataType, StridePolicy >
 
using BivariateSetType = BivariateSet< SetPosition, SetElement >
 
using OrderedSetType = typename BivariateSetType::OrderedSetType
 
using BivariateMapType = BivariateMap< SetType, DataType, StridePolicy >
 
using SubMapType = SubMap< SetType, DataType, BivariateMapType, StridePolicy >
 
using SubMapIterator = typename SubMapType::SubMapIterator
 

Public Member Functions

 BivariateMap (const BivariateSetType *bSet=&s_nullBiSet, DataType defaultValue=DataType(), SetPosition stride=StridePolicy::DEFAULT_VALUE)
 Constructor for a BivariateMap. More...
 
BivariateMapIterator begin ()
 
BivariateMapIterator end ()
 
SubMapIterator begin (int i)
 
SubMapIterator end (int i)
 
const BivariateSetTypeset () const
 
const MapTypegetMap () const
 
MapTypegetMap ()
 
virtual bool isValid (bool verboseOutput=false) const override
 Checks whether the Map is valid. More...
 
void copy (DataType *data_arr)
 Given a DataType array of size totalSize()*numComp(), copy the data into the BivariateMap storage. More...
 
BivariateMap index access functions
SetPosition index (SetPosition s1, SetPosition s2) const
 Returns the SparseIndex of the element given the DenseIndex. More...
 
OrderedSetType indexSet (SetPosition s1) const
 Return a set of DenseIndex associated to the given first set index. More...
 
SetPosition flatIndex (SetPosition s1, SetPosition s2) const
 Search for the FlatIndex of an element given its DenseIndex in the BivariateSet. More...
 
BivariateMap cardinality functions
SetPosition size () const override
 Returns the BivariateSet size. More...
 
SetPosition totalSize () const
 Returns the BivariateSet size. More...
 
SetPosition firstSetSize () const
 
SetPosition secondSetSize () const
 
SetPosition size (SetPosition s) const
 Returns the number of the BivariateSet ordered pairs with the given first set index. More...
 
SetPosition numComp () const
 Return the number of components of the map. More...
 

BivariateMap value access functions

const DataType & operator[] (SetPosition setIndex) const
 Access the value in the map using a FlatIndex in the range of 0 to size()*numComp() More...
 
DataType & operator[] (SetPosition setIndex)
 
const SubMapType operator() (SetPosition firstIdx) const
 Returns a SubMap containing the subset of the BivariateMap given the first set index. More...
 
SubMapType operator() (SetPosition firstIdx)
 
const DataType & operator() (SetPosition s1, SetPosition s2, SetPosition comp=0) const
 Access the value associated with the given SparseIndex into the BivariateSet and the component index. More...
 
DataType & operator() (SetPosition s1, SetPosition s2, SetPosition comp=0)
 
const DataType * findValue (SetPosition s1, SetPosition s2, SetPosition comp=0) const
 Access the value associated with the given DenseIndex into the BivariateSet and the component index. More...
 
DataType * findValue (SetPosition s1, SetPosition s2, SetPosition comp=0)
 

Detailed Description

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
class axom::slam::BivariateMap< SetType, DataType, StridePolicy >

A Map for BivariateSet. It associates a constant number of values to every element in a BivariateSet (as determined by StridePolicy).

Like BivariateSet, every value in BivariateMap is indexed by two indices. BivariateMap's operator(i) returns a SubMap of all entries whose first index is i in the BivariateSet.

The different indexing systems (DenseIndex, SparseIndex, FlatIndex) are explained in BivariateSet. Because BivariateMap can have more than one component, FlatIndex is further divided into ComponentFlatIndex, where each component in each element is indexed separately, and ElementFlatIndex, an index that disregards the individual components. Hence, to access each component, one would need to provide a component index as well.

Example: For a 2 x 2 sparse matrix with 3 components below:

0 1
0 abc
1 def

Access the elements using ElementFlatIndex (e) would be...
(e = 0) = abc
(e = 1) = def
To access each component, provide a component index (c) (e = 0, c = 0) = a
(e = 0, c = 1) = b
(e = 0, c = 2) = c
(e = 1, c = 0) = d
(e = 1, c = 1) = e
(e = 1, c = 2) = f
To access using ComponentFlatIndex (idx)...
(idx = 0) = a
(idx = 1) = b
(idx = 2) = c
(idx = 3) = d
(idx = 4) = e
(idx = 5) = f

Template Parameters
DataTypethe data type of each value
StridePolicyA policy class for configuring the number of components associate with each element. There is a fixed stride between the data associated with each element of the set.
See also
BivariateSet, SubMap

Member Typedef Documentation

◆ SetPosition

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::BivariateMap< SetType, DataType, StridePolicy >::SetPosition = typename SetType::PositionType

◆ SetElement

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::BivariateMap< SetType, DataType, StridePolicy >::SetElement = typename SetType::ElementType

◆ MapType

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::BivariateMap< SetType, DataType, StridePolicy >::MapType = slam::Map<SetType, DataType, StridePolicy>

◆ BivariateSetType

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::BivariateMap< SetType, DataType, StridePolicy >::BivariateSetType = BivariateSet<SetPosition, SetElement>

◆ OrderedSetType

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::BivariateMap< SetType, DataType, StridePolicy >::OrderedSetType = typename BivariateSetType::OrderedSetType

◆ BivariateMapType

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::BivariateMap< SetType, DataType, StridePolicy >::BivariateMapType = BivariateMap<SetType, DataType, StridePolicy>

◆ SubMapType

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::BivariateMap< SetType, DataType, StridePolicy >::SubMapType = SubMap<SetType, DataType, BivariateMapType, StridePolicy>

◆ SubMapIterator

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::BivariateMap< SetType, DataType, StridePolicy >::SubMapIterator = typename SubMapType::SubMapIterator

Constructor & Destructor Documentation

◆ BivariateMap()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
axom::slam::BivariateMap< SetType, DataType, StridePolicy >::BivariateMap ( const BivariateSetType bSet = &s_nullBiSet,
DataType  defaultValue = DataType(),
SetPosition  stride = StridePolicy::DEFAULT_VALUE 
)
inline

Constructor for a BivariateMap.

Parameters
bSet(Optional) Pointer to the BivariateSet.
defaultValue(Optional) The default value used to initialize the entries of the map.
stride(Optional) The stride, or number of component, of the map.
Note
When using a compile time StridePolicy, stride must be equal to StridePolicy::stride(), when provided.

Member Function Documentation

◆ operator[]() [1/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const DataType& axom::slam::BivariateMap< SetType, DataType, StridePolicy >::operator[] ( SetPosition  setIndex) const
inline

Access the value in the map using a FlatIndex in the range of 0 to size()*numComp()

Returns
The value for the jth component of the ith element, where setIndex = i * numComp() + j.
Precondition
0 <= setIndex < size() * numComp()

◆ operator[]() [2/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
DataType& axom::slam::BivariateMap< SetType, DataType, StridePolicy >::operator[] ( SetPosition  setIndex)
inline

◆ operator()() [1/4]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const SubMapType axom::slam::BivariateMap< SetType, DataType, StridePolicy >::operator() ( SetPosition  firstIdx) const
inline

Returns a SubMap containing the subset of the BivariateMap given the first set index.

Precondition
0 <= firstIdx < size(firstIdx)

◆ operator()() [2/4]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SubMapType axom::slam::BivariateMap< SetType, DataType, StridePolicy >::operator() ( SetPosition  firstIdx)
inline

◆ operator()() [3/4]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const DataType& axom::slam::BivariateMap< SetType, DataType, StridePolicy >::operator() ( SetPosition  s1,
SetPosition  s2,
SetPosition  comp = 0 
) const
inline

Access the value associated with the given SparseIndex into the BivariateSet and the component index.

Precondition
0 <= s1 < firstSetSize()
0 <= s2 < size(s1)
0 <= comp < numComp()

References axom::slam::BivariateSet< PosType, ElemType >::findElementFlatIndex().

◆ operator()() [4/4]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
DataType& axom::slam::BivariateMap< SetType, DataType, StridePolicy >::operator() ( SetPosition  s1,
SetPosition  s2,
SetPosition  comp = 0 
)
inline

◆ findValue() [1/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const DataType* axom::slam::BivariateMap< SetType, DataType, StridePolicy >::findValue ( SetPosition  s1,
SetPosition  s2,
SetPosition  comp = 0 
) const
inline

Access the value associated with the given DenseIndex into the BivariateSet and the component index.

Precondition
0 <= s1 < firstSetSize()
0 <= s2 < secondSetSize()
0 <= comp < numComp()
Returns
a DataType pointer to the value associated with the given index, or nullptr if there is no value for the given index.
Warning
For sparse BivariateSet type, this function may have to do a linear search and can be slow.

References axom::slam::BivariateSet< PosType, ElemType >::findElementFlatIndex(), and axom::slam::BivariateSet< SetPosition, SetElement >::INVALID_POS.

Referenced by axom::slam::BivariateMap< SetType, DataType, StridePolicy >::findValue().

◆ findValue() [2/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
DataType* axom::slam::BivariateMap< SetType, DataType, StridePolicy >::findValue ( SetPosition  s1,
SetPosition  s2,
SetPosition  comp = 0 
)
inline

◆ index()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::BivariateMap< SetType, DataType, StridePolicy >::index ( SetPosition  s1,
SetPosition  s2 
) const
inline

Returns the SparseIndex of the element given the DenseIndex.

Returns
The SparseIndex of the element, or BivariateSet::INVALID_POS if the set doesn't contain the given DenseIndex

References axom::slam::BivariateSet< PosType, ElemType >::findElementIndex().

◆ indexSet()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
OrderedSetType axom::slam::BivariateMap< SetType, DataType, StridePolicy >::indexSet ( SetPosition  s1) const
inline

Return a set of DenseIndex associated to the given first set index.

Parameters
s1the first set index
Returns
OrderedSet containing the elements

References axom::slam::BivariateSet< PosType, ElemType >::getElements().

◆ flatIndex()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::BivariateMap< SetType, DataType, StridePolicy >::flatIndex ( SetPosition  s1,
SetPosition  s2 
) const
inline

Search for the FlatIndex of an element given its DenseIndex in the BivariateSet.

References axom::slam::BivariateSet< PosType, ElemType >::findElementFlatIndex().

◆ begin() [1/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
BivariateMapIterator axom::slam::BivariateMap< SetType, DataType, StridePolicy >::begin ( )
inline

◆ end() [1/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
BivariateMapIterator axom::slam::BivariateMap< SetType, DataType, StridePolicy >::end ( )
inline

◆ begin() [2/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SubMapIterator axom::slam::BivariateMap< SetType, DataType, StridePolicy >::begin ( int  i)
inline

◆ end() [2/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SubMapIterator axom::slam::BivariateMap< SetType, DataType, StridePolicy >::end ( int  i)
inline

◆ set()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const BivariateSetType* axom::slam::BivariateMap< SetType, DataType, StridePolicy >::set ( ) const
inline

◆ getMap() [1/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const MapType* axom::slam::BivariateMap< SetType, DataType, StridePolicy >::getMap ( ) const
inline

◆ getMap() [2/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
MapType* axom::slam::BivariateMap< SetType, DataType, StridePolicy >::getMap ( )
inline

◆ isValid()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
virtual bool axom::slam::BivariateMap< SetType, DataType, StridePolicy >::isValid ( bool  verboseOutput = false) const
inlineoverridevirtual

◆ size() [1/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::BivariateMap< SetType, DataType, StridePolicy >::size ( ) const
inlineoverridevirtual

◆ totalSize()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::BivariateMap< SetType, DataType, StridePolicy >::totalSize ( ) const
inline

◆ firstSetSize()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::BivariateMap< SetType, DataType, StridePolicy >::firstSetSize ( ) const
inline

◆ secondSetSize()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::BivariateMap< SetType, DataType, StridePolicy >::secondSetSize ( ) const
inline

◆ size() [2/2]

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::BivariateMap< SetType, DataType, StridePolicy >::size ( SetPosition  s) const
inline

Returns the number of the BivariateSet ordered pairs with the given first set index.

◆ numComp()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::BivariateMap< SetType, DataType, StridePolicy >::numComp ( ) const
inline

◆ copy()

template<typename SetType , typename DataType , typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
void axom::slam::BivariateMap< SetType, DataType, StridePolicy >::copy ( DataType *  data_arr)
inline

Given a DataType array of size totalSize()*numComp(), copy the data into the BivariateMap storage.

Parameters
data_arrThe array of DataType that contains the data to be copied.

References AXOM_DEBUG_PARAM, axom::slam::BivariateMap< SetType, DataType, StridePolicy >::size(), and SLIC_ASSERT_MSG.


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