A pure virtual class to provide size and rank information and a unique identifier for a fields. More...
#include <Phalanx_DataLayout.hpp>
Public Types | |
typedef PHX::Device::size_type | size_type |
Public Member Functions | |
virtual PHX::Device::size_type | rank () const =0 |
virtual PHX::Device::size_type | dimension (size_type ordinal) const =0 |
virtual PHX::Device::size_type | extent (size_type ordinal) const =0 |
virtual int | extent_int (size_type ordinal) const =0 |
virtual void | dimensions (std::vector< PHX::Device::size_type > &dim) const =0 |
virtual PHX::Device::size_type | size () const =0 |
virtual std::string | name (size_type ordinal) const =0 |
virtual void | names (std::vector< std::string > &names) const =0 |
virtual bool | operator== (const DataLayout &left) const =0 |
virtual bool | operator!= (const DataLayout &left) const |
virtual std::string | identifier () const =0 |
Unique name identifier that can be used for strict weak ordering in stl std::map keys. | |
virtual void | print (std::ostream &os, int indent=0) const =0 |
template<typename... extent_pack> | |
void | setExtents (extent_pack...extents) |
Protected Member Functions | |
virtual void | setExtentsOnDerivedClass (const std::vector< PHX::Device::size_type > &extents)=0 |
A pure virtual class to provide size and rank information and a unique identifier for a fields.
The DataLayout class is used to (1) specify the rank and extents of fields, and (2) to provide a unique identifier that can be used to differentiate fields. For example suppose we want to store density at both the basis points and the quadrature points in a cell. If we use the same string name for the field in the FieldTag, the DataLayout could be used to differentiate the objects.
NOTE: We could probably just use an enumerated type here, but the DataLayout class allows users to derive and pass in auxiliary data via the tag.