AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::slam Namespace Reference

Namespaces

 detail
 
 policies
 
 traits
 
 util
 

Classes

class  BitSet
 A bitset class. More...
 
class  BivariateMap
 A Map for BivariateSet. It associates a constant number of values to every element in a BivariateSet (as determined by StridePolicy). More...
 
class  BivariateSetIterator
 Implements a forward iterator concept on a BivariateSet type. More...
 
class  BivariateSet
 Abstract class that models a set whose elements are indexed by two indices. Each element in a BivariateSet is equivalent to an ordered pair containing a row and column index, similar to indexing in a matrix. More...
 
class  NullBivariateSet
 A Null BivariateSet class. Same as the NullSet for Set class. More...
 
class  DynamicConstantRelation
 A relation class with constant cardinality that supports adding, removing and modifying set relations. More...
 
class  DynamicMap
 A slam map class that supports adding and removing entries. More...
 
class  DynamicSet
 A Set class that supports dynamically adding and removing set items. More...
 
class  DynamicVariableRelation
 
class  FieldRegistry
 Simple container for fields of type DataType w/ minimal error checking. More...
 
class  Map
 A Map class that associates a constant number of values to every element in a set. More...
 
class  MapBase
 A base class specifying methods that support operations of a Map, associating value(s) to each element in a Set. MapBase can be used as a base class pointer to a templated Map object. More...
 
class  ModularInt
 This class is a wrapper around an int and encapsulates modular arithmetic with a given modulus. More...
 
class  NullSet
 An indexed set (a tuple) of entities in a simulation. More...
 
class  OrderedSet
 Models a set whose elements can be defined as strided offsets of the position, possibly with a level of indirection. More...
 
class  ProductSet
 Models a set whose element is the Cartesian product of two sets. The number of elements in this set is the product of the sizes of the two input sets. More...
 
class  GenericRangeSet
 Models a set whose elements belong to a contiguous range \( \in [lowerIndex,upperIndex) \). More...
 
class  Relation
 
class  RelationSet
 Models a Set whose elements are derived from a relation, one element per fromSet and toSet pair in the relation. More...
 
class  Set
 Abstract base class for a Set of entities in a simulation. More...
 
class  StaticRelation
 
class  SubMap
 The SubMap class provides an API to easily traverse a subset of a Map. More...
 

Typedefs

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using CArrayIndirectionSet = OrderedSet< PosType, ElemType, policies::RuntimeSize< PosType >, policies::ZeroOffset< PosType >, policies::StrideOne< PosType >, policies::CArrayIndirection< PosType, ElemType > >
 Alias template for an OrderedSet with indirection over a C array. More...
 
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using VectorIndirectionSet = OrderedSet< PosType, ElemType, policies::RuntimeSize< PosType >, policies::ZeroOffset< PosType >, policies::StrideOne< PosType >, policies::STLVectorIndirection< PosType, ElemType > >
 Alias template for an OrderedSet with indirection over an stl vector. More...
 
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using ArrayIndirectionSet = OrderedSet< PosType, ElemType, policies::RuntimeSize< PosType >, policies::ZeroOffset< PosType >, policies::StrideOne< PosType >, policies::ArrayIndirection< PosType, ElemType > >
 Alias template for an OrderedSet with indirection over an axom::Array. More...
 
template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using ArrayViewIndirectionSet = OrderedSet< PosType, ElemType, policies::RuntimeSize< PosType >, policies::ZeroOffset< PosType >, policies::StrideOne< PosType >, policies::ArrayViewIndirection< PosType, ElemType > >
 Alias template for an OrderedSet with indirection over an axom::ArrayView. More...
 
template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType>
using PositionSet = GenericRangeSet< P, E, policies::ZeroOffset< P > >
 
template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType>
using RangeSet = GenericRangeSet< P, E >
 
using DefaultPositionType = axom::IndexType
 
using DefaultElementType = axom::IndexType
 

Functions

BitSet operator| (const BitSet &lhs, const BitSet &rhs)
 Union operator for two bit sets. More...
 
BitSet operator& (const BitSet &lhs, const BitSet &rhs)
 Intersection operator for two bit sets. More...
 
BitSet operator^ (const BitSet &lhs, const BitSet &rhs)
 Exclusive or (xor) operator for two bit sets. More...
 
