Intrepid2
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
Intrepid2::Data< DataScalar, DeviceType > Class Template Reference

Wrapper around a Kokkos::View that allows data that is constant or repeating in various logical dimensions to be stored just once, while providing a similar interface to that of View. More...

#include <Intrepid2_Data.hpp>

Classes

struct  bool_pack
 
struct  FullArgExtractorData
 For use with Data object into which a value will be stored. We use passThroughBlockDiagonalArgs = true for storeInPlaceCombination(). More...
 
struct  FullArgExtractorWritableData
 For use with Data object into which a value will be stored. We use passThroughBlockDiagonalArgs = true for storeInPlaceCombination(). More...
 
struct  InPlaceCombinationFunctor
 

Public Types

using value_type = DataScalar
 
using execution_space = typename DeviceType::execution_space
 
template<bool... v>
using all_true = std::is_same< bool_pack< true, v... >, bool_pack< v..., true > >
 
template<class ... IntArgs>
using valid_args = all_true< std::is_integral< IntArgs >{}... >
 

Public Member Functions

template<class BinaryOperator , class PolicyType , class ThisUnderlyingViewType , class AUnderlyingViewType , class BUnderlyingViewType , class ArgExtractorThis , class ArgExtractorA , class ArgExtractorB >
void storeInPlaceCombination (PolicyType &policy, ThisUnderlyingViewType &this_underlying, AUnderlyingViewType &A_underlying, BUnderlyingViewType &B_underlying, BinaryOperator &binaryOperator, ArgExtractorThis argThis, ArgExtractorA argA, ArgExtractorB argB)
 storeInPlaceCombination implementation for rank < 7, with compile-time underlying views and argument interpretation. Intended for internal and expert use.
 
template<class BinaryOperator , int rank>
enable_if_t< rank !=7, void > storeInPlaceCombination (const Data< DataScalar, DeviceType > &A, const Data< DataScalar, DeviceType > &B, BinaryOperator binaryOperator)
 storeInPlaceCombination with compile-time rank – implementation for rank < 7.
 
template<class BinaryOperator , int rank>
enable_if_t< rank==7, void > storeInPlaceCombination (const Data< DataScalar, DeviceType > &A, const Data< DataScalar, DeviceType > &B, BinaryOperator binaryOperator)
 storeInPlaceCombination with compile-time rank – implementation for rank of 7. (Not optimized; expectation is this case will be rarely used.)
 
template<class UnaryOperator >
void applyOperator (UnaryOperator unaryOperator)
 applies the specified unary operator to each entry
 
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION reference_type getWritableEntryWithPassThroughOption (const bool &passThroughBlockDiagonalArgs, const IntArgs... intArgs) const
 Returns an l-value reference to the specified logical entry in the underlying view. Note that for variation types other than GENERAL, multiple valid argument sets will refer to the same memory location. Intended for Intrepid2 developers and expert users only. If passThroughBlockDiagonalArgs is TRUE, the corresponding arguments are interpreted as entries in the 1D packed matrix rather than as logical 2D matrix row and column.
 
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION reference_type getWritableEntry (const IntArgs... intArgs) const
 Returns an l-value reference to the specified logical entry in the underlying view. Note that for variation types other than GENERAL, multiple valid argument sets will refer to the same memory location. Intended for Intrepid2 developers and expert users only. If passThroughBlockDiagonalArgs is TRUE, the corresponding arguments are interpreted as entries in the 1D packed matrix rather than as logical 2D matrix row and column.
 
void allocateAndCopyFromDynRankView (ScalarView< DataScalar, DeviceType > data)
 allocate an underlying View that matches the provided DynRankView in dimensions, and copy. Called by constructors that accept a DynRankView as argument.
 
 Data (std::vector< DimensionInfo > dimInfoVector)
 Constructor in terms of DimensionInfo for each logical dimension; does not require a View to be specified. Will allocate a View of appropriate rank, zero-filled.
 
 Data (const ScalarView< DataScalar, DeviceType > &data, int rank, Kokkos::Array< int, 7 > extents, Kokkos::Array< DataVariationType, 7 > variationType, const int blockPlusDiagonalLastNonDiagonal=-1)
 DynRankView constructor. Will copy to a View of appropriate rank.
 
template<typename OtherDeviceType , class = typename std::enable_if< std::is_same<typename DeviceType::memory_space, typename OtherDeviceType::memory_space>::value>::type, class = typename std::enable_if<!std::is_same<DeviceType,OtherDeviceType>::value>::type>
 Data (const Data< DataScalar, OtherDeviceType > &data)
 copy-like constructor for differing device type, but same memory space. This does a shallow copy of the underlying view.
 
template<typename OtherDeviceType , class = typename std::enable_if<!std::is_same<typename DeviceType::memory_space, typename OtherDeviceType::memory_space>::value>::type>
 Data (const Data< DataScalar, OtherDeviceType > &data)
 copy-like constructor for differing execution spaces. This does a deep_copy of the underlying view.
 
 Data (ScalarView< DataScalar, DeviceType > data)
 copy constructor modeled after the copy-like constructor above. Not as efficient as the implicit copy constructor, so this should only be uncommented to emulate the copy-like constructor above in situations where host and device space are the same, and the copy-like constructor does not exist, or to provide a debugging breakpoint to assess when copies are being constructed.
 
template<size_t rank, class ... DynRankViewProperties>
 Data (const Kokkos::DynRankView< DataScalar, DeviceType, DynRankViewProperties... > &data, Kokkos::Array< int, rank > extents, Kokkos::Array< DataVariationType, rank > variationType, const int blockPlusDiagonalLastNonDiagonal=-1)
 Constructor that accepts a DynRankView as an argument. The data belonging to the DynRankView will be copied into a new View of matching dimensions.
 
template<size_t rank, class ... ViewProperties>
 Data (Kokkos::View< DataScalar *, DeviceType, ViewProperties... > data, Kokkos::Array< int, rank > extents, Kokkos::Array< DataVariationType, rank > variationType, const int blockPlusDiagonalLastNonDiagonal=-1)
 
template<size_t rank, class ... ViewProperties>
 Data (Kokkos::View< DataScalar **, DeviceType, ViewProperties... > data, Kokkos::Array< int, rank > extents, Kokkos::Array< DataVariationType, rank > variationType, const int blockPlusDiagonalLastNonDiagonal=-1)
 
template<size_t rank, class ... ViewProperties>
 Data (Kokkos::View< DataScalar ***, DeviceType, ViewProperties... > data, Kokkos::Array< int, rank > extents, Kokkos::Array< DataVariationType, rank > variationType, const int blockPlusDiagonalLastNonDiagonal=-1)
 
template<size_t rank, class ... ViewProperties>
 Data (Kokkos::View< DataScalar ****, DeviceType, ViewProperties... > data, Kokkos::Array< int, rank > extents, Kokkos::Array< DataVariationType, rank > variationType, const int blockPlusDiagonalLastNonDiagonal=-1)
 
template<size_t rank, class ... ViewProperties>
 Data (Kokkos::View< DataScalar *****, DeviceType, ViewProperties... > data, Kokkos::Array< int, rank > extents, Kokkos::Array< DataVariationType, rank > variationType, const int blockPlusDiagonalLastNonDiagonal=-1)
 
template<size_t rank, class ... ViewProperties>
 Data (Kokkos::View< DataScalar ******, DeviceType, ViewProperties... > data, Kokkos::Array< int, rank > extents, Kokkos::Array< DataVariationType, rank > variationType, const int blockPlusDiagonalLastNonDiagonal=-1)
 
template<size_t rank, class ... ViewProperties>
 Data (Kokkos::View< DataScalar *******, DeviceType, ViewProperties... > data, Kokkos::Array< int, rank > extents, Kokkos::Array< DataVariationType, rank > variationType, const int blockPlusDiagonalLastNonDiagonal=-1)
 
template<size_t rank>
 Data (DataScalar constantValue, Kokkos::Array< int, rank > extents)
 constructor for everywhere-constant data
 
 Data ()
 default constructor (empty data)
 
KOKKOS_INLINE_FUNCTION const int & blockPlusDiagonalLastNonDiagonal () const
 For a Data object containing data with variation type BLOCK_PLUS_DIAGONAL, returns the row and column (which must match) of the last non-diagonal entry. For fully diagonal matrices, this is -1.
 
KOKKOS_INLINE_FUNCTION Kokkos::Array< int, 7 > getExtents () const
 Returns an array containing the logical extents in each dimension.
 
KOKKOS_INLINE_FUNCTION DimensionInfo getDimensionInfo (const int &dim) const
 Returns an object fully specifying the indicated dimension. This is used in determining appropriate sizing of Data objects that depend on other Data objects (e.g., when two matrix Data objects are multiplied together).
 
