AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
|
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.7.0/src/axom/slam/BivariateMap.hpp>
Classes | |
class | BivariateMapIterator |
An iterator type for a BivariateMap, iterating via its ElementFlatIndex. More... | |
Public Types | |
using | DataType = T |
using | BivariateSetType = BSet |
using | IndirectionPolicy = IndPol |
using | StridePolicyType = StrPol |
using | SetPosition = typename BSet::PositionType |
using | SetElement = typename BSet::ElementType |
using | SetType = slam::RangeSet< SetPosition, SetElement > |
using | MapType = Map< DataType, SetType, IndPol, StrPol > |
using | OrderedSetType = typename BSet::OrderedSetType |
using | BivariateMapType = BivariateMap< DataType, BSet, IndPol, StrPol > |
using | SubMapType = SubMap< BivariateMapType, SetType > |
using | ConstSubMapType = const SubMap< const BivariateMapType, SetType > |
using | SubMapIterator = typename SubMapType::SubMapIterator |
using | NullBivariateSetType = NullBivariateSet< typename BSet::FirstSetType, typename BSet::SecondSetType > |
Public Member Functions | |
BivariateMap (const BivariateSetType *bSet=&s_nullBiSet, DataType defaultValue=DataType(), SetPosition stride=StridePolicyType::DEFAULT_VALUE) | |
Constructor for a BivariateMap. More... | |
template<typename BivariateSetRetType , typename RelType = void> | |
std::enable_if<!traits::has_relation_ptr< BivariateSetRetType >::value, BivariateSetRetType >::type | getBivariateSet () const |
template<typename BivariateSetRetType , typename RelType > | |
std::enable_if< traits::has_relation_ptr< BivariateSetRetType >::value, BivariateSetRetType >::type | getBivariateSet () const |
BivariateMapIterator | begin () |
BivariateMapIterator | end () |
SubMapIterator | begin (int i) |
SubMapIterator | end (int i) |
const BivariateSetType * | set () const |
const MapType * | getMap () const |
MapType * | getMap () |
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... | |
void | copy (const DataType *data_arr) |
void | clear () |
replace all elements in the Map with the default DataType 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 ConstSubMapType | 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) |
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... | |
Protected Member Functions | |
constexpr bool | useCompIndexing () const |
Compile time predicate to check if we should use component indexing. More... | |
constexpr bool | submapIndicesHaveIndirection () const |
Utility function to determine if submaps should use indirection when finding the set indices of their elements. More... | |
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:
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
DataType | the data type of each value |
StridePolicy | A 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. |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::DataType = T |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::BivariateSetType = BSet |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::IndirectionPolicy = IndPol |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::StridePolicyType = StrPol |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::SetPosition = typename BSet::PositionType |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::SetElement = typename BSet::ElementType |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::SetType = slam::RangeSet<SetPosition, SetElement> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::MapType = Map<DataType, SetType, IndPol, StrPol> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::OrderedSetType = typename BSet::OrderedSetType |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::BivariateMapType = BivariateMap<DataType, BSet, IndPol, StrPol> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::SubMapType = SubMap<BivariateMapType, SetType> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::ConstSubMapType = const SubMap<const BivariateMapType, SetType> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::SubMapIterator = typename SubMapType::SubMapIterator |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::NullBivariateSetType = NullBivariateSet<typename BSet::FirstSetType, typename BSet::SecondSetType> |
|
inline |
Constructor for a BivariateMap.
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. |
|
inline |
|
inline |
References SLIC_ASSERT.
|
inline |
|
inline |
|
inline |
Returns a SubMap containing the subset of the BivariateMap given the first set index.
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::submapIndicesHaveIndirection().
|
inline |
|
inline |
Access the value associated with the given SparseIndex into the BivariateSet and the component index.
0 <= s1 < firstSetSize()
0 <= s2 < size(s1)
0 <= comp < numComp()
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::flatIndex(), and axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::useCompIndexing().
|
inline |
|
inline |
Access the value associated with the given DenseIndex into the BivariateSet and the component index.
0 <= s1 < firstSetSize()
0 <= s2 < secondSetSize()
0 <= comp < numComp()
|
inline |
|
inline |
Returns the SparseIndex of the element given the DenseIndex.
|
inline |
Return a set of DenseIndex associated to the given first set index.
s1 | the first set index |
|
inline |
Search for the FlatIndex of an element given its DenseIndex in the BivariateSet.
|
inlineprotected |
Compile time predicate to check if we should use component indexing.
|
inlineprotected |
Utility function to determine if submaps should use indirection when finding the set indices of their elements.
This test distinguishes between ProductSet whose second set do not use indirection and other BivariateSet types
|
inline |
BivariateMap iterator functions
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::BivariateMapIterator::BivariateMapIterator().
|
inline |
|
inline |
Iterator via Submap
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::begin().
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineoverridevirtual |
Checks whether the Map is valid.
Implements axom::slam::MapBase< BSet::PositionType >.
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::isValid().
|
inlineoverridevirtual |
Returns the BivariateSet size.
Implements axom::slam::MapBase< BSet::PositionType >.
|
inline |
Returns the BivariateSet size.
|
inline |
|
inline |
|
inline |
Returns the number of the BivariateSet ordered pairs with the given first set index.
|
inline |
Return the number of components of the map.
|
inline |
Given a DataType array of size totalSize()*numComp()
, copy the data into the BivariateMap storage.
data_arr | The array of DataType that contains the data to be copied. |
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::size().
|
inline |
|
inline |
replace all elements in the Map with the default DataType
References AXOM_DEBUG_PARAM, axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::clear(), axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::firstSetSize(), axom::slam::BivariateMap< T, BSet, IndPol, StrPol >::size(), and SLIC_ASSERT_MSG.