BitSet operator- (const BitSet &lhs, const BitSet &rhs)
 Set difference operator for two bit sets. More...
 
template<typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto make_map (const SetType *set, PosType stride, axom::ArrayView< T > data)
 Make a strided SLAM map backed by ArrayView storage. More...
 
template<typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto make_map (const SetType *set, axom::ArrayView< T > data)
 Make a stride-one SLAM map backed by ArrayView storage. More...
 
template<typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto make_map (const SetType *set, PosType stride, T *data)
 Make a strided SLAM map backed by a raw pointer buffer. More...
 
template<typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto make_map (const SetType *set, T *data)
 Make a stride-one SLAM map backed by a raw pointer buffer. More...
 
template<int STRIDE, typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto make_map_ct (const SetType *set, axom::ArrayView< T > data)
 Make a compile-time strided SLAM map backed by ArrayView storage. More...
 
template<int STRIDE, typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto make_map_ct (const SetType *set, T *data)
 Make a compile-time strided SLAM map backed by a raw pointer buffer. More...
 
template<typename SizePolicy >
constexpr ModularInt< SizePolicy > operator+ (const ModularInt< SizePolicy > &zn, const int n)
 
template<typename SizePolicy >
constexpr ModularInt< SizePolicy > operator+ (const int n, const ModularInt< SizePolicy > &zn)
 
template<typename SizePolicy >
constexpr ModularInt< SizePolicy > operator- (const ModularInt< SizePolicy > &zn, const int n)
 
template<typename SizePolicy >
constexpr ModularInt< SizePolicy > operator- (const int n, const ModularInt< SizePolicy > &zn)
 
template<typename SizePolicy >
constexpr ModularInt< SizePolicy > operator* (const ModularInt< SizePolicy > &zn, const int n)
 
template<typename SizePolicy >
constexpr ModularInt< SizePolicy > operator* (const int n, const ModularInt< SizePolicy > &zn)
 
template<typename P1 , typename E1 , typename P2 , typename E2 >
bool operator== (const Set< P1, E1 > &set1, const Set< P2, E2 > &set2)
 General equality operator for two sets. More...
 
template<typename P1 , typename E1 , typename P2 , typename E2 >
bool operator!= (const Set< P1, E1 > &set1, const Set< P2, E2 > &set2)
 Set inequality operator. More...
 
Relation construction helpers
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_variable_relation (FromSet *fromSet, ToSet *toSet, std::vector< PosType > &begins, std::vector< ElemType > &indices)
 Make a static, variable-cardinality (CSR) relation from fromSet to toSet, backed by std::vector storage for its begins and indices. More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_variable_relation (FromSet &fromSet, ToSet &toSet, std::vector< PosType > &begins, std::vector< ElemType > &indices)
 Reference overload for make_variable_relation (std::vector-backed). More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_variable_relation (FromSet *fromSet, ToSet *toSet, PosType *begins, PosType beginsSize, ElemType *indices, PosType indicesSize)
 Make a static, variable-cardinality (CSR) relation backed by C array storage. More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_variable_relation (FromSet &fromSet, ToSet &toSet, PosType *begins, PosType beginsSize, ElemType *indices, PosType indicesSize)
 Reference overload for make_variable_relation (C-array-backed). More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_variable_relation (FromSet *fromSet, ToSet *toSet, axom::ArrayView< PosType > begins, axom::ArrayView< ElemType > indices)
 Make a static, variable-cardinality (CSR) relation backed by ArrayView storage. More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_variable_relation (FromSet &fromSet, ToSet &toSet, axom::ArrayView< PosType > begins, axom::ArrayView< ElemType > indices)
 Reference overload for make_variable_relation (ArrayView-backed). More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_variable_relation (FromSet *fromSet, ToSet *toSet, axom::Array< PosType > &begins, axom::Array< ElemType > &indices)
 Make a static, variable-cardinality (CSR) relation backed by axom::Array storage. More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_variable_relation (FromSet &fromSet, ToSet &toSet, axom::Array< PosType > &begins, axom::Array< ElemType > &indices)
 Reference overload for make_variable_relation (axom::Array-backed). More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation (FromSet *fromSet, ToSet *toSet, PosType stride, std::vector< ElemType > &indices)
 Make a static, constant-cardinality relation with a runtime stride, backed by std::vector indices. More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation (FromSet &fromSet, ToSet &toSet, PosType stride, std::vector< ElemType > &indices)
 Reference overload for make_constant_relation (std::vector-backed). More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation (FromSet *fromSet, ToSet *toSet, PosType stride, ElemType *indices, PosType indicesSize)
 Make a static, constant-cardinality relation with a runtime stride, backed by C array indices. More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation (FromSet &fromSet, ToSet &toSet, PosType stride, ElemType *indices, PosType indicesSize)
 Reference overload for make_constant_relation (C-array-backed). More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation (FromSet *fromSet, ToSet *toSet, PosType stride, axom::ArrayView< ElemType > indices)
 Make a static, constant-cardinality relation with a runtime stride, backed by ArrayView indices. More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation (FromSet &fromSet, ToSet &toSet, PosType stride, axom::ArrayView< ElemType > indices)
 Reference overload for make_constant_relation (ArrayView-backed). More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation (FromSet *fromSet, ToSet *toSet, PosType stride, axom::Array< ElemType > &indices)
 Make a static, constant-cardinality relation with a runtime stride, backed by axom::Array indices. More...
 