KOKKOS_INLINE_FUNCTION DimensionInfo combinedDataDimensionInfo (const Data &otherData, const int &dim) const
 Returns (DataVariationType, data extent) in the specified dimension for a Data container that combines (through multiplication, say, or addition) this container with otherData.
 
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==1, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > getUnderlyingView () const
 Returns the underlying view. Throws an exception if the underlying view is not rank 1.
 
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==2, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > getUnderlyingView () const
 Returns the underlying view. Throws an exception if the underlying view is not rank 2.
 
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==3, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > getUnderlyingView () const
 Returns the underlying view. Throws an exception if the underlying view is not rank 3.
 
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==4, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > getUnderlyingView () const
 Returns the underlying view. Throws an exception if the underlying view is not rank 4.
 
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==5, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > getUnderlyingView () const
 Returns the underlying view. Throws an exception if the underlying view is not rank 5.
 
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==6, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > getUnderlyingView () const
 Returns the underlying view. Throws an exception if the underlying view is not rank 6.
 
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==7, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > getUnderlyingView () const
 Returns the underlying view. Throws an exception if the underlying view is not rank 7.
 
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar *, DeviceType > & getUnderlyingView1 () const
 returns the View that stores the unique data. For rank-1 underlying containers.
 
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar **, DeviceType > & getUnderlyingView2 () const
 returns the View that stores the unique data. For rank-2 underlying containers.
 
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar ***, DeviceType > & getUnderlyingView3 () const
 returns the View that stores the unique data. For rank-3 underlying containers.
 
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar ****, DeviceType > & getUnderlyingView4 () const
 returns the View that stores the unique data. For rank-4 underlying containers.
 
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar *****, DeviceType > & getUnderlyingView5 () const
 returns the View that stores the unique data. For rank-5 underlying containers.
 
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar ******, DeviceType > & getUnderlyingView6 () const
 returns the View that stores the unique data. For rank-6 underlying containers.
 
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar *******, DeviceType > & getUnderlyingView7 () const
 returns the View that stores the unique data. For rank-7 underlying containers.
 
KOKKOS_INLINE_FUNCTION void setUnderlyingView1 (Kokkos::View< DataScalar *, DeviceType > &view) const
 sets the View that stores the unique data. For rank-1 underlying containers.
 
KOKKOS_INLINE_FUNCTION void setUnderlyingView2 (Kokkos::View< DataScalar **, DeviceType > &view) const
 sets the View that stores the unique data. For rank-2 underlying containers.
 
KOKKOS_INLINE_FUNCTION void setUnderlyingView3 (Kokkos::View< DataScalar ***, DeviceType > &view) const
 sets the View that stores the unique data. For rank-3 underlying containers.
 
KOKKOS_INLINE_FUNCTION void setUnderlyingView4 (Kokkos::View< DataScalar ****, DeviceType > &view) const
 sets the View that stores the unique data. For rank-4 underlying containers.
 
KOKKOS_INLINE_FUNCTION void setUnderlyingView5 (Kokkos::View< DataScalar *****, DeviceType > &view) const
 sets the View that stores the unique data. For rank-5 underlying containers.
 
KOKKOS_INLINE_FUNCTION void setUnderlyingView6 (Kokkos::View< DataScalar ******, DeviceType > &view) const
 sets the View that stores the unique data. For rank-6 underlying containers.
 
KOKKOS_INLINE_FUNCTION void setUnderlyingView7 (Kokkos::View< DataScalar *******, DeviceType > &view) const
 sets the View that stores the unique data. For rank-7 underlying containers.
 
ScalarView< DataScalar, DeviceType > getUnderlyingView () const
 Returns a DynRankView constructed atop the same underlying data as the fixed-rank Kokkos::View used internally.
 
KOKKOS_INLINE_FUNCTION ordinal_type getUnderlyingViewRank () const
 returns the rank of the View that stores the unique data
 
KOKKOS_INLINE_FUNCTION ordinal_type getUnderlyingViewSize () const
 returns the number of entries in the View that stores the unique data
 
ScalarView< DataScalar, DeviceType > allocateDynRankViewMatchingUnderlying () const
 Returns a DynRankView that matches the underlying Kokkos::View object in value_type, layout, and dimension.
 
template<class ... DimArgs>
ScalarView< DataScalar, DeviceType > allocateDynRankViewMatchingUnderlying (DimArgs... dims) const
 Returns a DynRankView that matches the underlying Kokkos::View object value_type and layout, but with the specified dimensions.
 
void clear () const
 Copies 0.0 to the underlying View.
 
void copyDataFromDynRankViewMatchingUnderlying (const ScalarView< DataScalar, DeviceType > &dynRankView) const
 Copies from the provided DynRankView into the underlying Kokkos::View container storing the unique data.
 
KOKKOS_INLINE_FUNCTION int getDataExtent (const ordinal_type &d) const
 returns the true extent of the data corresponding to the logical dimension provided; if the data does not vary in that dimension, returns 1
 
KOKKOS_INLINE_FUNCTION int getVariationModulus (const int &d) const
 Variation modulus accessor.
 
KOKKOS_INLINE_FUNCTION const Kokkos::Array< DataVariationType, 7 > & getVariationTypes () const
 Returns an array with the variation types in each logical dimension.
 
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION return_type getEntryWithPassThroughOption (const bool &passThroughBlockDiagonalArgs, const IntArgs &... intArgs) const
 Returns a (read-only) value corresponding to the specified logical data location. If passThroughBlockDiagonalArgs is TRUE, the corresponding arguments are interpreted as entries in the 1D packed matrix rather than as logical 2D matrix row and column.
 
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION return_type getEntry (const IntArgs &... intArgs) const
 Returns a (read-only) value corresponding to the specified logical data location.
 
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION enable_if_t< valid_args< IntArgs... >::value &&(sizeof...(IntArgs)<=7), return_type > operator() (const IntArgs &... intArgs) const
 Returns a value corresponding to the specified logical data location.
 
KOKKOS_INLINE_FUNCTION int extent_int (const int &r) const
 Returns the logical extent in the specified dimension.
 
template<typename iType >
KOKKOS_INLINE_FUNCTION constexpr std::enable_if< std::is_integral< iType >::value, size_t >::type extent (const iType &r) const
 
KOKKOS_INLINE_FUNCTION bool isDiagonal () const
 returns true for containers that have two dimensions marked as BLOCK_PLUS_DIAGONAL for which the non-diagonal block is empty or size 1.
 
Data< DataScalar, DeviceType > allocateConstantData (const DataScalar &value)
 
template<int rank>
enable_if_t<(rank!=1) &&(rank!=7), Kokkos::MDRangePolicy< typename DeviceType::execution_space, Kokkos::Rank< rank > > > dataExtentRangePolicy ()
 returns an MDRangePolicy over the underlying data extents (but with the logical shape).
 
template<int rank>
enable_if_t< rank==7, Kokkos::MDRangePolicy< typename DeviceType::execution_space, Kokkos::Rank< 6 > > > dataExtentRangePolicy ()
 returns an MDRangePolicy over the first six underlying data extents (but with the logical shape).
 
template<int rank>
enable_if_t< rank==1, Kokkos::RangePolicy< typename DeviceType::execution_space > > dataExtentRangePolicy ()
 
Data shallowCopy (const int rank, const Kokkos::Array< int, 7 > &extents, const Kokkos::Array< DataVariationType, 7 > &variationTypes)
 Creates a new Data object with the same underlying view, but with the specified logical rank, extents, and variation types.
 
template<class BinaryOperator >
void storeInPlaceCombination (const Data< DataScalar, DeviceType > &A, const Data< DataScalar, DeviceType > &B, BinaryOperator binaryOperator)
 Places the result of an in-place combination (e.g., entrywise sum) into this data container.
 
void storeInPlaceSum (const Data< DataScalar, DeviceType > &A, const Data< DataScalar, DeviceType > &B)
 stores the in-place (entrywise) sum, A .+ B, into this container.
 
void storeInPlaceProduct (const Data< DataScalar, DeviceType > &A, const Data< DataScalar, DeviceType > &B)
 stores the in-place (entrywise) product, A .* B, into this container.
 
void storeInPlaceDifference (const Data< DataScalar, DeviceType > &A, const Data< DataScalar, DeviceType > &B)
 stores the in-place (entrywise) difference, A .- B, into this container.
 
void storeInPlaceQuotient (const Data< DataScalar, DeviceType > &A, const Data< DataScalar, DeviceType > &B)
 stores the in-place (entrywise) quotient, A ./ B, into this container.
 
