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/latest/src/axom/slam/BivariateMap.hpp>
Classes | |
class | FlatIterator |
class | RangeIterator |
An iterator type for a BivariateMap, iterating over elements in an associated BivariateSet. 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 | ElementShape = typename StridePolicyType::ShapeType |
using | SetType = typename slam::RangeSet< SetPosition, SetElement >::ConcreteSet |
using | MapType = Map< DataType, SetType, IndPol, StrPol, IfacePol > |
using | OrderedSetType = typename BSet::SubsetType |
using | ValueType = typename IndirectionPolicy::IndirectionResult |
using | ConstValueType = typename IndirectionPolicy::ConstIndirectionResult |
using | PointerType = std::remove_reference_t< ValueType > * |
using | ConstPointerType = std::remove_reference_t< ConstValueType > * |
using | BivariateMapType = BivariateMap< DataType, BSet, IndPol, StrPol, IfacePol > |
using | iterator = FlatIterator< false > |
using | const_iterator = FlatIterator< true > |
using | range_iterator = RangeIterator< false > |
using | const_range_iterator = RangeIterator< true > |
using | SubMapType = SubMap< BivariateMapType, SetType, IfacePol > |
using | ConstSubMapType = const SubMap< const BivariateMapType, SetType, IfacePol > |
using | SubMapIterator = typename SubMapType::iterator |
using | ConstSubMapIterator = typename ConstSubMapType::iterator |
using | SubMapRangeIterator = typename SubMapType::range_iterator |
using | ConstSubMapRangeIterator = typename ConstSubMapType::range_iterator |
using | NullBivariateSetType = NullBivariateSet< typename BSet::FirstSetType, typename BSet::SecondSetType > |
using | ConcreteMap = BivariateMap< T, BSet, IndPol, StrPol, policies::ConcreteInterface > |
using | VirtualMap = BivariateMap< T, BSet, IndPol, StrPol, policies::VirtualInterface > |
using | IndexType = IntType |
using | ShapeType = IntType |
Public Member Functions | |
BivariateMap (const BivariateSetType *bSet=&s_nullBiSet, DataType defaultValue=DataType(), ElementShape shape=StridePolicyType::DefaultSize(), int allocatorID=axom::getDefaultAllocatorID()) | |
Constructor for a BivariateMap. More... | |
template<typename UBSet , typename Enable = typename std::enable_if< !std::is_abstract<BivariateSetType>::value && std::is_base_of<BivariateSetType, UBSet>::value>::type> | |
BivariateMap (const UBSet &bSet, DataType defaultValue=DataType(), ElementShape shape=StridePolicyType::DefaultSize(), int allocatorID=axom::getDefaultAllocatorID()) | |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
BivariateMap (const BivariateSetType *bSet, typename MapType::OrderedMap data, ElementShape shape=StridePolicyType::DefaultSize()) | |
Constructor for BivariateMap using a BivariateSet passed by-value and data passed in by-value. More... | |
template<typename UBSet , typename TBSet = BivariateSetType, typename Enable = typename std::enable_if<!std::is_abstract<TBSet>::value && std::is_base_of<TBSet, UBSet>::value>::type> | |
BivariateMap (const UBSet &bSet, typename MapType::OrderedMap data, ElementShape shape=StridePolicyType::DefaultSize()) | |
Constructor for BivariateMap using a BivariateSet passed by-value and data passed in by-value. 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 |
AXOM_HOST_DEVICE iterator | begin () |
AXOM_HOST_DEVICE iterator | end () |
AXOM_HOST_DEVICE const_iterator | begin () const |
AXOM_HOST_DEVICE const_iterator | end () const |
AXOM_HOST_DEVICE range_iterator | set_begin () |
AXOM_HOST_DEVICE range_iterator | set_end () |
AXOM_HOST_DEVICE const_range_iterator | set_begin () const |
AXOM_HOST_DEVICE const_range_iterator | set_end () const |
AXOM_HOST_DEVICE SubMapIterator | begin (int i) |
AXOM_HOST_DEVICE SubMapIterator | end (int i) |
AXOM_HOST_DEVICE ConstSubMapIterator | begin (int i) const |
AXOM_HOST_DEVICE ConstSubMapIterator | end (int i) const |
AXOM_HOST_DEVICE SubMapRangeIterator | set_begin (int i) |
AXOM_HOST_DEVICE SubMapRangeIterator | set_end (int i) |
AXOM_HOST_DEVICE ConstSubMapRangeIterator | set_begin (int i) const |
AXOM_HOST_DEVICE ConstSubMapRangeIterator | set_end (int i) const |
AXOM_HOST_DEVICE const BivariateSetType * | set () const |
const MapType * | getMap () const |
MapType * | getMap () |
bool | isValid (bool verboseOutput=false) const |
void | copy (const DataType *data_arr) |
Given a DataType array of size totalSize()*numComp() , copy the data into the BivariateMap storage. More... | |
void | clear () |
replace all elements in the Map with the default DataType More... | |
AXOM_HOST_DEVICE IntType | stride () const |
AXOM_HOST_DEVICE IntType | shape () const |
IntType | operator() () const |
AXOM_HOST_DEVICE void | setStride (IntType AXOM_DEBUG_PARAM(val)) |
BivariateMap value access functions | |
AXOM_HOST_DEVICE ConstValueType | operator[] (SetPosition setIndex) const |
Access the value in the map using a FlatIndex in the range of 0 to size()*numComp() More... | |
AXOM_HOST_DEVICE ValueType | operator[] (SetPosition setIndex) |
AXOM_HOST_DEVICE ConstSubMapType | operator() (SetPosition firstIdx) const |
Returns a SubMap containing the subset of the BivariateMap given the first set index. More... | |
AXOM_HOST_DEVICE SubMapType | operator() (SetPosition firstIdx) |
template<typename... ComponentIndex> | |
AXOM_HOST_DEVICE ConstValueType | operator() (SetPosition s1, SetPosition s2, ComponentIndex... comp) const |
Access the value associated with the given SparseIndex into the BivariateSet and the component index. More... | |
template<typename... ComponentIndex> | |
AXOM_HOST_DEVICE ValueType | operator() (SetPosition s1, SetPosition s2, ComponentIndex... comp) |
template<typename... ComponentIndex> | |
AXOM_HOST_DEVICE ConstValueType | flatValue (SetPosition flatIndex, ComponentIndex... comp) const |
Access the value associated with the given FlatIndex into the BivariateSet and the component index. More... | |
template<typename... ComponentIndex> | |
AXOM_HOST_DEVICE ValueType | flatValue (SetPosition flatIndex, ComponentIndex... comp) |
template<typename... ComponentIndex> | |
AXOM_HOST_DEVICE ConstPointerType | findValue (SetPosition s1, SetPosition s2, ComponentIndex... comp) const |
Access the value associated with the given DenseIndex into the BivariateSet and the component index. More... | |
template<typename... ComponentIndex> | |
AXOM_HOST_DEVICE PointerType | findValue (SetPosition s1, SetPosition s2, ComponentIndex... comp) |
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... | |
AXOM_HOST_DEVICE SetPosition | flatIndex (SetPosition s1, SetPosition s2) const |
Search for the FlatIndex of an element given its DenseIndex in the BivariateSet. More... | |
BivariateMap cardinality functions | |
AXOM_HOST_DEVICE SetPosition | size () const |
Returns the BivariateSet size. More... | |
SetPosition | totalSize () const |
Returns the BivariateSet size. More... | |
SetPosition | firstSetSize () const |
AXOM_HOST_DEVICE 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... | |
Static Public Member Functions | |
static constexpr IntType | DefaultSize () |
Static Public Attributes | |
static const IntType | DEFAULT_VALUE = INT_VAL |
static const bool | IS_COMPILE_TIME = true |
constexpr static int | NumDims = 1 |
Protected Member Functions | |
constexpr AXOM_HOST_DEVICE 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).
\detail 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, IfacePol >::DataType = T |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::BivariateSetType = BSet |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::IndirectionPolicy = IndPol |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::StridePolicyType = StrPol |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::SetPosition = typename BSet::PositionType |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::SetElement = typename BSet::ElementType |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::ElementShape = typename StridePolicyType::ShapeType |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::SetType = typename slam::RangeSet<SetPosition, SetElement>::ConcreteSet |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::MapType = Map<DataType, SetType, IndPol, StrPol, IfacePol> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::OrderedSetType = typename BSet::SubsetType |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::ValueType = typename IndirectionPolicy::IndirectionResult |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::ConstValueType = typename IndirectionPolicy::ConstIndirectionResult |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::PointerType = std::remove_reference_t<ValueType>* |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::ConstPointerType = std::remove_reference_t<ConstValueType>* |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::BivariateMapType = BivariateMap<DataType, BSet, IndPol, StrPol, IfacePol> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::iterator = FlatIterator<false> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::const_iterator = FlatIterator<true> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::range_iterator = RangeIterator<false> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::const_range_iterator = RangeIterator<true> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::SubMapType = SubMap<BivariateMapType, SetType, IfacePol> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::ConstSubMapType = const SubMap<const BivariateMapType, SetType, IfacePol> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::SubMapIterator = typename SubMapType::iterator |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::ConstSubMapIterator = typename ConstSubMapType::iterator |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::SubMapRangeIterator = typename SubMapType::range_iterator |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::ConstSubMapRangeIterator = typename ConstSubMapType::range_iterator |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::NullBivariateSetType = NullBivariateSet<typename BSet::FirstSetType, typename BSet::SecondSetType> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::ConcreteMap = BivariateMap<T, BSet, IndPol, StrPol, policies::ConcreteInterface> |
using axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::VirtualMap = BivariateMap<T, BSet, IndPol, StrPol, policies::VirtualInterface> |
|
inherited |
|
inherited |
|
inline |
Constructor for a BivariateMap.
bSet | (Optional) Pointer to the BivariateSet. |
defaultValue | (Optional) The default value used to initialize the entries of the map. |
shape | (Optional) The number of components in the map. |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inline |
Constructor for BivariateMap using a BivariateSet passed by-value and data passed in by-value.
bSet | A reference to the map's associated bivariate set |
data | The data buffer to set the map's data to. |
shape | (Optional) The number of DataType that each element in the set will be mapped to. When using a RuntimeStridePolicy, the default is 1. |
|
inline |
Constructor for BivariateMap using a BivariateSet passed by-value and data passed in by-value.
bSet | A reference to the map's associated bivariate set |
data | The data buffer to set the map's data to. |
shape | (Optional) The number of DataType that each element in the set will be mapped to. When using a RuntimeStridePolicy, the default is 1. |
|
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, IfacePol >::set(), and axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::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, IfacePol >::flatIndex(), and axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::flatValue().
|
inline |
|
inline |
Access the value associated with the given FlatIndex into the BivariateSet and the component index.
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::flatIndex().
|
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()
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::set().
|
inline |
|
inline |
Returns the SparseIndex of the element given the DenseIndex.
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::set().
|
inline |
Return a set of DenseIndex associated to the given first set index.
s1 | the first set index |
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::set().
|
inline |
Search for the FlatIndex of an element given its DenseIndex in the BivariateSet.
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::set().
|
inlineconstexprprotected |
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
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Iterator via Submap
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::begin().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Returns the BivariateSet size.
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::set().
|
inline |
Returns the BivariateSet size.
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::set().
|
inline |
|
inline |
|
inline |
Returns the number of the BivariateSet ordered pairs with the given first set index.
References axom::slam::BivariateMap< T, BSet, IndPol, StrPol, IfacePol >::set().
|
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::Map< T, S, IndPol, StrPol, IfacePol >::size().
|
inline |
replace all elements in the Map with the default DataType
References axom::slam::Map< T, S, IndPol, StrPol, IfacePol >::clear().
|
inlinestaticconstexprinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
References SLIC_ASSERT_MSG.
|
staticinherited |
|
staticinherited |
|
staticconstexprinherited |