template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation (FromSet &fromSet, ToSet &toSet, PosType stride, axom::Array< ElemType > &indices)
 Reference overload for make_constant_relation (axom::Array-backed). More...
 
template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation_ct (FromSet *fromSet, ToSet *toSet, ElemType *indices, PosType indicesSize)
 Make a static, constant-cardinality relation with a compile-time stride, backed by C array indices. More...
 
template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation_ct (FromSet &fromSet, ToSet &toSet, ElemType *indices, PosType indicesSize)
 Reference overload for make_constant_relation_ct (C-array-backed). More...
 
template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation_ct (FromSet *fromSet, ToSet *toSet, std::vector< ElemType > &indices)
 Make a static, constant-cardinality relation with a compile-time stride, backed by std::vector indices. More...
 
template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation_ct (FromSet &fromSet, ToSet &toSet, std::vector< ElemType > &indices)
 Reference overload for make_constant_relation_ct (std::vector-backed). More...
 
template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation_ct (FromSet *fromSet, ToSet *toSet, axom::ArrayView< ElemType > indices)
 Make a static, constant-cardinality relation with a compile-time stride, backed by ArrayView indices. More...
 
template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation_ct (FromSet &fromSet, ToSet &toSet, axom::ArrayView< ElemType > indices)
 Reference overload for make_constant_relation_ct (ArrayView-backed). More...
 
template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation_ct (FromSet *fromSet, ToSet *toSet, axom::Array< ElemType > &indices)
 Make a static, constant-cardinality relation with a compile-time stride, backed by axom::Array indices. More...
 
template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto make_constant_relation_ct (FromSet &fromSet, ToSet &toSet, axom::Array< ElemType > &indices)
 Reference overload for make_constant_relation_ct (axom::Array-backed). More...
 
Set construction helpers

Construct a SLAM set while deducing its policy stack from the buffer or range. PosType defaults to slam's default position type and may be supplied explicitly as the leading template argument.

template<typename PosType = DefaultPositionType, typename ElemType = DefaultElementType>
RangeSet< PosType, ElemType > make_range_set (axom::type_identity_t< PosType > size)
 Make a contiguous range set \([0, size)\). More...
 
template<typename PosType = DefaultPositionType, typename ElemType = DefaultElementType>
RangeSet< PosType, ElemType > make_range_set (axom::type_identity_t< PosType > lower, axom::type_identity_t< PosType > upper)
 Make a contiguous range set \([lower, upper)\). More...
 
template<typename PosType = DefaultPositionType, typename T >
ArrayViewIndirectionSet< PosType, T > make_indirection_set (axom::ArrayView< T > view)
 Make an indirection set whose elements indirect through an axom::ArrayView. More...
 
template<typename PosType = DefaultPositionType, typename T >
VectorIndirectionSet< PosType, T > make_indirection_set (std::vector< T > &vec)
 Make an indirection set whose elements indirect through an std::vector. More...
 
template<typename PosType = DefaultPositionType, typename T , int DIM, MemorySpace SPACE, typename StoragePolicy >
ArrayViewIndirectionSet< PosType, T > make_indirection_set (axom::Array< T, DIM, SPACE, StoragePolicy > &arr)
 Make an indirection set whose elements indirect through an axom::Array's flat storage. More...
 