void storeMatVec (const Data< DataScalar, DeviceType > &matData, const Data< DataScalar, DeviceType > &vecData)
 Places the result of a matrix-vector multiply corresponding to the two provided containers into this Data container. This Data container should have been constructed by a call to allocateMatVecResult(), or should match such a container in underlying data extent and variation types.
 
void storeMatMat (const bool transposeA, const Data< DataScalar, DeviceType > &A_MatData, const bool transposeB, const Data< DataScalar, DeviceType > &B_MatData)
 
KOKKOS_INLINE_FUNCTION constexpr bool isValid () const
 returns true for containers that have data; false for those that don't (namely, those that have been constructed by the default constructor).
 
KOKKOS_INLINE_FUNCTION unsigned rank () const
 Returns the logical rank of the Data container.
 
void setExtent (const ordinal_type &d, const ordinal_type &newExtent)
 sets the logical extent in the specified dimension. If needed, the underlying data container is resized.
 
KOKKOS_INLINE_FUNCTION bool underlyingMatchesLogical () const
 Returns true if the underlying container has exactly the same rank and extents as the logical container.
 

Static Public Member Functions

template<class ToContainer , class FromContainer >
static void copyContainer (ToContainer to, FromContainer from)
 Generic data copying method to allow construction of Data object from DynRankViews for which deep_copy() to the underlying view would be disallowed. This method made public to allow CUDA compilation (because it contains a Kokkos lambda).
 
static Data< DataScalar, DeviceType > allocateInPlaceCombinationResult (const Data< DataScalar, DeviceType > &A, const Data< DataScalar, DeviceType > &B)
 
static Data< DataScalar, DeviceType > allocateMatMatResult (const bool transposeA, const Data< DataScalar, DeviceType > &A_MatData, const bool transposeB, const Data< DataScalar, DeviceType > &B_MatData)
 
static Data< DataScalar, DeviceType > allocateMatVecResult (const Data< DataScalar, DeviceType > &matData, const Data< DataScalar, DeviceType > &vecData)
 

Private Types

using reference_type = typename ScalarView< DataScalar, DeviceType >::reference_type
 
using const_reference_type = typename ScalarView< const DataScalar, DeviceType >::reference_type
 
using return_type = const_reference_type
 

Private Member Functions

KOKKOS_INLINE_FUNCTION int getUnderlyingViewExtent (const int &dim) const
 Returns the extent of the underlying view in the specified dimension.
 
void setActiveDims ()
 class initialization method. Called by constructors.
 

Static Private Member Functions

static KOKKOS_INLINE_FUNCTION int blockPlusDiagonalNumNondiagonalEntries (const int &lastNondiagonal)
 Returns the number of non-diagonal entries based on the last non-diagonal. Only applicable for BLOCK_PLUS_DIAGONAL DataVariationType.
 
static KOKKOS_INLINE_FUNCTION int blockPlusDiagonalBlockEntryIndex (const int &lastNondiagonal, const int &numNondiagonalEntries, const int &i, const int &j)
 //! Returns flattened index of the specified (i,j) matrix entry, assuming that i,j ≤ lastNondiagonal. Only applicable for BLOCK_PLUS_DIAGONAL DataVariationType.
 
static KOKKOS_INLINE_FUNCTION int blockPlusDiagonalDiagonalEntryIndex (const int &lastNondiagonal, const int &numNondiagonalEntries, const int &i)
 Returns flattened index of the specified (i,i) matrix entry, assuming that i > lastNondiagonal. Only applicable for BLOCK_PLUS_DIAGONAL DataVariationType.
 

Private Attributes

ordinal_type dataRank_
 
Kokkos::View< DataScalar *, DeviceType > data1_
 
Kokkos::View< DataScalar **, DeviceType > data2_
 
Kokkos::View< DataScalar ***, DeviceType > data3_
 
Kokkos::View< DataScalar ****, DeviceType > data4_
 
Kokkos::View< DataScalar *****, DeviceType > data5_
 
Kokkos::View< DataScalar ******, DeviceType > data6_
 
Kokkos::View< DataScalar *******, DeviceType > data7_
 
Kokkos::Array< int, 7 > extents_
 
Kokkos::Array< DataVariationType, 7 > variationType_
 
Kokkos::Array< int, 7 > variationModulus_
 
int blockPlusDiagonalLastNonDiagonal_ = -1
 
bool hasNontrivialModulusUNUSED_
 
bool underlyingMatchesLogical_
 
Kokkos::Array< ordinal_type, 7 > activeDims_
 
int numActiveDims_
 
ordinal_type rank_
 
ScalarView< DataScalar, DeviceType > zeroView_
 

Detailed Description

template<class DataScalar, typename DeviceType>
class Intrepid2::Data< DataScalar, DeviceType >

Wrapper around a Kokkos::View that allows data that is constant or repeating in various logical dimensions to be stored just once, while providing a similar interface to that of View.

The Data class distinguishes between the logical extent and the data extent. For example, one could construct a data container corresponding to constant (cell, point) data with 100 cells and 25 points per cell as follows: auto cpData = Data(value, Kokkos::Array<int>{100,25}); The data extent of the container is 1 in every dimension, while the logical extent is 100 in the first dimension, and 25 in the second. Similarly, the logical rank of the container is 2, but the rank of the underlying View is 1.

There are four possible variation types in a logical dimension:

Definition at line 199 of file Intrepid2_Data.hpp.

Member Typedef Documentation

◆ all_true

template<class DataScalar , typename DeviceType >
template<bool... v>
using Intrepid2::Data< DataScalar, DeviceType >::all_true = std::is_same<bool_pack<true, v...>, bool_pack<v..., true> >

Definition at line 1794 of file Intrepid2_Data.hpp.

◆ const_reference_type

template<class DataScalar , typename DeviceType >
using Intrepid2::Data< DataScalar, DeviceType >::const_reference_type = typename ScalarView<const DataScalar,DeviceType>::reference_type
private

Definition at line 225 of file Intrepid2_Data.hpp.

◆ execution_space

template<class DataScalar , typename DeviceType >
using Intrepid2::Data< DataScalar, DeviceType >::execution_space = typename DeviceType::execution_space

Definition at line 202 of file Intrepid2_Data.hpp.

◆ reference_type

template<class DataScalar , typename DeviceType >
using Intrepid2::Data< DataScalar, DeviceType >::reference_type = typename ScalarView<DataScalar,DeviceType>::reference_type
private

Definition at line 224 of file Intrepid2_Data.hpp.

◆ return_type

template<class DataScalar , typename DeviceType >
using Intrepid2::Data< DataScalar, DeviceType >::return_type = const_reference_type
private

Definition at line 227 of file Intrepid2_Data.hpp.

◆ valid_args

template<class DataScalar , typename DeviceType >
template<class ... IntArgs>
using Intrepid2::Data< DataScalar, DeviceType >::valid_args = all_true<std::is_integral<IntArgs>{}...>

Definition at line 1797 of file Intrepid2_Data.hpp.

◆ value_type

template<class DataScalar , typename DeviceType >
using Intrepid2::Data< DataScalar, DeviceType >::value_type = DataScalar

Definition at line 201 of file Intrepid2_Data.hpp.

Constructor & Destructor Documentation

◆ Data() [1/15]

template<class DataScalar , typename DeviceType >
Intrepid2::Data< DataScalar, DeviceType >::Data ( std::vector< DimensionInfo dimInfoVector)
inline

Constructor in terms of DimensionInfo for each logical dimension; does not require a View to be specified. Will allocate a View of appropriate rank, zero-filled.

Definition at line 1080 of file Intrepid2_Data.hpp.

◆ Data() [2/15]

template<class DataScalar , typename DeviceType >
Intrepid2::Data< DataScalar, DeviceType >::Data ( const ScalarView< DataScalar, DeviceType > &  data,
int  rank,
Kokkos::Array< int, 7 >  extents,
Kokkos::Array< DataVariationType, 7 >  variationType,
const int  blockPlusDiagonalLastNonDiagonal = -1 
)
inline

DynRankView constructor. Will copy to a View of appropriate rank.

Definition at line 1131 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::allocateAndCopyFromDynRankView(), and Intrepid2::Data< DataScalar, DeviceType >::setActiveDims().

◆ Data() [3/15]

template<class DataScalar , typename DeviceType >
template<typename OtherDeviceType , class = typename std::enable_if< std::is_same<typename DeviceType::memory_space, typename OtherDeviceType::memory_space>::value>::type, class = typename std::enable_if<!std::is_same<DeviceType,OtherDeviceType>::value>::type>
Intrepid2::Data< DataScalar, DeviceType >::Data ( const Data< DataScalar, OtherDeviceType > &  data)
inline

copy-like constructor for differing device type, but same memory space. This does a shallow copy of the underlying view.

