AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::slam::Set< PosType, ElemType > Class Template Referenceabstract

Abstract base class for a Set of entities in a simulation. More...

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

Inheritance diagram for axom::slam::Set< PosType, ElemType >:

Public Types

using PositionType = PosType
 
using ElementType = ElemType
 

Public Member Functions

virtual ~Set ()=default
 
virtual ElementType at (PositionType) const =0
 Random access to the entities of the set. More...
 
virtual PositionType size () const =0
 Get the number of entities in the set. More...
 
virtual bool isSubset () const =0
 Determines if the Set is a Subset of another set. More...
 
virtual bool isValid (bool verboseOutput=false) const =0
 Checks whether the set is valid. More...
 
virtual bool empty () const =0
 Checks if there are any elements in the set – equivalent to: set.size() == 0. More...
 

Detailed Description

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
class axom::slam::Set< PosType, ElemType >

Abstract base class for a Set of entities in a simulation.

This class defines the minimal required API for a slam Set, a container class for a set of entities in a simulation. Each entity has an index.

Examples of sets include:

  1. Mesh elements: vertices, edges, faces, cells
  2. Subzonal elements: sides, corners, finite element degrees of freedom
  3. Boundary elements: external surfaces and springs
  4. Elements of a space partition: e.g. Domains in a block structured mesh, leaf nodes of an octree/kd-tree
  5. AMR bricks / tiles
  6. Thread ids, MPI ranks, warps, thread groups, etc...
  7. particles
  8. boundary conditions
  9. ...

Examples of subsets include:

  1. Regions
  2. Ghost cells – send, receive
  3. Boundary cells – external surface

Note: Elements of a set do not necessarily need explicit indices. E.g. if we have a contiguous range of elements (or slices of contiguous ranges), they can be implicitly encoded.

Thus, we can have

  1. Implicit indexes – all we need here is a size operator
  2. Sliced indices – here we need the dimension and the striding
  3. Explicit indices – for a subset, we need the indices with respect to some other indexing scheme

The interface is for constant access to the elements.

Member Typedef Documentation

◆ PositionType

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using axom::slam::Set< PosType, ElemType >::PositionType = PosType

◆ ElementType

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
using axom::slam::Set< PosType, ElemType >::ElementType = ElemType

Constructor & Destructor Documentation

◆ ~Set()

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
virtual axom::slam::Set< PosType, ElemType >::~Set ( )
virtualdefault

Member Function Documentation

◆ at()

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
virtual ElementType axom::slam::Set< PosType, ElemType >::at ( PositionType  ) const
pure virtual

Random access to the entities of the set.

Parameters
Theindex of the desired element
Returns
The value of the element at the given position
Precondition
The position must be less than the number of elements in the set ( size() )
Note
Concrete realizations of Set also support subscript operator – operator[].
How are we planning to handle indexes that are out or range (accidentally)? Are we planning to handle indexes that are intentionally out of range (e.g. to indicate a problem, or a missing element etc..)?

Implemented in axom::slam::OrderedSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, policies::STLVectorIndirection< SetPosition, SetElement > >, axom::slam::OrderedSet< P, E >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, StridingPolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< slam::DefaultPositionType, slam::DefaultElementType >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy, IndirectionPolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, IndicesIndirectionPolicy >, axom::slam::OrderedSet< RelationType::SetPosition, RelationType::SetElement >, axom::slam::OrderedSet< PosType, ElemType, policies::RuntimeSize< PosType >, policies::RuntimeOffset< PosType >, policies::StrideOne< PosType >, policies::NoIndirection< PosType, ElemType >, policies::NoSubset >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, policies::StrideOne< P >, policies::NoIndirection< P, E >, policies::NoSubset >, axom::slam::OrderedSet< CoordType, CoordType, MAX_LEVEL_SIZE >, axom::slam::OrderedSet< IndexType, IndexType, SizePolicy >, and axom::slam::DynamicSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy >.

Referenced by axom::slam::DynamicVariableRelation< PosType, ElemType >::isValid(), and axom::slam::operator==().

◆ size()

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
virtual PositionType axom::slam::Set< PosType, ElemType >::size ( ) const
pure virtual

Get the number of entities in the set.

Returns
The number of entities in the set.

Implemented in axom::slam::OrderedSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, policies::STLVectorIndirection< SetPosition, SetElement > >, axom::slam::OrderedSet< P, E >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, StridingPolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< slam::DefaultPositionType, slam::DefaultElementType >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy, IndirectionPolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, IndicesIndirectionPolicy >, axom::slam::OrderedSet< RelationType::SetPosition, RelationType::SetElement >, axom::slam::OrderedSet< PosType, ElemType, policies::RuntimeSize< PosType >, policies::RuntimeOffset< PosType >, policies::StrideOne< PosType >, policies::NoIndirection< PosType, ElemType >, policies::NoSubset >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, policies::StrideOne< P >, policies::NoIndirection< P, E >, policies::NoSubset >, axom::slam::OrderedSet< CoordType, CoordType, MAX_LEVEL_SIZE >, axom::slam::OrderedSet< IndexType, IndexType, SizePolicy >, axom::slam::DynamicSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy >, axom::slam::ProductSet< PosType, ElemType >, axom::slam::NullSet< PosType, ElemType >, axom::slam::NullSet< SetPosition, SetElement >, and axom::slam::NullSet< RelationType::SetPosition, RelationType::SetElement >.