template<typename PosType = DefaultPositionType, typename T >
CArrayIndirectionSet< PosType, T > make_indirection_set (T *data, axom::type_identity_t< PosType > size)
 Make an indirection set whose elements indirect through a C array. More...
 

Typedef Documentation

◆ CArrayIndirectionSet

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using axom::slam::CArrayIndirectionSet = typedef OrderedSet<PosType, ElemType, policies::RuntimeSize<PosType>, policies::ZeroOffset<PosType>, policies::StrideOne<PosType>, policies::CArrayIndirection<PosType, ElemType> >

Alias template for an OrderedSet with indirection over a C array.

Template Parameters
PosTypeThe position type for indexing into the set
ElemTypeThe type for the set's elements
See also
OrderedSet

◆ VectorIndirectionSet

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using axom::slam::VectorIndirectionSet = typedef OrderedSet<PosType, ElemType, policies::RuntimeSize<PosType>, policies::ZeroOffset<PosType>, policies::StrideOne<PosType>, policies::STLVectorIndirection<PosType, ElemType> >

Alias template for an OrderedSet with indirection over an stl vector.

Template Parameters
PosTypeThe position type for indexing into the set
ElemTypeThe type for the set's elements
See also
OrderedSet

◆ ArrayIndirectionSet

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using axom::slam::ArrayIndirectionSet = typedef OrderedSet<PosType, ElemType, policies::RuntimeSize<PosType>, policies::ZeroOffset<PosType>, policies::StrideOne<PosType>, policies::ArrayIndirection<PosType, ElemType> >

Alias template for an OrderedSet with indirection over an axom::Array.

Template Parameters
PosTypeThe position type for indexing into the set
ElemTypeThe type for the set's elements
See also
OrderedSet

◆ ArrayViewIndirectionSet

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using axom::slam::ArrayViewIndirectionSet = typedef OrderedSet<PosType, ElemType, policies::RuntimeSize<PosType>, policies::ZeroOffset<PosType>, policies::StrideOne<PosType>, policies::ArrayViewIndirection<PosType, ElemType> >

Alias template for an OrderedSet with indirection over an axom::ArrayView.

Template Parameters
PosTypeThe position type for indexing into the set
ElemTypeThe type for the set's elements
See also
OrderedSet

◆ PositionSet

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType>
using axom::slam::PositionSet = typedef GenericRangeSet<P, E, policies::ZeroOffset<P> >

◆ RangeSet

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType>
using axom::slam::RangeSet = typedef GenericRangeSet<P, E>

◆ DefaultPositionType

◆ DefaultElementType

Function Documentation

◆ operator|()

BitSet axom::slam::operator| ( const BitSet lhs,
const BitSet rhs 
)

Union operator for two bit sets.

Parameters
lhsThe first bitset
rhsThe second bitset
Returns
The union of the two input bitsets, where the i^th bit is set it is set in either lhs or rhs (e.g. b[i] = lhs[i] || rhs[i]).
Precondition
lhs.size() == rhs.size()

◆ operator&()

BitSet axom::slam::operator& ( const BitSet lhs,
const BitSet rhs 
)

Intersection operator for two bit sets.

Parameters
lhsThe first bitset
rhsThe second bitset
Returns
The intersection of the two input bitsets, where the i^th bit is set it is set in both lhs and rhs (e.g. b[i] = lhs[i] && rhs[i]).
Precondition
lhs.size() == rhs.size()

◆ operator^()

BitSet axom::slam::operator^ ( const BitSet lhs,
const BitSet rhs 
)

Exclusive or (xor) operator for two bit sets.

Parameters
lhsThe first bitset
rhsThe second bitset
Returns
The xor of the two input bitsets, where the i^th bit is set it is set in either lhs or rhs but not both (e.g. b[i] = lhs[i] ^ rhs[i]).
Precondition
lhs.size() == rhs.size()

◆ operator-() [1/3]

BitSet axom::slam::operator- ( const BitSet lhs,
const BitSet rhs 
)

Set difference operator for two bit sets.

Parameters
lhsThe first bitset
rhsThe second bitset
Returns
The set difference of the two input bitsets, where the i^th bit is set it is set in lhs and not rhs (e.g. b[i] = lhs[i] && ! rhs[i]).
Precondition
lhs.size() == rhs.size()

◆ make_map() [1/4]