Definition at line 1142 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView().

◆ Data() [4/15]

template<class DataScalar , typename DeviceType >
template<typename OtherDeviceType , class = typename std::enable_if<!std::is_same<typename DeviceType::memory_space, typename OtherDeviceType::memory_space>::value>::type>
Intrepid2::Data< DataScalar, DeviceType >::Data ( const Data< DataScalar, OtherDeviceType > &  data)
inline

◆ Data() [5/15]

template<class DataScalar , typename DeviceType >
Intrepid2::Data< DataScalar, DeviceType >::Data ( ScalarView< DataScalar, DeviceType >  data)
inline

copy constructor modeled after the copy-like constructor above. Not as efficient as the implicit copy constructor, so this should only be uncommented to emulate the copy-like constructor above in situations where host and device space are the same, and the copy-like constructor does not exist, or to provide a debugging breakpoint to assess when copies are being constructed.

constructor for fully varying data container, no expressed redundancy/repetition. Copies the data to a new Kokkos::View of matching rank.

Definition at line 1248 of file Intrepid2_Data.hpp.

◆ Data() [6/15]

template<class DataScalar , typename DeviceType >
template<size_t rank, class ... DynRankViewProperties>
Intrepid2::Data< DataScalar, DeviceType >::Data ( const Kokkos::DynRankView< DataScalar, DeviceType, DynRankViewProperties... > &  data,
Kokkos::Array< int, rank extents,
Kokkos::Array< DataVariationType, rank variationType,
const int  blockPlusDiagonalLastNonDiagonal = -1 
)
inline

Constructor that accepts a DynRankView as an argument. The data belonging to the DynRankView will be copied into a new View of matching dimensions.

Definition at line 1258 of file Intrepid2_Data.hpp.

◆ Data() [7/15]

template<class DataScalar , typename DeviceType >
template<size_t rank, class ... ViewProperties>
Intrepid2::Data< DataScalar, DeviceType >::Data ( Kokkos::View< DataScalar *, DeviceType, ViewProperties... >  data,
Kokkos::Array< int, rank extents,
Kokkos::Array< DataVariationType, rank variationType,
const int  blockPlusDiagonalLastNonDiagonal = -1 
)
inline

Definition at line 1273 of file Intrepid2_Data.hpp.

◆ Data() [8/15]

template<class DataScalar , typename DeviceType >
template<size_t rank, class ... ViewProperties>
Intrepid2::Data< DataScalar, DeviceType >::Data ( Kokkos::View< DataScalar **, DeviceType, ViewProperties... >  data,
Kokkos::Array< int, rank extents,
Kokkos::Array< DataVariationType, rank variationType,
const int  blockPlusDiagonalLastNonDiagonal = -1 
)
inline

Definition at line 1287 of file Intrepid2_Data.hpp.

◆ Data() [9/15]

template<class DataScalar , typename DeviceType >
template<size_t rank, class ... ViewProperties>
Intrepid2::Data< DataScalar, DeviceType >::Data ( Kokkos::View< DataScalar ***, DeviceType, ViewProperties... >  data,
Kokkos::Array< int, rank extents,
Kokkos::Array< DataVariationType, rank variationType,
const int  blockPlusDiagonalLastNonDiagonal = -1 
)
inline

Definition at line 1301 of file Intrepid2_Data.hpp.

◆ Data() [10/15]

template<class DataScalar , typename DeviceType >
template<size_t rank, class ... ViewProperties>
Intrepid2::Data< DataScalar, DeviceType >::Data ( Kokkos::View< DataScalar ****, DeviceType, ViewProperties... >  data,
Kokkos::Array< int, rank extents,
Kokkos::Array< DataVariationType, rank variationType,
const int  blockPlusDiagonalLastNonDiagonal = -1 
)
inline

Definition at line 1315 of file Intrepid2_Data.hpp.

◆ Data() [11/15]

template<class DataScalar , typename DeviceType >
template<size_t rank, class ... ViewProperties>
Intrepid2::Data< DataScalar, DeviceType >::Data ( Kokkos::View< DataScalar *****, DeviceType, ViewProperties... >  data,
Kokkos::Array< int, rank extents,
Kokkos::Array< DataVariationType, rank variationType,
const int  blockPlusDiagonalLastNonDiagonal = -1 
)
inline

Definition at line 1329 of file Intrepid2_Data.hpp.

◆ Data() [12/15]

template<class DataScalar , typename DeviceType >
template<size_t rank, class ... ViewProperties>
Intrepid2::Data< DataScalar, DeviceType >::Data ( Kokkos::View< DataScalar ******, DeviceType, ViewProperties... >  data,
Kokkos::Array< int, rank extents,
Kokkos::Array< DataVariationType, rank variationType,
const int  blockPlusDiagonalLastNonDiagonal = -1 
)
inline

Definition at line 1343 of file Intrepid2_Data.hpp.

◆ Data() [13/15]

template<class DataScalar , typename DeviceType >
template<size_t rank, class ... ViewProperties>
Intrepid2::Data< DataScalar, DeviceType >::Data ( Kokkos::View< DataScalar *******, DeviceType, ViewProperties... >  data,
Kokkos::Array< int, rank extents,
Kokkos::Array< DataVariationType, rank variationType,
const int  blockPlusDiagonalLastNonDiagonal = -1 
)
inline

Definition at line 1357 of file Intrepid2_Data.hpp.

◆ Data() [14/15]

template<class DataScalar , typename DeviceType >
template<size_t rank>
Intrepid2::Data< DataScalar, DeviceType >::Data ( DataScalar  constantValue,
Kokkos::Array< int, rank extents 
)
inline

constructor for everywhere-constant data

Definition at line 1372 of file Intrepid2_Data.hpp.

◆ Data() [15/15]

template<class DataScalar , typename DeviceType >
Intrepid2::Data< DataScalar, DeviceType >::Data ( )
inline

default constructor (empty data)

Definition at line 1386 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::shallowCopy().

Member Function Documentation

◆ allocateAndCopyFromDynRankView()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::allocateAndCopyFromDynRankView ( ScalarView< DataScalar, DeviceType >  data)
inline

allocate an underlying View that matches the provided DynRankView in dimensions, and copy. Called by constructors that accept a DynRankView as argument.

Definition at line 1051 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::copyContainer().

Referenced by Intrepid2::Data< DataScalar, DeviceType >::Data().

◆ allocateConstantData()

template<class DataScalar , typename DeviceType >
Data< DataScalar, DeviceType > Intrepid2::Data< DataScalar, DeviceType >::allocateConstantData ( const DataScalar &  value)
inline

Constructs a container with extents matching this, with a single-value underlying View, CONSTANT in each dimension.

Parameters
value[in] - the constant value.
Returns
A container with the same logical shape as this, with a single-value underlying View.

Definition at line 1850 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getExtents().

Referenced by Intrepid2::CellTools< DeviceType >::setJacobianDetInv().

◆ allocateDynRankViewMatchingUnderlying() [1/2]

template<class DataScalar , typename DeviceType >
ScalarView< DataScalar, DeviceType > Intrepid2::Data< DataScalar, DeviceType >::allocateDynRankViewMatchingUnderlying ( ) const
inline

Returns a DynRankView that matches the underlying Kokkos::View object in value_type, layout, and dimension.

Definition at line 1653 of file Intrepid2_Data.hpp.

References Intrepid2::getMatchingViewWithLabel().

Referenced by Intrepid2::Data< DataScalar, DeviceType >::allocateMatVecResult().

◆ allocateDynRankViewMatchingUnderlying() [2/2]

template<class DataScalar , typename DeviceType >
template<class ... DimArgs>
ScalarView< DataScalar, DeviceType > Intrepid2::Data< DataScalar, DeviceType >::allocateDynRankViewMatchingUnderlying ( DimArgs...  dims) const
inline

Returns a DynRankView that matches the underlying Kokkos::View object value_type and layout, but with the specified dimensions.

Definition at line 1670 of file Intrepid2_Data.hpp.

References Intrepid2::getMatchingViewWithLabel().

◆ allocateInPlaceCombinationResult()

template<class DataScalar , typename DeviceType >
static Data< DataScalar, DeviceType > Intrepid2::Data< DataScalar, DeviceType >::allocateInPlaceCombinationResult ( const Data< DataScalar, DeviceType > &  A,
const Data< DataScalar, DeviceType > &  B 
)
inlinestatic

Constructs a container suitable for storing the result of an in-place combination of the two provided data containers. The two containers must have the same logical shape.

See also
storeInPlaceCombination()
Parameters
A[in] - the first data container.
B[in] - the second data container. Must have the same logical shape as A.
Returns
A container with the same logical shape as A and B, with underlying View storage sufficient to store the result of A + B (or any other in-place combination).

