Phalanx Development
Loading...
Searching...
No Matches
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 class  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.

Member Function Documentation

◆ identifier()

virtual std::string PHX::DataLayout::identifier ( ) const
pure virtual

Unique name identifier that can be used for strict weak ordering in stl std::map keys.

Implemented in PHX::Layout, and PHX::MDALayout< Tag0, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7 >.


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