template<typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto axom::slam::make_map ( const SetType *  set,
PosType  stride,
axom::ArrayView< T >  data 
)

Make a strided SLAM map backed by ArrayView storage.

Parameters
setpointer to the map's set (must outlive the map)
strideruntime stride (#values per set element)
databacking storage as an ArrayView (must outlive the map)
Precondition
data.size() == set->size() * stride. The view must be sized to back every element of the set at the given stride; this is checked in debug builds.

References axom::slam::detail::check_map_view_size().

◆ make_map() [2/4]

template<typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto axom::slam::make_map ( const SetType *  set,
axom::ArrayView< T >  data 
)

Make a stride-one SLAM map backed by ArrayView storage.

Precondition
data.size() == set->size(). The view must be sized to back every element of the set; this is checked in debug builds.

References axom::slam::detail::check_map_view_size().

◆ make_map() [3/4]

template<typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto axom::slam::make_map ( const SetType *  set,
PosType  stride,
T *  data 
)

Make a strided SLAM map backed by a raw pointer buffer.

This overload wraps the buffer as an ArrayView with length set->size() * stride and returns an ArrayView-backed map.

References make_map(), and axom::slam::detail::map_storage_size().

◆ make_map() [4/4]

template<typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto axom::slam::make_map ( const SetType *  set,
T *  data 
)

Make a stride-one SLAM map backed by a raw pointer buffer.

References make_map(), and axom::slam::detail::map_storage_size().

◆ make_map_ct() [1/2]

template<int STRIDE, typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto axom::slam::make_map_ct ( const SetType *  set,
axom::ArrayView< T >  data 
)

Make a compile-time strided SLAM map backed by ArrayView storage.

Template Parameters
STRIDEnumber of values per set element
Precondition
data.size() == set->size() * STRIDE. The view must be sized to back every element of the set at the compile-time stride; this is checked in debug builds.

References axom::slam::detail::check_map_view_size().

◆ make_map_ct() [2/2]

template<int STRIDE, typename SetType , typename T , typename PosType = typename SetType::PositionType>
auto axom::slam::make_map_ct ( const SetType *  set,
T *  data 
)

Make a compile-time strided SLAM map backed by a raw pointer buffer.

This overload wraps the buffer as an ArrayView with length set->size() * STRIDE and returns an ArrayView-backed map.

References axom::slam::detail::map_storage_size().

◆ operator+() [1/2]

template<typename SizePolicy >
constexpr ModularInt<SizePolicy> axom::slam::operator+ ( const ModularInt< SizePolicy > &  zn,
const int  n 
)
constexpr

◆ operator+() [2/2]

template<typename SizePolicy >
constexpr ModularInt<SizePolicy> axom::slam::operator+ ( const int  n,
const ModularInt< SizePolicy > &  zn 
)
constexpr

◆ operator-() [2/3]

template<typename SizePolicy >
constexpr ModularInt<SizePolicy> axom::slam::operator- ( const ModularInt< SizePolicy > &  zn,
const int  n 
)
constexpr

◆ operator-() [3/3]

template<typename SizePolicy >
constexpr ModularInt<SizePolicy> axom::slam::operator- ( const int  n,
const ModularInt< SizePolicy > &  zn 
)
constexpr

◆ operator*() [1/2]

template<typename SizePolicy >
constexpr ModularInt<SizePolicy> axom::slam::operator* ( const ModularInt< SizePolicy > &  zn,
const int  n 
)
constexpr

◆ operator*() [2/2]

template<typename SizePolicy >
constexpr ModularInt<SizePolicy> axom::slam::operator* ( const int  n,
const ModularInt< SizePolicy > &  zn 
)
constexpr

◆ make_variable_relation() [1/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_variable_relation ( FromSet *  fromSet,
ToSet *  toSet,
std::vector< PosType > &  begins,
std::vector< ElemType > &  indices 
)

Make a static, variable-cardinality (CSR) relation from fromSet to toSet, backed by std::vector storage for its begins and indices.

The from/to set types are deduced from the pointers. The begins offsets and flat indices (to-set positions) are taken from begins and indices (which must outlive the relation). The relation uses STL-vector indirection.

Parameters
fromSetpointer to the from-set (must outlive the relation)
toSetpointer to the to-set (must outlive the relation)
beginsthe per-from-element begin offsets (size == fromSet->size()+1)
indicesthe flat to-set indices
Returns
a StaticRelation with VariableCardinality and STLVector indirection
Precondition
begins.size() == fromSet->size() + 1

References axom::slam::detail::check_variable_relation_size().

◆ make_variable_relation() [2/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_variable_relation ( FromSet &  fromSet,
ToSet &  toSet,
std::vector< PosType > &  begins,
std::vector< ElemType > &  indices 
)

Reference overload for make_variable_relation (std::vector-backed).

References make_variable_relation().

◆ make_variable_relation() [3/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_variable_relation ( FromSet *  fromSet,
ToSet *  toSet,
PosType *  begins,
PosType  beginsSize,
ElemType *  indices,
PosType  indicesSize 
)

Make a static, variable-cardinality (CSR) relation backed by C array storage.

Parameters
fromSetpointer to the from-set (must outlive the relation)
toSetpointer to the to-set (must outlive the relation)
beginspointer to begin offsets (size == fromSet->size()+1; must outlive the relation)
beginsSizenumber of begin offsets
indicespointer to flat indices (must outlive the relation)
indicesSizenumber of indices

References axom::slam::detail::check_variable_relation_size().

◆ make_variable_relation() [4/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_variable_relation ( FromSet &  fromSet,
ToSet &  toSet,
PosType *  begins,
PosType  beginsSize,
ElemType *  indices,
PosType  indicesSize 
)

Reference overload for make_variable_relation (C-array-backed).

References make_variable_relation().

◆ make_variable_relation() [5/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_variable_relation ( FromSet *  fromSet,
ToSet *  toSet,
axom::ArrayView< PosType >  begins,
axom::ArrayView< ElemType >  indices 
)

Make a static, variable-cardinality (CSR) relation backed by ArrayView storage.

Parameters
fromSetpointer to the from-set (must outlive the relation)
toSetpointer to the to-set (must outlive the relation)
beginsarray view of begin offsets (size == fromSet->size()+1)
indicesarray view of flat indices

References axom::slam::detail::check_variable_relation_size(), and axom::ArrayView< T, DIM, SPACE >::size().

◆ make_variable_relation() [6/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_variable_relation ( FromSet &  fromSet,
ToSet &  toSet,
axom::ArrayView< PosType >  begins,
axom::ArrayView< ElemType >  indices 
)

Reference overload for make_variable_relation (ArrayView-backed).

References make_variable_relation().

◆ make_variable_relation() [7/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_variable_relation ( FromSet *  fromSet,
ToSet *  toSet,
axom::Array< PosType > &  begins,
axom::Array< ElemType > &  indices 
)

Make a static, variable-cardinality (CSR) relation backed by axom::Array storage.

Parameters
fromSetpointer to the from-set (must outlive the relation)
toSetpointer to the to-set (must outlive the relation)
beginsarray of begin offsets (size == fromSet->size()+1; must outlive the relation)
indicesarray of flat indices (to-set positions; must outlive the relation)

References axom::slam::detail::check_variable_relation_size(), and axom::Array< T, DIM, SPACE, StoragePolicy >::size().

◆ make_variable_relation() [8/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_variable_relation ( FromSet &  fromSet,
ToSet &  toSet,
axom::Array< PosType > &  begins,
axom::Array< ElemType > &  indices 
)

Reference overload for make_variable_relation (axom::Array-backed).

References make_variable_relation().

◆ make_constant_relation() [1/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation ( FromSet *  fromSet,
ToSet *  toSet,
PosType  stride,
std::vector< ElemType > &  indices 
)

Make a static, constant-cardinality relation with a runtime stride, backed by std::vector indices.

Parameters
fromSetpointer to the from-set (must outlive the relation)
toSetpointer to the to-set (must outlive the relation)
stridenumber of to-set elements per from-set element
indicesflat indices (size == fromSet->size() * stride; must outlive the relation)

References axom::slam::detail::check_constant_relation_size().

◆ make_constant_relation() [2/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation ( FromSet &  fromSet,
ToSet &  toSet,
PosType  stride,
std::vector< ElemType > &  indices 
)

Reference overload for make_constant_relation (std::vector-backed).

References make_constant_relation().

◆ make_constant_relation() [3/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation ( FromSet *  fromSet,
ToSet *  toSet,
PosType  stride,
ElemType *  indices,
PosType  indicesSize 
)

Make a static, constant-cardinality relation with a runtime stride, backed by C array indices.

References axom::slam::detail::check_constant_relation_size().

◆ make_constant_relation() [4/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation ( FromSet &  fromSet,
ToSet &  toSet,
PosType  stride,
ElemType *  indices,
PosType  indicesSize 
)

Reference overload for make_constant_relation (C-array-backed).

References make_constant_relation().

◆ make_constant_relation() [5/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation ( FromSet *  fromSet,
ToSet *  toSet,
PosType  stride,
axom::ArrayView< ElemType >  indices 
)

Make a static, constant-cardinality relation with a runtime stride, backed by ArrayView indices.

References axom::slam::detail::check_constant_relation_size(), and axom::ArrayView< T, DIM, SPACE >::size().

◆ make_constant_relation() [6/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation ( FromSet &  fromSet,
ToSet &  toSet,
PosType  stride,
axom::ArrayView< ElemType >  indices 
)

Reference overload for make_constant_relation (ArrayView-backed).

References make_constant_relation().

◆ make_constant_relation() [7/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation ( FromSet *  fromSet,
ToSet *  toSet,
PosType  stride,
axom::Array< ElemType > &  indices 
)

Make a static, constant-cardinality relation with a runtime stride, backed by axom::Array indices.

References axom::slam::detail::check_constant_relation_size(), and axom::Array< T, DIM, SPACE, StoragePolicy >::size().

◆ make_constant_relation() [8/8]

template<typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation ( FromSet &  fromSet,
ToSet &  toSet,
PosType  stride,
axom::Array< ElemType > &  indices 
)

Reference overload for make_constant_relation (axom::Array-backed).

References make_constant_relation().

◆ make_constant_relation_ct() [1/8]

template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation_ct ( FromSet *  fromSet,
ToSet *  toSet,
ElemType *  indices,
PosType  indicesSize 
)

Make a static, constant-cardinality relation with a compile-time stride, backed by C array indices.

Template Parameters
STRIDEnumber of to-set elements per from-set element

References axom::slam::detail::check_constant_relation_size().

◆ make_constant_relation_ct() [2/8]

template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation_ct ( FromSet &  fromSet,
ToSet &  toSet,
ElemType *  indices,
PosType  indicesSize 
)

Reference overload for make_constant_relation_ct (C-array-backed).

◆ make_constant_relation_ct() [3/8]

template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation_ct ( FromSet *  fromSet,
ToSet *  toSet,
std::vector< ElemType > &  indices 
)

Make a static, constant-cardinality relation with a compile-time stride, backed by std::vector indices.

References axom::slam::detail::check_constant_relation_size().

◆ make_constant_relation_ct() [4/8]

template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation_ct ( FromSet &  fromSet,
ToSet &  toSet,
std::vector< ElemType > &  indices 
)

Reference overload for make_constant_relation_ct (std::vector-backed).

◆ make_constant_relation_ct() [5/8]

template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation_ct ( FromSet *  fromSet,
ToSet *  toSet,
axom::ArrayView< ElemType >  indices 
)

Make a static, constant-cardinality relation with a compile-time stride, backed by ArrayView indices.

References axom::slam::detail::check_constant_relation_size(), and axom::ArrayView< T, DIM, SPACE >::size().

◆ make_constant_relation_ct() [6/8]

template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation_ct ( FromSet &  fromSet,
ToSet &  toSet,
axom::ArrayView< ElemType >  indices 
)

Reference overload for make_constant_relation_ct (ArrayView-backed).

◆ make_constant_relation_ct() [7/8]

template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation_ct ( FromSet *  fromSet,
ToSet *  toSet,
axom::Array< ElemType > &  indices 
)

Make a static, constant-cardinality relation with a compile-time stride, backed by axom::Array indices.

References axom::slam::detail::check_constant_relation_size(), and axom::Array< T, DIM, SPACE, StoragePolicy >::size().

◆ make_constant_relation_ct() [8/8]

template<int STRIDE, typename FromSet , typename ToSet , typename PosType = typename FromSet::PositionType, typename ElemType = typename ToSet::PositionType>
auto axom::slam::make_constant_relation_ct ( FromSet &  fromSet,
ToSet &  toSet,
axom::Array< ElemType > &  indices 
)

Reference overload for make_constant_relation_ct (axom::Array-backed).

◆ operator==()

template<typename P1 , typename E1 , typename P2 , typename E2 >
bool axom::slam::operator== ( const Set< P1, E1 > &  set1,
const Set< P2, E2 > &  set2 
)
inline

General equality operator for two sets.

Two sets are considered equal if they have the same number of elements and their ordered indices agree.

References axom::slam::Set< PosType, ElemType >::at(), and axom::slam::Set< PosType, ElemType >::size().

◆ operator!=()

template<typename P1 , typename E1 , typename P2 , typename E2 >
bool axom::slam::operator!= ( const Set< P1, E1 > &  set1,
const Set< P2, E2 > &  set2 
)
inline

Set inequality operator.

◆ make_range_set() [1/2]

template<typename PosType = DefaultPositionType, typename ElemType = DefaultElementType>
RangeSet<PosType, ElemType> axom::slam::make_range_set ( axom::type_identity_t< PosType >  size)

Make a contiguous range set \([0, size)\).

Parameters
sizethe number of elements
Returns
a RangeSet<PosType, ElemType>

◆ make_range_set() [2/2]

template<typename PosType = DefaultPositionType, typename ElemType = DefaultElementType>
RangeSet<PosType, ElemType> axom::slam::make_range_set ( axom::type_identity_t< PosType >  lower,
axom::type_identity_t< PosType >  upper 
)

Make a contiguous range set \([lower, upper)\).

Parameters
lowerthe first element of the range
upperone past the last element of the range
Returns
a RangeSet<PosType, ElemType>

◆ make_indirection_set() [1/4]

template<typename PosType = DefaultPositionType, typename T >
ArrayViewIndirectionSet<PosType, T> axom::slam::make_indirection_set ( axom::ArrayView< T >  view)

Make an indirection set whose elements indirect through an axom::ArrayView.

The element type is deduced from view; the set is device-capable (ArrayView indirection is host-device). The set's size matches the view.

Parameters
viewthe backing array view
Returns
an ArrayViewIndirectionSet<PosType, T>

References axom::ArrayView< T, DIM, SPACE >::size().

◆ make_indirection_set() [2/4]

template<typename PosType = DefaultPositionType, typename T >
VectorIndirectionSet<PosType, T> axom::slam::make_indirection_set ( std::vector< T > &  vec)

Make an indirection set whose elements indirect through an std::vector.

The element type is deduced from vec. The set's size matches the vector.

Parameters
vecthe backing vector (must outlive the set)
Returns
a VectorIndirectionSet<PosType, T>

◆ make_indirection_set() [3/4]

template<typename PosType = DefaultPositionType, typename T , int DIM, MemorySpace SPACE, typename StoragePolicy >
ArrayViewIndirectionSet<PosType, T> axom::slam::make_indirection_set ( axom::Array< T, DIM, SPACE, StoragePolicy > &  arr)

Make an indirection set whose elements indirect through an axom::Array's flat storage.

The element type is deduced from arr; the set is device-capable because it stores an ArrayView over the array's flat storage. The set's size matches the array.

The set exposes the array in flatIndex order: element i resolves to arr.data()[i * arr.minStride()], matching axom::Array's own flat-index contract (see axom::ArrayBase::flatIndex). The flat ArrayView is therefore valid for any layout axom::Array produces, including multidimensional row-major arrays. For the common 1D case (axom::Array<T> / DIM == 1) the storage is always contiguous with unit stride, so the set indexes the buffer directly.

Parameters
arrthe backing array (its storage must outlive the set and not be reallocated)
Returns
an ArrayViewIndirectionSet<PosType, T>

References axom::Array< T, DIM, SPACE, StoragePolicy >::data(), axom::ArrayBase< T, DIM, ArrayType >::minStride(), axom::Array< T, DIM, SPACE, StoragePolicy >::size(), and axom::ArrayView< T, DIM, SPACE >::size().

◆ make_indirection_set() [4/4]

template<typename PosType = DefaultPositionType, typename T >
CArrayIndirectionSet<PosType, T> axom::slam::make_indirection_set ( T *  data,
axom::type_identity_t< PosType >  size 
)

Make an indirection set whose elements indirect through a C array.

Parameters
datapointer to the backing buffer (must outlive the set)
sizethe number of elements
Returns
a CArrayIndirectionSet<PosType, T>