Definition at line 1860 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::combinedDataDimensionInfo(), Intrepid2::Data< DataScalar, DeviceType >::extent_int(), INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

Referenced by Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ allocateMatMatResult()

template<class DataScalar , typename DeviceType >
static Data< DataScalar, DeviceType > Intrepid2::Data< DataScalar, DeviceType >::allocateMatMatResult ( const bool  transposeA,
const Data< DataScalar, DeviceType > &  A_MatData,
const bool  transposeB,
const Data< DataScalar, DeviceType > &  B_MatData 
)
inlinestatic

Constructs a container suitable for storing the result of a matrix-vector multiply corresponding to the two provided containers.

See also
storeMatMat()
Parameters
A_MatData[in] - logically (...,D1,D2)-dimensioned container, where D1,D2 correspond to matrix dimensions.
transposeA[in] - if true, A will be transposed prior to being multiplied by B (or B's transpose).
B_MatData[in] - logically (...,D3,D4)-dimensioned container, where D3,D4 correspond to matrix dimensions.
transposeB[in] - if true, B will be transposed prior to the multiplication by A (or A's transpose).

Definition at line 1880 of file Intrepid2_Data.hpp.

References Intrepid2::BLOCK_PLUS_DIAGONAL, Intrepid2::Data< DataScalar, DeviceType >::blockPlusDiagonalLastNonDiagonal(), Intrepid2::CONSTANT, Intrepid2::Data< DataScalar, DeviceType >::extent_int(), Intrepid2::GENERAL, Intrepid2::getMatchingViewWithLabel(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView1(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView2(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView3(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView4(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView5(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView6(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView7(), Intrepid2::Data< DataScalar, DeviceType >::getVariationModulus(), Intrepid2::Data< DataScalar, DeviceType >::getVariationTypes(), INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, Intrepid2::MODULAR, and Intrepid2::Data< DataScalar, DeviceType >::rank().

Referenced by Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ allocateMatVecResult()

template<class DataScalar , typename DeviceType >
static Data< DataScalar, DeviceType > Intrepid2::Data< DataScalar, DeviceType >::allocateMatVecResult ( const Data< DataScalar, DeviceType > &  matData,
const Data< DataScalar, DeviceType > &  vecData 
)
inlinestatic

◆ applyOperator()

template<class DataScalar , typename DeviceType >
template<class UnaryOperator >
void Intrepid2::Data< DataScalar, DeviceType >::applyOperator ( UnaryOperator  unaryOperator)
inline

applies the specified unary operator to each entry

Definition at line 811 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getDataExtent().

◆ blockPlusDiagonalBlockEntryIndex()

template<class DataScalar , typename DeviceType >
static KOKKOS_INLINE_FUNCTION int Intrepid2::Data< DataScalar, DeviceType >::blockPlusDiagonalBlockEntryIndex ( const int &  lastNondiagonal,
const int &  numNondiagonalEntries,
const int &  i,
const int &  j 
)
inlinestaticprivate

//! Returns flattened index of the specified (i,j) matrix entry, assuming that i,j ≤ lastNondiagonal. Only applicable for BLOCK_PLUS_DIAGONAL DataVariationType.

Definition at line 240 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::getWritableEntryWithPassThroughOption().

◆ blockPlusDiagonalDiagonalEntryIndex()

template<class DataScalar , typename DeviceType >
static KOKKOS_INLINE_FUNCTION int Intrepid2::Data< DataScalar, DeviceType >::blockPlusDiagonalDiagonalEntryIndex ( const int &  lastNondiagonal,
const int &  numNondiagonalEntries,
const int &  i 
)
inlinestaticprivate

Returns flattened index of the specified (i,i) matrix entry, assuming that i > lastNondiagonal. Only applicable for BLOCK_PLUS_DIAGONAL DataVariationType.

Definition at line 247 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::getWritableEntryWithPassThroughOption().

◆ blockPlusDiagonalLastNonDiagonal()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION const int & Intrepid2::Data< DataScalar, DeviceType >::blockPlusDiagonalLastNonDiagonal ( ) const
inline

For a Data object containing data with variation type BLOCK_PLUS_DIAGONAL, returns the row and column (which must match) of the last non-diagonal entry. For fully diagonal matrices, this is -1.

Definition at line 1395 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::allocateMatMatResult(), Intrepid2::CellTools< DeviceType >::setJacobianDet(), and Intrepid2::CellTools< DeviceType >::setJacobianInv().

◆ blockPlusDiagonalNumNondiagonalEntries()

template<class DataScalar , typename DeviceType >
static KOKKOS_INLINE_FUNCTION int Intrepid2::Data< DataScalar, DeviceType >::blockPlusDiagonalNumNondiagonalEntries ( const int &  lastNondiagonal)
inlinestaticprivate

Returns the number of non-diagonal entries based on the last non-diagonal. Only applicable for BLOCK_PLUS_DIAGONAL DataVariationType.

Definition at line 233 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::getWritableEntryWithPassThroughOption(), and Intrepid2::Data< DataScalar, DeviceType >::setActiveDims().

◆ clear()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::clear ( ) const
inline

Copies 0.0 to the underlying View.

Definition at line 1686 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ combinedDataDimensionInfo()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION DimensionInfo Intrepid2::Data< DataScalar, DeviceType >::combinedDataDimensionInfo ( const Data< DataScalar, DeviceType > &  otherData,
const int &  dim 
) const
inline

Returns (DataVariationType, data extent) in the specified dimension for a Data container that combines (through multiplication, say, or addition) this container with otherData.

Definition at line 1427 of file Intrepid2_Data.hpp.

References Intrepid2::combinedDimensionInfo(), and Intrepid2::Data< DataScalar, DeviceType >::getDimensionInfo().

Referenced by Intrepid2::Data< DataScalar, DeviceType >::allocateInPlaceCombinationResult().

◆ copyContainer()

template<class DataScalar , typename DeviceType >
template<class ToContainer , class FromContainer >
static void Intrepid2::Data< DataScalar, DeviceType >::copyContainer ( ToContainer  to,
FromContainer  from 
)
inlinestatic

Generic data copying method to allow construction of Data object from DynRankViews for which deep_copy() to the underlying view would be disallowed. This method made public to allow CUDA compilation (because it contains a Kokkos lambda).

Definition at line 1036 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::allocateAndCopyFromDynRankView(), Intrepid2::Data< DataScalar, DeviceType >::copyDataFromDynRankViewMatchingUnderlying(), and Intrepid2::Data< DataScalar, DeviceType >::Data().

◆ copyDataFromDynRankViewMatchingUnderlying()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::copyDataFromDynRankViewMatchingUnderlying ( const ScalarView< DataScalar, DeviceType > &  dynRankView) const
inline

Copies from the provided DynRankView into the underlying Kokkos::View container storing the unique data.

Definition at line 1718 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::copyContainer().

◆ dataExtentRangePolicy() [1/3]

template<class DataScalar , typename DeviceType >
template<int rank>
enable_if_t<(rank!=1) &&(rank!=7), Kokkos::MDRangePolicy< typename DeviceType::execution_space, Kokkos::Rank< rank > > > Intrepid2::Data< DataScalar, DeviceType >::dataExtentRangePolicy ( )
inline

returns an MDRangePolicy over the underlying data extents (but with the logical shape).

Definition at line 2189 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getDataExtent(), and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ dataExtentRangePolicy() [2/3]

template<class DataScalar , typename DeviceType >
template<int rank>
enable_if_t< rank==7, Kokkos::MDRangePolicy< typename DeviceType::execution_space, Kokkos::Rank< 6 > > > Intrepid2::Data< DataScalar, DeviceType >::dataExtentRangePolicy ( )
inline

returns an MDRangePolicy over the first six underlying data extents (but with the logical shape).

Definition at line 2207 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getDataExtent().

◆ dataExtentRangePolicy() [3/3]

template<class DataScalar , typename DeviceType >
template<int rank>
enable_if_t< rank==1, Kokkos::RangePolicy< typename DeviceType::execution_space > > Intrepid2::Data< DataScalar, DeviceType >::dataExtentRangePolicy ( )
inline

Definition at line 2225 of file Intrepid2_Data.hpp.

◆ extent()

template<class DataScalar , typename DeviceType >
template<typename iType >
KOKKOS_INLINE_FUNCTION constexpr std::enable_if< std::is_integral< iType >::value, size_t >::type Intrepid2::Data< DataScalar, DeviceType >::extent ( const iType &  r) const
inlineconstexpr

Definition at line 1826 of file Intrepid2_Data.hpp.

◆ extent_int()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::Data< DataScalar, DeviceType >::extent_int ( const int &  r) const
inline

Returns the logical extent in the specified dimension.

Definition at line 1818 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::CellGeometry< PointScalar, spaceDim, DeviceType >::allocateCellMeasure(), Intrepid2::Data< DataScalar, DeviceType >::allocateInPlaceCombinationResult(), Intrepid2::Data< DataScalar, DeviceType >::allocateMatMatResult(), Intrepid2::Data< DataScalar, DeviceType >::allocateMatVecResult(), Intrepid2::Impl::F_Integrate< Scalar, DeviceType, integralViewRank >::approximateFlopCountPerCell(), Intrepid2::Impl::F_IntegratePointValueCache< Scalar, DeviceType, integralViewRank >::approximateFlopCountPerCell(), Intrepid2::Data< DataScalar, DeviceType >::getDimensionInfo(), Intrepid2::IntegrationTools< DeviceType >::integrate(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::operator()(), Intrepid2::Impl::F_Integrate< Scalar, DeviceType, integralViewRank >::runSpecialized3(), Intrepid2::Impl::F_IntegratePointValueCache< Scalar, DeviceType, integralViewRank >::runSpecialized3(), Intrepid2::CellGeometry< PointScalar, spaceDim, DeviceType >::setJacobianDataPrivate(), Intrepid2::CellTools< DeviceType >::setJacobianDet(), Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination(), Intrepid2::Data< DataScalar, DeviceType >::storeMatMat(), Intrepid2::Data< DataScalar, DeviceType >::storeMatVec(), Intrepid2::Impl::F_IntegratePointValueCache< Scalar, DeviceType, integralViewRank >::team_shmem_size(), Intrepid2::Impl::F_Integrate< Scalar, DeviceType, integralViewRank >::team_shmem_size(), and Intrepid2::TensorArgumentIterator::TensorArgumentIterator().

◆ getDataExtent()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::Data< DataScalar, DeviceType >::getDataExtent ( const ordinal_type &  d) const
inline

◆ getDimensionInfo()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION DimensionInfo Intrepid2::Data< DataScalar, DeviceType >::getDimensionInfo ( const int &  dim) const
inline

Returns an object fully specifying the indicated dimension. This is used in determining appropriate sizing of Data objects that depend on other Data objects (e.g., when two matrix Data objects are multiplied together).

Definition at line 1409 of file Intrepid2_Data.hpp.

References Intrepid2::BLOCK_PLUS_DIAGONAL, Intrepid2::Data< DataScalar, DeviceType >::extent_int(), and Intrepid2::Data< DataScalar, DeviceType >::getDataExtent().

Referenced by Intrepid2::IntegrationTools< DeviceType >::allocateIntegralData(), and Intrepid2::Data< DataScalar, DeviceType >::combinedDataDimensionInfo().

◆ getEntry()

template<class DataScalar , typename DeviceType >
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION return_type Intrepid2::Data< DataScalar, DeviceType >::getEntry ( const IntArgs &...  intArgs) const
inline

Returns a (read-only) value corresponding to the specified logical data location.

Definition at line 1786 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getEntryWithPassThroughOption().

Referenced by Intrepid2::Data< DataScalar, DeviceType >::operator()().

◆ getEntryWithPassThroughOption()

template<class DataScalar , typename DeviceType >
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION return_type Intrepid2::Data< DataScalar, DeviceType >::getEntryWithPassThroughOption ( const bool &  passThroughBlockDiagonalArgs,
const IntArgs &...  intArgs 
) const
inline

Returns a (read-only) value corresponding to the specified logical data location. If passThroughBlockDiagonalArgs is TRUE, the corresponding arguments are interpreted as entries in the 1D packed matrix rather than as logical 2D matrix row and column.

Definition at line 1778 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getWritableEntryWithPassThroughOption().

Referenced by Intrepid2::Data< DataScalar, DeviceType >::getEntry().

◆ getExtents()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION Kokkos::Array< int, 7 > Intrepid2::Data< DataScalar, DeviceType >::getExtents ( ) const
inline

◆ getUnderlyingView() [1/8]

template<class DataScalar , typename DeviceType >
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==1, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView ( ) const
inline

◆ getUnderlyingView() [2/8]

template<class DataScalar , typename DeviceType >
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==2, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView ( ) const
inline

Returns the underlying view. Throws an exception if the underlying view is not rank 2.

Definition at line 1451 of file Intrepid2_Data.hpp.

References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ getUnderlyingView() [3/8]

template<class DataScalar , typename DeviceType >
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==3, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView ( ) const
inline

Returns the underlying view. Throws an exception if the underlying view is not rank 3.

Definition at line 1463 of file Intrepid2_Data.hpp.

References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ getUnderlyingView() [4/8]

template<class DataScalar , typename DeviceType >
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==4, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView ( ) const
inline

Returns the underlying view. Throws an exception if the underlying view is not rank 4.

Definition at line 1475 of file Intrepid2_Data.hpp.

References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ getUnderlyingView() [5/8]

template<class DataScalar , typename DeviceType >
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==5, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView ( ) const
inline

Returns the underlying view. Throws an exception if the underlying view is not rank 5.

Definition at line 1487 of file Intrepid2_Data.hpp.

References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ getUnderlyingView() [6/8]

template<class DataScalar , typename DeviceType >
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==6, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView ( ) const
inline

Returns the underlying view. Throws an exception if the underlying view is not rank 6.

Definition at line 1499 of file Intrepid2_Data.hpp.

References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ getUnderlyingView() [7/8]

template<class DataScalar , typename DeviceType >
template<int rank>
KOKKOS_INLINE_FUNCTION enable_if_t< rank==7, const Kokkos::View< typename RankExpander< DataScalar, rank >::value_type, DeviceType > & > Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView ( ) const
inline

Returns the underlying view. Throws an exception if the underlying view is not rank 7.

Definition at line 1511 of file Intrepid2_Data.hpp.

References INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ getUnderlyingView() [8/8]

template<class DataScalar , typename DeviceType >
ScalarView< DataScalar, DeviceType > Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView ( ) const
inline

Returns a DynRankView constructed atop the same underlying data as the fixed-rank Kokkos::View used internally.

Definition at line 1618 of file Intrepid2_Data.hpp.

◆ getUnderlyingView1()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar *, DeviceType > & Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView1 ( ) const
inline

◆ getUnderlyingView2()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar **, DeviceType > & Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView2 ( ) const
inline

◆ getUnderlyingView3()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar ***, DeviceType > & Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView3 ( ) const
inline

◆ getUnderlyingView4()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar ****, DeviceType > & Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView4 ( ) const
inline

◆ getUnderlyingView5()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar *****, DeviceType > & Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView5 ( ) const
inline

returns the View that stores the unique data. For rank-5 underlying containers.

Definition at line 1549 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::allocateMatMatResult(), and Intrepid2::Data< DataScalar, DeviceType >::Data().

◆ getUnderlyingView6()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar ******, DeviceType > & Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView6 ( ) const
inline

returns the View that stores the unique data. For rank-6 underlying containers.

Definition at line 1556 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::allocateMatMatResult(), and Intrepid2::Data< DataScalar, DeviceType >::Data().

◆ getUnderlyingView7()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION const Kokkos::View< DataScalar *******, DeviceType > & Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView7 ( ) const
inline

returns the View that stores the unique data. For rank-7 underlying containers.

Definition at line 1563 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::allocateMatMatResult(), and Intrepid2::Data< DataScalar, DeviceType >::Data().

◆ getUnderlyingViewExtent()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingViewExtent ( const int &  dim) const
inlineprivate

◆ getUnderlyingViewRank()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION ordinal_type Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingViewRank ( ) const
inline

◆ getUnderlyingViewSize()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION ordinal_type Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingViewSize ( ) const
inline

◆ getVariationModulus()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION int Intrepid2::Data< DataScalar, DeviceType >::getVariationModulus ( const int &  d) const
inline

Variation modulus accessor.

Parameters
[in]d- the logical dimension whose variation modulus is requested.
Returns
the variation modulus.

The variation modulus is defined as the number of unique entries in the specified dimension. This is defined as follows:

  • for CONSTANT variation, the variation modulus is 1
  • for MODULAR variation, the variation modulus is exactly the modulus by which the data repeats in the specified dimension
  • for GENERAL variation, the variation modulus is the extent in the specified dimension
  • for BLOCK_PLUS_DIAGONAL, the variation modulus in the first logical dimension of the matrix is the number of nonzeros in the matrix; in the second logical dimension the variation modulus is 1.

Definition at line 1763 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::allocateMatMatResult(), and Intrepid2::Data< DataScalar, DeviceType >::allocateMatVecResult().

◆ getVariationTypes()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION const Kokkos::Array< DataVariationType, 7 > & Intrepid2::Data< DataScalar, DeviceType >::getVariationTypes ( ) const
inline

◆ getWritableEntry()

template<class DataScalar , typename DeviceType >
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION reference_type Intrepid2::Data< DataScalar, DeviceType >::getWritableEntry ( const IntArgs...  intArgs) const
inline

Returns an l-value reference to the specified logical entry in the underlying view. Note that for variation types other than GENERAL, multiple valid argument sets will refer to the same memory location. Intended for Intrepid2 developers and expert users only. If passThroughBlockDiagonalArgs is TRUE, the corresponding arguments are interpreted as entries in the 1D packed matrix rather than as logical 2D matrix row and column.

Definition at line 1029 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getWritableEntryWithPassThroughOption().

Referenced by Intrepid2::Data< DataScalar, DeviceType >::storeMatMat(), and Intrepid2::Data< DataScalar, DeviceType >::storeMatVec().

◆ getWritableEntryWithPassThroughOption()

template<class DataScalar , typename DeviceType >
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION reference_type Intrepid2::Data< DataScalar, DeviceType >::getWritableEntryWithPassThroughOption ( const bool &  passThroughBlockDiagonalArgs,
const IntArgs...  intArgs 
) const
inline

Returns an l-value reference to the specified logical entry in the underlying view. Note that for variation types other than GENERAL, multiple valid argument sets will refer to the same memory location. Intended for Intrepid2 developers and expert users only. If passThroughBlockDiagonalArgs is TRUE, the corresponding arguments are interpreted as entries in the 1D packed matrix rather than as logical 2D matrix row and column.

Definition at line 916 of file Intrepid2_Data.hpp.

References Intrepid2::BLOCK_PLUS_DIAGONAL, Intrepid2::Data< DataScalar, DeviceType >::blockPlusDiagonalBlockEntryIndex(), Intrepid2::Data< DataScalar, DeviceType >::blockPlusDiagonalDiagonalEntryIndex(), Intrepid2::Data< DataScalar, DeviceType >::blockPlusDiagonalNumNondiagonalEntries(), Intrepid2::CONSTANT, Intrepid2::GENERAL, INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::MODULAR.

Referenced by Intrepid2::Data< DataScalar, DeviceType >::getEntryWithPassThroughOption(), and Intrepid2::Data< DataScalar, DeviceType >::getWritableEntry().

◆ isDiagonal()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION bool Intrepid2::Data< DataScalar, DeviceType >::isDiagonal ( ) const
inline

returns true for containers that have two dimensions marked as BLOCK_PLUS_DIAGONAL for which the non-diagonal block is empty or size 1.

Definition at line 1831 of file Intrepid2_Data.hpp.

References Intrepid2::BLOCK_PLUS_DIAGONAL, and INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE.

Referenced by Intrepid2::TransformedBasisValues< Scalar, DeviceType >::axisAligned(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::operator()(), and Intrepid2::TransformedBasisValues< Scalar, DeviceType >::TransformedBasisValues().

◆ isValid()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION constexpr bool Intrepid2::Data< DataScalar, DeviceType >::isValid ( ) const
inlineconstexpr

◆ operator()()

template<class DataScalar , typename DeviceType >
template<class ... IntArgs>
KOKKOS_INLINE_FUNCTION enable_if_t< valid_args< IntArgs... >::value &&(sizeof...(IntArgs)<=7), return_type > Intrepid2::Data< DataScalar, DeviceType >::operator() ( const IntArgs &...  intArgs) const
inline

Returns a value corresponding to the specified logical data location.

Definition at line 1812 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getEntry().

◆ rank()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION unsigned Intrepid2::Data< DataScalar, DeviceType >::rank ( ) const
inline

◆ setActiveDims()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::setActiveDims ( )
inlineprivate

◆ setExtent()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::setExtent ( const ordinal_type &  d,
const ordinal_type &  newExtent 
)
inline

sets the logical extent in the specified dimension. If needed, the underlying data container is resized.

Parameters
[in]d- the logical dimension in which the extent is to be changed
[in]newExtent- the new extent
Note
Not supported for dimensions in which the variation type is BLOCK_PLUS_DIAGONAL.
If the variation type is MODULAR, the existing modulus must evenly divide the new extent; the underlying data structure will not be resized in this case.

Definition at line 2549 of file Intrepid2_Data.hpp.

References Intrepid2::BLOCK_PLUS_DIAGONAL, Intrepid2::GENERAL, Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingViewExtent(), and Intrepid2::MODULAR.

◆ setUnderlyingView1()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION void Intrepid2::Data< DataScalar, DeviceType >::setUnderlyingView1 ( Kokkos::View< DataScalar *, DeviceType > &  view) const
inline

sets the View that stores the unique data. For rank-1 underlying containers.

Definition at line 1570 of file Intrepid2_Data.hpp.

◆ setUnderlyingView2()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION void Intrepid2::Data< DataScalar, DeviceType >::setUnderlyingView2 ( Kokkos::View< DataScalar **, DeviceType > &  view) const
inline

sets the View that stores the unique data. For rank-2 underlying containers.

Definition at line 1577 of file Intrepid2_Data.hpp.

◆ setUnderlyingView3()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION void Intrepid2::Data< DataScalar, DeviceType >::setUnderlyingView3 ( Kokkos::View< DataScalar ***, DeviceType > &  view) const
inline

sets the View that stores the unique data. For rank-3 underlying containers.

Definition at line 1584 of file Intrepid2_Data.hpp.

◆ setUnderlyingView4()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION void Intrepid2::Data< DataScalar, DeviceType >::setUnderlyingView4 ( Kokkos::View< DataScalar ****, DeviceType > &  view) const
inline

sets the View that stores the unique data. For rank-4 underlying containers.

Definition at line 1591 of file Intrepid2_Data.hpp.

◆ setUnderlyingView5()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION void Intrepid2::Data< DataScalar, DeviceType >::setUnderlyingView5 ( Kokkos::View< DataScalar *****, DeviceType > &  view) const
inline

sets the View that stores the unique data. For rank-5 underlying containers.

Definition at line 1598 of file Intrepid2_Data.hpp.

◆ setUnderlyingView6()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION void Intrepid2::Data< DataScalar, DeviceType >::setUnderlyingView6 ( Kokkos::View< DataScalar ******, DeviceType > &  view) const
inline

sets the View that stores the unique data. For rank-6 underlying containers.

Definition at line 1605 of file Intrepid2_Data.hpp.

◆ setUnderlyingView7()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION void Intrepid2::Data< DataScalar, DeviceType >::setUnderlyingView7 ( Kokkos::View< DataScalar *******, DeviceType > &  view) const
inline

sets the View that stores the unique data. For rank-7 underlying containers.

Definition at line 1612 of file Intrepid2_Data.hpp.

◆ shallowCopy()

template<class DataScalar , typename DeviceType >
Data Intrepid2::Data< DataScalar, DeviceType >::shallowCopy ( const int  rank,
const Kokkos::Array< int, 7 > &  extents,
const Kokkos::Array< DataVariationType, 7 > &  variationTypes 
)
inline

Creates a new Data object with the same underlying view, but with the specified logical rank, extents, and variation types.

Definition at line 2233 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::Data().

Referenced by Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ storeInPlaceCombination() [1/4]

template<class DataScalar , typename DeviceType >
template<class BinaryOperator , int rank>
enable_if_t< rank !=7, void > Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination ( const Data< DataScalar, DeviceType > &  A,
const Data< DataScalar, DeviceType > &  B,
BinaryOperator  binaryOperator 
)
inline

◆ storeInPlaceCombination() [2/4]

template<class DataScalar , typename DeviceType >
template<class BinaryOperator , int rank>
enable_if_t< rank==7, void > Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination ( const Data< DataScalar, DeviceType > &  A,
const Data< DataScalar, DeviceType > &  B,
BinaryOperator  binaryOperator 
)
inline

storeInPlaceCombination with compile-time rank – implementation for rank of 7. (Not optimized; expectation is this case will be rarely used.)

Definition at line 793 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::getDataExtent().

◆ storeInPlaceCombination() [3/4]

template<class DataScalar , typename DeviceType >
template<class BinaryOperator >
void Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination ( const Data< DataScalar, DeviceType > &  A,
const Data< DataScalar, DeviceType > &  B,
BinaryOperator  binaryOperator 
)
inline

◆ storeInPlaceCombination() [4/4]

template<class DataScalar , typename DeviceType >
template<class BinaryOperator , class PolicyType , class ThisUnderlyingViewType , class AUnderlyingViewType , class BUnderlyingViewType , class ArgExtractorThis , class ArgExtractorA , class ArgExtractorB >
void Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination ( PolicyType &  policy,
ThisUnderlyingViewType &  this_underlying,
AUnderlyingViewType &  A_underlying,
BUnderlyingViewType &  B_underlying,
BinaryOperator &  binaryOperator,
ArgExtractorThis  argThis,
ArgExtractorA  argA,
ArgExtractorB  argB 
)
inline

◆ storeInPlaceDifference()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceDifference ( const Data< DataScalar, DeviceType > &  A,
const Data< DataScalar, DeviceType > &  B 
)
inline

stores the in-place (entrywise) difference, A .- B, into this container.

Definition at line 2322 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination().

◆ storeInPlaceProduct()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceProduct ( const Data< DataScalar, DeviceType > &  A,
const Data< DataScalar, DeviceType > &  B 
)
inline

stores the in-place (entrywise) product, A .* B, into this container.

Definition at line 2312 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination().

Referenced by Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ storeInPlaceQuotient()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceQuotient ( const Data< DataScalar, DeviceType > &  A,
const Data< DataScalar, DeviceType > &  B 
)
inline

stores the in-place (entrywise) quotient, A ./ B, into this container.

Definition at line 2332 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination().

Referenced by Intrepid2::CellTools< DeviceType >::setJacobianDetInv().

◆ storeInPlaceSum()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceSum ( const Data< DataScalar, DeviceType > &  A,
const Data< DataScalar, DeviceType > &  B 
)
inline

stores the in-place (entrywise) sum, A .+ B, into this container.

Definition at line 2302 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination().

◆ storeMatMat()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::storeMatMat ( const bool  transposeA,
const Data< DataScalar, DeviceType > &  A_MatData,
const bool  transposeB,
const Data< DataScalar, DeviceType > &  B_MatData 
)
inline

Places the result of a matrix-matrix multiply corresponding to the two provided containers into this Data container. This Data container should have been constructed by a call to allocateMatMatResult(), or should match such a container in underlying data extent and variation types.

See also
allocateMatMat()
Parameters
A_MatData[in] - logically (...,D1,D2)-dimensioned container, where D1,D2 correspond to matrix dimensions.
transposeA[in] - if true, A will be transposed prior to being multiplied by B (or B's transpose).
B_MatData[in] - logically (...,D3,D4)-dimensioned container, where D3,D4 correspond to matrix dimensions.
transposeB[in] - if true, B will be transposed prior to the multiplication by A (or A's transpose).

Definition at line 2410 of file Intrepid2_Data.hpp.

References Intrepid2::BLOCK_PLUS_DIAGONAL, Intrepid2::Data< DataScalar, DeviceType >::extent_int(), Intrepid2::Data< DataScalar, DeviceType >::getDataExtent(), Intrepid2::Data< DataScalar, DeviceType >::getUnderlyingView4(), Intrepid2::Data< DataScalar, DeviceType >::getWritableEntry(), INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

Referenced by Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ storeMatVec()

template<class DataScalar , typename DeviceType >
void Intrepid2::Data< DataScalar, DeviceType >::storeMatVec ( const Data< DataScalar, DeviceType > &  matData,
const Data< DataScalar, DeviceType > &  vecData 
)
inline

Places the result of a matrix-vector multiply corresponding to the two provided containers into this Data container. This Data container should have been constructed by a call to allocateMatVecResult(), or should match such a container in underlying data extent and variation types.

Definition at line 2342 of file Intrepid2_Data.hpp.

References Intrepid2::Data< DataScalar, DeviceType >::extent_int(), Intrepid2::Data< DataScalar, DeviceType >::getDataExtent(), Intrepid2::Data< DataScalar, DeviceType >::getWritableEntry(), INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE, and Intrepid2::Data< DataScalar, DeviceType >::rank().

◆ underlyingMatchesLogical()

template<class DataScalar , typename DeviceType >
KOKKOS_INLINE_FUNCTION bool Intrepid2::Data< DataScalar, DeviceType >::underlyingMatchesLogical ( ) const
inline

Returns true if the underlying container has exactly the same rank and extents as the logical container.

Definition at line 2602 of file Intrepid2_Data.hpp.

Referenced by Intrepid2::Impl::F_Integrate< Scalar, DeviceType, integralViewRank >::runSpecialized3(), and Intrepid2::Data< DataScalar, DeviceType >::storeInPlaceCombination().

Member Data Documentation

◆ activeDims_

template<class DataScalar , typename DeviceType >
Kokkos::Array<ordinal_type,7> Intrepid2::Data< DataScalar, DeviceType >::activeDims_
private

Definition at line 219 of file Intrepid2_Data.hpp.

◆ blockPlusDiagonalLastNonDiagonal_

template<class DataScalar , typename DeviceType >
int Intrepid2::Data< DataScalar, DeviceType >::blockPlusDiagonalLastNonDiagonal_ = -1
private

Definition at line 215 of file Intrepid2_Data.hpp.

◆ data1_

template<class DataScalar , typename DeviceType >
Kokkos::View<DataScalar*, DeviceType> Intrepid2::Data< DataScalar, DeviceType >::data1_
private

Definition at line 205 of file Intrepid2_Data.hpp.

◆ data2_

template<class DataScalar , typename DeviceType >
Kokkos::View<DataScalar**, DeviceType> Intrepid2::Data< DataScalar, DeviceType >::data2_
private

Definition at line 206 of file Intrepid2_Data.hpp.

◆ data3_

template<class DataScalar , typename DeviceType >
Kokkos::View<DataScalar***, DeviceType> Intrepid2::Data< DataScalar, DeviceType >::data3_
private

Definition at line 207 of file Intrepid2_Data.hpp.

◆ data4_

template<class DataScalar , typename DeviceType >
Kokkos::View<DataScalar****, DeviceType> Intrepid2::Data< DataScalar, DeviceType >::data4_
private

Definition at line 208 of file Intrepid2_Data.hpp.

◆ data5_

template<class DataScalar , typename DeviceType >
Kokkos::View<DataScalar*****, DeviceType> Intrepid2::Data< DataScalar, DeviceType >::data5_
private

Definition at line 209 of file Intrepid2_Data.hpp.

◆ data6_

template<class DataScalar , typename DeviceType >
Kokkos::View<DataScalar******, DeviceType> Intrepid2::Data< DataScalar, DeviceType >::data6_
private

Definition at line 210 of file Intrepid2_Data.hpp.

◆ data7_

template<class DataScalar , typename DeviceType >
Kokkos::View<DataScalar*******, DeviceType> Intrepid2::Data< DataScalar, DeviceType >::data7_
private

Definition at line 211 of file Intrepid2_Data.hpp.

◆ dataRank_

template<class DataScalar , typename DeviceType >
ordinal_type Intrepid2::Data< DataScalar, DeviceType >::dataRank_
private

Definition at line 204 of file Intrepid2_Data.hpp.

◆ extents_

template<class DataScalar , typename DeviceType >
Kokkos::Array<int,7> Intrepid2::Data< DataScalar, DeviceType >::extents_
private

Definition at line 212 of file Intrepid2_Data.hpp.

◆ hasNontrivialModulusUNUSED_

template<class DataScalar , typename DeviceType >
bool Intrepid2::Data< DataScalar, DeviceType >::hasNontrivialModulusUNUSED_
private

Definition at line 217 of file Intrepid2_Data.hpp.

◆ numActiveDims_

template<class DataScalar , typename DeviceType >
int Intrepid2::Data< DataScalar, DeviceType >::numActiveDims_
private

Definition at line 220 of file Intrepid2_Data.hpp.

◆ rank_

template<class DataScalar , typename DeviceType >
ordinal_type Intrepid2::Data< DataScalar, DeviceType >::rank_
private

Definition at line 222 of file Intrepid2_Data.hpp.

◆ underlyingMatchesLogical_

template<class DataScalar , typename DeviceType >
bool Intrepid2::Data< DataScalar, DeviceType >::underlyingMatchesLogical_
private

Definition at line 218 of file Intrepid2_Data.hpp.

◆ variationModulus_

template<class DataScalar , typename DeviceType >
Kokkos::Array<int,7> Intrepid2::Data< DataScalar, DeviceType >::variationModulus_
private

Definition at line 214 of file Intrepid2_Data.hpp.

◆ variationType_

template<class DataScalar , typename DeviceType >
Kokkos::Array<DataVariationType,7> Intrepid2::Data< DataScalar, DeviceType >::variationType_
private

Definition at line 213 of file Intrepid2_Data.hpp.

◆ zeroView_

template<class DataScalar , typename DeviceType >
ScalarView<DataScalar,DeviceType> Intrepid2::Data< DataScalar, DeviceType >::zeroView_
private

Definition at line 229 of file Intrepid2_Data.hpp.


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