Referenced by axom::slam::DynamicVariableRelation< PosType, ElemType >::data(), axom::slam::DynamicVariableRelation< PosType, ElemType >::DynamicVariableRelation(), axom::slam::BivariateSet< RelationType::SetPosition, RelationType::SetElement >::firstSetSize(), axom::slam::DynamicVariableRelation< PosType, ElemType >::isValid(), axom::slam::operator==(), and axom::slam::BivariateSet< RelationType::SetPosition, RelationType::SetElement >::secondSetSize().

◆ isSubset()

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
virtual bool axom::slam::Set< PosType, ElemType >::isSubset ( ) const
pure virtual

Determines if the Set is a Subset of another set.

Returns
true if the set is a subset of another set, otherwise false.

Implemented in axom::slam::OrderedSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, policies::STLVectorIndirection< SetPosition, SetElement > >, axom::slam::OrderedSet< P, E >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, StridingPolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< slam::DefaultPositionType, slam::DefaultElementType >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy, IndirectionPolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, IndicesIndirectionPolicy >, axom::slam::OrderedSet< RelationType::SetPosition, RelationType::SetElement >, axom::slam::OrderedSet< PosType, ElemType, policies::RuntimeSize< PosType >, policies::RuntimeOffset< PosType >, policies::StrideOne< PosType >, policies::NoIndirection< PosType, ElemType >, policies::NoSubset >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, policies::StrideOne< P >, policies::NoIndirection< P, E >, policies::NoSubset >, axom::slam::OrderedSet< CoordType, CoordType, MAX_LEVEL_SIZE >, axom::slam::OrderedSet< IndexType, IndexType, SizePolicy >, axom::slam::DynamicSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy >, axom::slam::NullSet< PosType, ElemType >, axom::slam::NullSet< SetPosition, SetElement >, and axom::slam::NullSet< RelationType::SetPosition, RelationType::SetElement >.

◆ isValid()

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
virtual bool axom::slam::Set< PosType, ElemType >::isValid ( bool  verboseOutput = false) const
pure virtual

Checks whether the set is valid.

Returns
true if the underlying indices are valid, false otherwise.

Implemented in axom::slam::OrderedSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, policies::STLVectorIndirection< SetPosition, SetElement > >, axom::slam::OrderedSet< P, E >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, StridingPolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< slam::DefaultPositionType, slam::DefaultElementType >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy, IndirectionPolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, IndicesIndirectionPolicy >, axom::slam::OrderedSet< RelationType::SetPosition, RelationType::SetElement >, axom::slam::OrderedSet< PosType, ElemType, policies::RuntimeSize< PosType >, policies::RuntimeOffset< PosType >, policies::StrideOne< PosType >, policies::NoIndirection< PosType, ElemType >, policies::NoSubset >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, policies::StrideOne< P >, policies::NoIndirection< P, E >, policies::NoSubset >, axom::slam::OrderedSet< CoordType, CoordType, MAX_LEVEL_SIZE >, axom::slam::OrderedSet< IndexType, IndexType, SizePolicy >, axom::slam::DynamicSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy >, axom::slam::RelationSet< RelationType >, and axom::slam::ProductSet< PosType, ElemType >.

◆ empty()

template<typename PosType = slam::DefaultPositionType, typename ElemType = slam::DefaultElementType>
virtual bool axom::slam::Set< PosType, ElemType >::empty ( ) const
pure virtual

Checks if there are any elements in the set – equivalent to: set.size() == 0.

Implemented in axom::slam::OrderedSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, policies::STLVectorIndirection< SetPosition, SetElement > >, axom::slam::OrderedSet< P, E >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, StridingPolicy, IndirectionPolicy, SubsettingPolicy >, axom::slam::OrderedSet< slam::DefaultPositionType, slam::DefaultElementType >, axom::slam::OrderedSet< ElementType, ElementType, BeginsSizePolicy, BeginsOffsetPolicy, BeginsStridePolicy, IndirectionPolicy >, axom::slam::OrderedSet< SetPosition, SetElement, policies::RuntimeSize< SetPosition >, policies::ZeroOffset< SetPosition >, policies::StrideOne< SetPosition >, IndicesIndirectionPolicy >, axom::slam::OrderedSet< RelationType::SetPosition, RelationType::SetElement >, axom::slam::OrderedSet< PosType, ElemType, policies::RuntimeSize< PosType >, policies::RuntimeOffset< PosType >, policies::StrideOne< PosType >, policies::NoIndirection< PosType, ElemType >, policies::NoSubset >, axom::slam::OrderedSet< P, E, policies::RuntimeSize< P >, policies::RuntimeOffset< P >, policies::StrideOne< P >, policies::NoIndirection< P, E >, policies::NoSubset >, axom::slam::OrderedSet< CoordType, CoordType, MAX_LEVEL_SIZE >, axom::slam::OrderedSet< IndexType, IndexType, SizePolicy >, axom::slam::DynamicSet< PosType, ElemType, SizePolicy, OffsetPolicy, StridePolicy >, axom::slam::NullSet< PosType, ElemType >, axom::slam::NullSet< SetPosition, SetElement >, and axom::slam::NullSet< RelationType::SetPosition, RelationType::SetElement >.


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