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...
#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/latest/src/axom/slam/ProductSet.hpp>
Inherits policies::BivariateSetInterface< policies::VirtualInterface, slam::Set<>, slam::Set<> >.
|
| | ProductSet (const OtherSet &other) |
| |
| | ProductSet () |
| | Default constructor. More...
|
| |
| | ProductSet (const FirstSetType *set1, const SecondSetType *set2) |
| | Constructor taking in pointers of two Sets. More...
|
| |
| PositionType | findElementIndex (PositionType pos1, PositionType pos2) const |
| | Return the element SparseIndex. Since ProductSet is the full Cartesian product of the two sets, the SparseIndex is the same as its DenseIndex, which is the same as the pos2 parameter. More...
|
| |
| std::optional< PositionType > | findElementIndexOptional (PositionType pos1, PositionType pos2) const |
| | Optional-returning wrapper for findElementIndex. More...
|
| |
| AXOM_HOST_DEVICE PositionType | findElementFlatIndex (PositionType pos1, PositionType pos2) const |
| | Returns an element's FlatIndex given its DenseIndex. Since ProductSet is the full Cartesian product of the two sets, an element's FlatIndex is equal to pos1*secondSetSize()+pos2. More...
|
| |
| AXOM_HOST_DEVICE std::optional< PositionType > | findElementFlatIndexOptional (PositionType pos1, PositionType pos2) const |
| | Optional-returning wrapper for findElementFlatIndex(pos1, pos2). More...
|
| |
| PositionType | findElementFlatIndex (PositionType pos1) const |
| | Returns the FlatIndex of the first element in the specified row. This is equal to pos1*secondSetSize(). More...
|
| |
| std::optional< PositionType > | findElementFlatIndexOptional (PositionType pos1) const |
| | Optional-returning wrapper for findElementFlatIndex(pos1). More...
|
| |
| AXOM_HOST_DEVICE PositionType | flatToSecondIndex (PositionType flatIndex) const |
| | Given the flat index, return the associated to-set index in the relation pair. More...
|
| |
| AXOM_HOST_DEVICE PositionType | flatToFirstIndex (PositionType flatIndex) const |
| | Given the flat index, return the associated from-set index in the relation pair. More...
|
| |
| SubsetType | getElements (PositionType AXOM_DEBUG_PARAM(pos1)) const |
| | Return all elements from the second set associated with position pos1 in the first set. More...
|
| |
| AXOM_HOST_DEVICE ElementType | at (PositionType pos) const |
| |
| AXOM_HOST_DEVICE PositionType | size () const |
| |
| PositionType | size (PositionType) const |
| |
| IteratorType | begin () const |
| | Return an iterator to the first pair of set elements in the relation. More...
|
| |
| IteratorType | end () const |
| | Return an iterator to one past the last pair of set elements in the relation. More...
|
| |
| AXOM_HOST_DEVICE RangeSetType | elementRangeSet (PositionType pos1) const |
| |
| bool | isValidIndex (PositionType s1, PositionType s2) const |
| |
| bool | isValid (bool verboseOutput=false) const |
| |
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
class axom::slam::ProductSet< SetType1, SetType2, InterfaceType >
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.
Users should refer to the BivariateSet documentation for descriptions of the different indexing names (SparseIndex, DenseIndex, FlatIndex).
- See also
- BivariateSet
◆ RangeSetType
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ FirstSetType
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ SecondSetType
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ PositionType
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ ElementType
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ ProductSetType
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ IteratorType
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ ConcreteSet
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ VirtualSet
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ OtherSet
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ SubsetType
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ ProductSet() [1/3]
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ ProductSet() [2/3]
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ ProductSet() [3/3]
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
Constructor taking in pointers of two Sets.
- Parameters
-
| set1 | Pointer to the first Set. |
| set2 | Pointer to the second Set. |
◆ findElementIndex()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
Return the element SparseIndex. Since ProductSet is the full Cartesian product of the two sets, the SparseIndex is the same as its DenseIndex, which is the same as the pos2 parameter.
- Parameters
-
| pos1 | The first set position. |
| pos2 | The second set position. |
- Returns
- The element's SparseIndex, which is the same as pos2
◆ findElementIndexOptional()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ findElementFlatIndex() [1/2]
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
Returns an element's FlatIndex given its DenseIndex. Since ProductSet is the full Cartesian product of the two sets, an element's FlatIndex is equal to pos1*secondSetSize()+pos2.
- Parameters
-
| pos1 | The first set position. |
| pos2 | The second set position. |
- Returns
- The element's FlatIndex.
◆ findElementFlatIndexOptional() [1/2]
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ findElementFlatIndex() [2/2]
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ findElementFlatIndexOptional() [2/2]
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ flatToSecondIndex()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ flatToFirstIndex()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ getElements()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
Return all elements from the second set associated with position pos1 in the first set.
- Parameters
-
| pos1 | The first set position that specifies the row. |
- Returns
- An OrderedSet of the elements in the row.
References SLIC_ASSERT.
◆ at()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ size() [1/2]
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ size() [2/2]
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ begin()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
Return an iterator to the first pair of set elements in the relation.
◆ end()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ elementRangeSet()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ isValidIndex()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
◆ isValid()
template<typename SetType1 = slam::Set<>, typename SetType2 = slam::Set<>, typename InterfaceType = policies::VirtualInterface>
The documentation for this class was generated from the following file:
- /home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/latest/src/axom/slam/ProductSet.hpp