Phalanx  Development
 All Classes Functions Variables Typedefs Enumerations Friends Pages
Public Types | Public Member Functions | Protected Member Functions | List of all members
PHX::DataLayout Class Referenceabstract

A pure virtual class to provide size and rank information and a unique identifier for a fields. More...

#include <Phalanx_DataLayout.hpp>

Inheritance diagram for PHX::DataLayout:
Inheritance graph
[legend]

Public Types

enum  KokkosLayoutType { Left, Right, Default }
 Defines the kokkos layout to use. Default uses the recommended layout from the default device execution space.
 
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
PHX::DataLayout::KokkosLayoutType 
kokkosLayout () const =0
 
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
 

Detailed Description

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.


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