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

Utility class that provides methods for higher-order algebraic manipulation of user-defined arrays, such as tensor contractions. For low-order operations, see Intrepid2::RealSpaceTools. More...

#include <Intrepid2_ArrayTools.hpp>

Classes

class  Internal
 

Public Member Functions

template<typename outputValueType , class... outputProperties, typename inputValueType , class... inputProperties>
void cloneFields (Kokkos::DynRankView< outputValueType, outputProperties...> output, const Kokkos::DynRankView< inputValueType, inputProperties...> input)
 
template<typename outputValueType , class... outputProperties, typename inputValueType , class... inputProperties>
void cloneData (Kokkos::DynRankView< outputValueType, outputProperties...> output, const Kokkos::DynRankView< inputValueType, inputProperties...> input)
 

Static Public Member Functions

template<typename outputFieldValueType , class... outputFieldProperties, typename leftFieldValueType , class... leftFieldProperties, typename rightFieldValueType , class... rightFieldProperties>
static void contractFieldFieldScalar (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties...> leftFields, const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties...> rightFields, const bool sumInto=false)
 Contracts the "point" dimension P of two rank-3 containers with dimensions (C,L,P) and (C,R,P), and returns the result in a rank-3 container with dimensions (C,L,R). More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename leftFieldValueType , class... leftFieldProperties, typename rightFieldValueType , class... rightFieldProperties>
static void contractFieldFieldVector (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties...> leftFields, const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties...> rightFields, const bool sumInto=false)
 Contracts the "point" and "space" dimensions P and D1 of two rank-4 containers with dimensions (C,L,P,D1) and (C,R,P,D1), and returns the result in a rank-3 container with dimensions (C,L,R). More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename leftFieldValueType , class... leftFieldProperties, typename rightFieldValueType , class... rightFieldProperties>
static void contractFieldFieldTensor (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties...> leftFields, const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties...> rightFields, const bool sumInto=false)
 Contracts the "point" and "space" dimensions P, D1, and D2 of two rank-5 containers with dimensions (C,L,P,D1,D2) and (C,R,P,D1,D2), and returns the result in a rank-3 container with dimensions (C,L,R). More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
static void contractDataFieldScalar (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const bool sumInto=false)
 Contracts the "point" dimensions P of a rank-3 containers and a rank-2 container with dimensions (C,F,P) and (C,P), respectively, and returns the result in a rank-2 container with dimensions (C,F). More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
static void contractDataFieldVector (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const bool sumInto=false)
 Contracts the "point" and "space" dimensions P and D of a rank-4 container and a rank-3 container with dimensions (C,F,P,D) and (C,P,D), respectively, and returns the result in a rank-2 container with dimensions (C,F). More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
static void contractDataFieldTensor (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const bool sumInto=false)
 Contracts the "point" and "space" dimensions P, D1 and D2 of a rank-5 container and a rank-4 container with dimensions (C,F,P,D1,D2) and (C,P,D1,D2), respectively, and returns the result in a rank-2 container with dimensions (C,F). More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
static void contractDataDataScalar (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const bool sumInto=false)
 Contracts the "point" dimensions P of rank-2 containers with dimensions (C,P), and returns the result in a rank-1 container with dimensions (C). More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
static void contractDataDataVector (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const bool sumInto=false)
 Contracts the "point" and "space" dimensions P and D of rank-3 containers with dimensions (C,P,D) and returns the result in a rank-1 container with dimensions (C). More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
static void contractDataDataTensor (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const bool sumInto=false)
 Contracts the "point" and "space" dimensions P, D1 and D2 of rank-4 containers with dimensions (C,P,D1,D2) and returns the result in a rank-1 container with dimensions (C). More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
static void scalarMultiplyDataField (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const bool reciprocal=false)
 There are two use cases: (1) multiplies a rank-3, 4, or 5 container inputFields with dimensions (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2), representing the values of a set of scalar, vector or tensor fields, by the values in a rank-2 container inputData indexed by (C,P), representing the values of scalar data, OR (2) multiplies a rank-2, 3, or 4 container inputFields with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or a tensor field, by the values in a rank-2 container inputData indexed by (C,P), representing the values of scalar data; the output value container outputFields is indexed by (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2), regardless of which of the two use cases is considered. More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
static void scalarMultiplyDataData (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const bool reciprocal=false)
 There are two use cases: (1) multiplies a rank-2, 3, or 4 container inputDataRight with dimensions (C,P), (C,P,D1) or (C,P,D1,D2), representing the values of a set of scalar, vector or tensor data, by the values in a rank-2 container inputDataLeft indexed by (C,P), representing the values of scalar data, OR (2) multiplies a rank-1, 2, or 3 container inputDataRight with dimensions (P), (P,D1) or (P,D1,D2), representing the values of scalar, vector or tensor data, by the values in a rank-2 container inputDataLeft indexed by (C,P), representing the values of scalar data; the output value container outputData is indexed by (C,P), (C,P,D1) or (C,P,D1,D2), regardless of which of the two use cases is considered. More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
static void dotMultiplyDataField (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields)
 There are two use cases: (1) dot product of a rank-3, 4 or 5 container inputFields with dimensions (C,F,P) (C,F,P,D1) or (C,F,P,D1,D2), representing the values of a set of scalar, vector or tensor fields, by the values in a rank-2, 3 or 4 container inputData indexed by (C,P), (C,P,D1), or (C,P,D1,D2) representing the values of scalar, vector or tensor data, OR (2) dot product of a rank-2, 3 or 4 container inputFields with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or tensor field, by the values in a rank-2 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), representing the values of scalar, vector or tensor data; the output value container outputFields is indexed by (C,F,P), regardless of which of the two use cases is considered. More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
static void dotMultiplyDataData (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight)
 There are two use cases: (1) dot product of a rank-2, 3 or 4 container inputDataRight with dimensions (C,P) (C,P,D1) or (C,P,D1,D2), representing the values of a scalar, vector or a tensor set of data, by the values in a rank-2, 3 or 4 container inputDataLeft indexed by (C,P), (C,P,D1), or (C,P,D1,D2) representing the values of scalar, vector or tensor data, OR (2) dot product of a rank-2, 3 or 4 container inputDataRight with dimensions (P), (P,D1) or (P,D1,D2), representing the values of scalar, vector or tensor data, by the values in a rank-2 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), representing the values of scalar, vector, or tensor data; the output value container outputData is indexed by (C,P), regardless of which of the two use cases is considered. More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
static void crossProductDataField (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields)
 There are two use cases: (1) cross product of a rank-4 container inputFields with dimensions (C,F,P,D), representing the values of a set of vector fields, on the left by the values in a rank-3 container inputData indexed by (C,P,D), representing the values of vector data, OR (2) cross product of a rank-3 container inputFields with dimensions (F,P,D), representing the values of a vector field, on the left by the values in a rank-3 container inputData indexed by (C,P,D), representing the values of vector data; the output value container outputFields is indexed by (C,F,P,D) in 3D (vector output) and by (C,F,P) in 2D (scalar output), regardless of which of the two use cases is considered. More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
static void crossProductDataData (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight)
 There are two use cases: (1) cross product of a rank-3 container inputDataRight with dimensions (C,P,D), representing the values of a set of vector data, on the left by the values in a rank-3 container inputDataLeft indexed by (C,P,D) representing the values of vector data, OR (2) cross product of a rank-2 container inputDataRight with dimensions (P,D), representing the values of vector data, on the left by the values in a rank-3 container inputDataLeft indexed by (C,P,D), representing the values of vector data; the output value container outputData is indexed by (C,P,D) in 3D (vector output) and by (C,P) in 2D (scalar output), regardless of which of the two use cases is considered. More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
static void outerProductDataField (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields)
 There are two use cases: (1) outer product of a rank-4 container inputFields with dimensions (C,F,P,D), representing the values of a set of vector fields, on the left by the values in a rank-3 container inputData indexed by (C,P,D), representing the values of vector data, OR (2) outer product of a rank-3 container inputFields with dimensions (F,P,D), representing the values of a vector field, on the left by the values in a rank-3 container inputData indexed by (C,P,D), representing the values of vector data; the output value container outputFields is indexed by (C,F,P,D,D), regardless of which of the two use cases is considered. More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValuetype , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
static void outerProductDataData (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValuetype, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight)
 There are two use cases: (1) outer product of a rank-3 container inputDataRight with dimensions (C,P,D), representing the values of a set of vector data, on the left by the values in a rank-3 container inputDataLeft indexed by (C,P,D) representing the values of vector data, OR (2) outer product of a rank-2 container inputDataRight with dimensions (P,D), representing the values of vector data, on the left by the values in a rank-3 container inputDataLeft indexed by (C,P,D), representing the values of vector data; the output value container outputData is indexed by (C,P,D,D), regardless of which of the two use cases is considered. More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
static void matvecProductDataField (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const char transpose= 'N')
 There are two use cases: (1) matrix-vector product of a rank-4 container inputFields with dimensions (C,F,P,D), representing the values of a set of vector fields, on the left by the values in a rank-2, 3, or 4 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data, OR (2) matrix-vector product of a rank-3 container inputFields with dimensions (F,P,D), representing the values of a vector field, on the left by the values in a rank-2, 3, or 4 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data; the output value container outputFields is indexed by (C,F,P,D), regardless of which of the two use cases is considered. More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
static void matvecProductDataData (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const char transpose= 'N')
 There are two use cases: (1) matrix-vector product of a rank-3 container inputDataRight with dimensions (C,P,D), representing the values of a set of vector data, on the left by the values in a rank-2, 3, or 4 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data, OR (2) matrix-vector product of a rank-2 container inputDataRight with dimensions (P,D), representing the values of vector data, on the left by the values in a rank-2, 3, or 4 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data; the output value container outputData is indexed by (C,P,D), regardless of which of the two use cases is considered. More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
static void matmatProductDataField (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields, const char transpose= 'N')
 There are two use cases: (1) matrix-matrix product of a rank-5 container inputFields with dimensions (C,F,P,D1,D2), representing the values of a set of tensor fields, on the left by the values in a rank-2, 3, or 4 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data, OR (2) matrix-matrix product of a rank-4 container inputFields with dimensions (F,P,D1,D2), representing the values of a tensor field, on the left by the values in a rank-2, 3, or 4 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data; the output value container outputFields is indexed by (C,F,P,D1,D2), regardless of which of the two use cases is considered. More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
static void matmatProductDataData (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...> inputDataLeft, const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...> inputDataRight, const char transpose= 'N')
 There are two use cases: (1) matrix-matrix product of a rank-4 container inputDataRight with dimensions (C,P,D1,D2), representing the values of a set of tensor data, on the left by the values in a rank-2, 3, or 4 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data, OR (2) matrix-matrix product of a rank-3 container inputDataRight with dimensions (P,D1,D2), representing the values of tensor data, on the left by the values in a rank-2, 3, or 4 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data; the output value container outputData is indexed by (C,P,D1,D2), regardless of which of the two use cases is considered. More...
 
template<typename outputFieldValueType , class... outputFieldProperties, typename inputFieldValueType , class... inputFieldProperties>
static void cloneFields (Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...> outputFields, const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...> inputFields)
 Replicates a rank-2, 3, or 4 container with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or a tensor field, into an output value container of size (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2). More...
 
template<typename outputDataValueType , class... outputDataProperties, typename inputDataValueType , class... inputDataProperties>
static void cloneData (Kokkos::DynRankView< outputDataValueType, outputDataProperties...> outputData, const Kokkos::DynRankView< inputDataValueType, inputDataProperties...> inputData)
 Replicates a rank-2, 3, or 4 container with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or a tensor field, into an output value container of size (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2). More...
 

Private Types

using ExecSpaceType = typename DeviceType::execution_space
 

Detailed Description

template<typename DeviceType>
class Intrepid2::ArrayTools< DeviceType >

Utility class that provides methods for higher-order algebraic manipulation of user-defined arrays, such as tensor contractions. For low-order operations, see Intrepid2::RealSpaceTools.

Note:

Definition at line 44 of file Intrepid2_ArrayTools.hpp.

Member Function Documentation

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataValueType , class... inputDataProperties>
static void Intrepid2::ArrayTools< DeviceType >::cloneData ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData 
)
static

Replicates a rank-2, 3, or 4 container with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or a tensor field, into an output value container of size (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2).

C - num. integration domains
F - num. fields
P - num. integration points
D1 - first spatial (tensor) dimension index
D2 - second spatial (tensor) dimension index
Parameters
outputData[out] - Output data array.
inputData[in] - Input data array.
template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputFieldValueType , class... inputFieldProperties>
static void Intrepid2::ArrayTools< DeviceType >::cloneFields ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields 
)
static

Replicates a rank-2, 3, or 4 container with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or a tensor field, into an output value container of size (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2).

C - num. integration domains
F - num. fields
P - num. integration points
D1 - first spatial (tensor) dimension index
D2 - second spatial (tensor) dimension index
Parameters
outputFields[out] - Output fields array.
inputFields[in] - Input fields array.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::HGRADtransformVALUE(), Intrepid2::FunctionSpaceTools< DeviceType >::mapHGradDataFromPhysSideToRefSide(), and Intrepid2::FunctionSpaceTools< DeviceType >::mapHGradDataFromPhysToRef().

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
void Intrepid2::ArrayTools< DeviceType >::contractDataDataScalar ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...>  inputDataLeft,
const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...>  inputDataRight,
const bool  sumInto = false 
)
static

Contracts the "point" dimensions P of rank-2 containers with dimensions (C,P), and returns the result in a rank-1 container with dimensions (C).

C - num. integration domains dim0 in both input containers
P - num. integration points dim1 in both input containers
Parameters
outputData[out] - Output data array.
inputDataLeft[in] - Left data input array.
inputDataRight[in] - Right data input array.
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.

Definition at line 479 of file Intrepid2_ArrayToolsDefContractions.hpp.

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

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
void Intrepid2::ArrayTools< DeviceType >::contractDataDataTensor ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...>  inputDataLeft,
const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...>  inputDataRight,
const bool  sumInto = false 
)
static

Contracts the "point" and "space" dimensions P, D1 and D2 of rank-4 containers with dimensions (C,P,D1,D2) and returns the result in a rank-1 container with dimensions (C).

C - num. integration domains dim0 in both input containers
P - num. integration points dim1 in both input containers
D1 - first spatial (tensor) dimension index dim2 in both input containers
D2 - second spatial (tensor) dimension index dim3 in both input containers
Parameters
outputData[out] - Output data array.
inputDataLeft[in] - Left data input array.
inputDataRight[in] - Right data input array.
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.

Definition at line 551 of file Intrepid2_ArrayToolsDefContractions.hpp.

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

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
void Intrepid2::ArrayTools< DeviceType >::contractDataDataVector ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...>  inputDataLeft,
const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...>  inputDataRight,
const bool  sumInto = false 
)
static

Contracts the "point" and "space" dimensions P and D of rank-3 containers with dimensions (C,P,D) and returns the result in a rank-1 container with dimensions (C).

C - num. integration domains dim0 in both input containers
P - num. integration points dim1 in both input containers
D - spatial (vector) dimension index dim2 in both input containers
Parameters
outputData[out] - Output data array.
inputDataLeft[in] - Left data input array.
inputDataRight[in] - Right data input array.
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.

Definition at line 514 of file Intrepid2_ArrayToolsDefContractions.hpp.

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

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::contractDataFieldScalar ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields,
const bool  sumInto = false 
)
static

Contracts the "point" dimensions P of a rank-3 containers and a rank-2 container with dimensions (C,F,P) and (C,P), respectively, and returns the result in a rank-2 container with dimensions (C,F).

For a fixed index "C", (C,F) represents a (column) vector of length F.

C - num. integration domains dim0 in both input containers
F - num. fields dim1 in fields input container
P - num. integration points dim2 in fields input container and dim1 in scalar data container
Parameters
outputFields[out] - Output fields array.
inputData[in] - Data array.
inputFields[in] - Input fields array.
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.

Definition at line 357 of file Intrepid2_ArrayToolsDefContractions.hpp.

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

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::contractDataFieldTensor ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields,
const bool  sumInto = false 
)
static

Contracts the "point" and "space" dimensions P, D1 and D2 of a rank-5 container and a rank-4 container with dimensions (C,F,P,D1,D2) and (C,P,D1,D2), respectively, and returns the result in a rank-2 container with dimensions (C,F).

For a fixed index "C", (C,F) represents a (column) vector of length F.

C - num. integration domains dim0 in both input containers
F - num. fields dim1 in fields input container
P - num. integration points dim2 in fields input container and dim1 in tensor data container
D1 - first spatial (tensor) dimension index dim3 in fields input container and dim2 in tensor data container
D2 - second spatial (tensor) dimension index dim4 in fields input container and dim3 in tensor data container
Parameters
outputFields[out] - Output fields array.
inputData[in] - Data array.
inputFields[in] - Input fields array.
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.

Definition at line 437 of file Intrepid2_ArrayToolsDefContractions.hpp.

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

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::contractDataFieldVector ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields,
const bool  sumInto = false 
)
static

Contracts the "point" and "space" dimensions P and D of a rank-4 container and a rank-3 container with dimensions (C,F,P,D) and (C,P,D), respectively, and returns the result in a rank-2 container with dimensions (C,F).

For a fixed index "C", (C,F) represents a (column) vector of length F.

C - num. integration domains dim0 in both input containers
F - num. fields dim1 in fields input container
P - num. integration points dim2 in fields input container and dim1 in vector data container
D - spatial (vector) dimension index dim3 in fields input container and dim2 in vector data container
Parameters
outputFields[out] - Output fields array.
inputData[in] - Data array.
inputFields[in] - Input fields array.
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.

Definition at line 396 of file Intrepid2_ArrayToolsDefContractions.hpp.

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

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename leftFieldValueType , class... leftFieldProperties, typename rightFieldValueType , class... rightFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::contractFieldFieldScalar ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties...>  leftFields,
const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties...>  rightFields,
const bool  sumInto = false 
)
static

Contracts the "point" dimension P of two rank-3 containers with dimensions (C,L,P) and (C,R,P), and returns the result in a rank-3 container with dimensions (C,L,R).

C - num. integration domains dim0 in both input containers
L - num. "left" fields dim1 in "left" container
R - num. "right" fields dim1 in "right" container
P - num. integration points dim2 in both input containers
Parameters
outputFields[out] - Output (product) fields array.
leftFields[in] - Left input array.
rightFields[in] - Right input array.
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.

Definition at line 233 of file Intrepid2_ArrayToolsDefContractions.hpp.

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

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename leftFieldValueType , class... leftFieldProperties, typename rightFieldValueType , class... rightFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::contractFieldFieldTensor ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties...>  leftFields,
const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties...>  rightFields,
const bool  sumInto = false 
)
static

Contracts the "point" and "space" dimensions P, D1, and D2 of two rank-5 containers with dimensions (C,L,P,D1,D2) and (C,R,P,D1,D2), and returns the result in a rank-3 container with dimensions (C,L,R).

For a fixed index "C", (C,L,R) represents a rectangular L X R matrix where L and R may be different.

C - num. integration domains dim0 in both input containers
L - num. "left" fields dim1 in "left" container
R - num. "right" fields dim1 in "right" container
P - num. integration points dim2 in both input containers
D1- vector dimension dim3 in both input containers
D2- 2nd tensor dimension dim4 in both input containers
Parameters
outputFields[out] - Output array.
leftFields[in] - Left input array.
rightFields[in] - Right input array.
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.

Definition at line 314 of file Intrepid2_ArrayToolsDefContractions.hpp.

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

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename leftFieldValueType , class... leftFieldProperties, typename rightFieldValueType , class... rightFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::contractFieldFieldVector ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< leftFieldValueType, leftFieldProperties...>  leftFields,
const Kokkos::DynRankView< rightFieldValueType, rightFieldProperties...>  rightFields,
const bool  sumInto = false 
)
static

Contracts the "point" and "space" dimensions P and D1 of two rank-4 containers with dimensions (C,L,P,D1) and (C,R,P,D1), and returns the result in a rank-3 container with dimensions (C,L,R).

For a fixed index "C", (C,L,R) represents a rectangular L X R matrix where L and R may be different.

C - num. integration domains dim0 in both input containers
L - num. "left" fields dim1 in "left" container
R - num. "right" fields dim1 in "right" container
P - num. integration points dim2 in both input containers
D1- vector dimension dim3 in both input containers
Parameters
outputFields[out] - Output array.
leftFields[in] - Left input array.
rightFields[in] - Right input array.
sumInto[in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE.

Definition at line 273 of file Intrepid2_ArrayToolsDefContractions.hpp.

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

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
void Intrepid2::ArrayTools< DeviceType >::crossProductDataData ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...>  inputDataLeft,
const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...>  inputDataRight 
)
static

There are two use cases: (1) cross product of a rank-3 container inputDataRight with dimensions (C,P,D), representing the values of a set of vector data, on the left by the values in a rank-3 container inputDataLeft indexed by (C,P,D) representing the values of vector data, OR (2) cross product of a rank-2 container inputDataRight with dimensions (P,D), representing the values of vector data, on the left by the values in a rank-3 container inputDataLeft indexed by (C,P,D), representing the values of vector data; the output value container outputData is indexed by (C,P,D) in 3D (vector output) and by (C,P) in 2D (scalar output), regardless of which of the two use cases is considered.

C - num. integration domains
P - num. integration points
D - spatial dimension of vector data and vector fields
Parameters
outputData[out] - Output (cross product) data array.
inputDataLeft[in] - Left input data array.
inputDataRight[in] - Right input data array.

Definition at line 235 of file Intrepid2_ArrayToolsDefTensor.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::vectorMultiplyDataData().

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::crossProductDataField ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields 
)
static

There are two use cases: (1) cross product of a rank-4 container inputFields with dimensions (C,F,P,D), representing the values of a set of vector fields, on the left by the values in a rank-3 container inputData indexed by (C,P,D), representing the values of vector data, OR (2) cross product of a rank-3 container inputFields with dimensions (F,P,D), representing the values of a vector field, on the left by the values in a rank-3 container inputData indexed by (C,P,D), representing the values of vector data; the output value container outputFields is indexed by (C,F,P,D) in 3D (vector output) and by (C,F,P) in 2D (scalar output), regardless of which of the two use cases is considered.

C - num. integration domains
F - num. fields
P - num. integration points
D - spatial dimension of vector data and vector fields
Parameters
outputFields[out] - Output (cross product) fields array.
inputData[in] - Data array.
inputFields[in] - Input fields array.

Definition at line 112 of file Intrepid2_ArrayToolsDefTensor.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::vectorMultiplyDataField().

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
void Intrepid2::ArrayTools< DeviceType >::dotMultiplyDataData ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...>  inputDataLeft,
const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...>  inputDataRight 
)
static

There are two use cases: (1) dot product of a rank-2, 3 or 4 container inputDataRight with dimensions (C,P) (C,P,D1) or (C,P,D1,D2), representing the values of a scalar, vector or a tensor set of data, by the values in a rank-2, 3 or 4 container inputDataLeft indexed by (C,P), (C,P,D1), or (C,P,D1,D2) representing the values of scalar, vector or tensor data, OR (2) dot product of a rank-2, 3 or 4 container inputDataRight with dimensions (P), (P,D1) or (P,D1,D2), representing the values of scalar, vector or tensor data, by the values in a rank-2 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), representing the values of scalar, vector, or tensor data; the output value container outputData is indexed by (C,P), regardless of which of the two use cases is considered.

For input fields containers without a dimension index, this operation reduces to scalar multiplication.

C - num. integration domains
P - num. integration points
D1 - first spatial (tensor) dimension index
D2 - second spatial (tensor) dimension index
Parameters
outputData[out] - Output (dot product) data array.
inputDataLeft[in] - Left input data array.
inputDataRight[in] - Right input data array.

Definition at line 177 of file Intrepid2_ArrayToolsDefDot.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::dotMultiplyDataData(), and Intrepid2::LagrangianInterpolation< DeviceType >::getBasisCoeffs().

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::dotMultiplyDataField ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields 
)
static

There are two use cases: (1) dot product of a rank-3, 4 or 5 container inputFields with dimensions (C,F,P) (C,F,P,D1) or (C,F,P,D1,D2), representing the values of a set of scalar, vector or tensor fields, by the values in a rank-2, 3 or 4 container inputData indexed by (C,P), (C,P,D1), or (C,P,D1,D2) representing the values of scalar, vector or tensor data, OR (2) dot product of a rank-2, 3 or 4 container inputFields with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or tensor field, by the values in a rank-2 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), representing the values of scalar, vector or tensor data; the output value container outputFields is indexed by (C,F,P), regardless of which of the two use cases is considered.

For input fields containers without a dimension index, this operation reduces to scalar multiplication.

C - num. integration domains
F - num. fields
P - num. integration points
D1 - first spatial (tensor) dimension index
D2 - second spatial (tensor) dimension index

Parameters
outputFields[out] - Output (dot product) field array.
inputData[in] - Data array.
inputFields[in] - Field array.

Definition at line 113 of file Intrepid2_ArrayToolsDefDot.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::dotMultiplyDataField().

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
void Intrepid2::ArrayTools< DeviceType >::matmatProductDataData ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...>  inputDataLeft,
const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...>  inputDataRight,
const char  transpose = 'N' 
)
static

There are two use cases: (1) matrix-matrix product of a rank-4 container inputDataRight with dimensions (C,P,D1,D2), representing the values of a set of tensor data, on the left by the values in a rank-2, 3, or 4 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data, OR (2) matrix-matrix product of a rank-3 container inputDataRight with dimensions (P,D1,D2), representing the values of tensor data, on the left by the values in a rank-2, 3, or 4 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data; the output value container outputData is indexed by (C,P,D1,D2), regardless of which of the two use cases is considered.

Remarks
The rank of inputData implicitly defines the type of tensor data:
  • rank = 2 corresponds to a constant diagonal tensor $ diag(a,\ldots,a) $
  • rank = 3 corresponds to a nonconstant diagonal tensor $ diag(a_1,\ldots,a_d) $
  • rank = 4 corresponds to a full tensor $ \{a_{ij}\}$
Note
It is assumed that all tensors are square!
The method is defined for spatial dimensions D = 1, 2, 3
C - num. integration domains
P - num. integration points
D1* - first spatial (tensor) dimension index
D2** - second spatial (tensor) dimension index
Parameters
outputData[out] - Output (matrix-vector product) data array.
inputDataLeft[in] - Left input data array.
inputDataRight[in] - Right input data array.
transpose[in] - If 'T', use transposed tensor; if 'N', no transpose. Default: 'N'.

Definition at line 1597 of file Intrepid2_ArrayToolsDefTensor.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::tensorMultiplyDataData().

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::matmatProductDataField ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields,
const char  transpose = 'N' 
)
static

There are two use cases: (1) matrix-matrix product of a rank-5 container inputFields with dimensions (C,F,P,D1,D2), representing the values of a set of tensor fields, on the left by the values in a rank-2, 3, or 4 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data, OR (2) matrix-matrix product of a rank-4 container inputFields with dimensions (F,P,D1,D2), representing the values of a tensor field, on the left by the values in a rank-2, 3, or 4 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data; the output value container outputFields is indexed by (C,F,P,D1,D2), regardless of which of the two use cases is considered.

Remarks
The rank of inputData implicitly defines the type of tensor data:
  • rank = 2 corresponds to a constant diagonal tensor $ diag(a,\ldots,a) $
  • rank = 3 corresponds to a nonconstant diagonal tensor $ diag(a_1,\ldots,a_d) $
  • rank = 4 corresponds to a full tensor $ \{a_{ij}\}$
Note
It is assumed that all tensors are square!
The method is defined for spatial dimensions D = 1, 2, 3
C - num. integration domains
F - num. fields
P - num. integration points
D1* - first spatial (tensor) dimension index
D2** - second spatial (tensor) dimension index
Parameters
outputFields[out] - Output (matrix-matrix product) fields array.
inputData[in] - Data array.
inputFields[in] - Input fields array.
transpose[in] - If 'T', use transposed tensor; if 'N', no transpose. Default: 'N'.

Definition at line 1433 of file Intrepid2_ArrayToolsDefTensor.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::tensorMultiplyDataField().

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
void Intrepid2::ArrayTools< DeviceType >::matvecProductDataData ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...>  inputDataLeft,
const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...>  inputDataRight,
const char  transpose = 'N' 
)
static

There are two use cases: (1) matrix-vector product of a rank-3 container inputDataRight with dimensions (C,P,D), representing the values of a set of vector data, on the left by the values in a rank-2, 3, or 4 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data, OR (2) matrix-vector product of a rank-2 container inputDataRight with dimensions (P,D), representing the values of vector data, on the left by the values in a rank-2, 3, or 4 container inputDataLeft indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data; the output value container outputData is indexed by (C,P,D), regardless of which of the two use cases is considered.

Remarks
The rank of inputDataLeft implicitly defines the type of tensor data:
  • rank = 2 corresponds to a constant diagonal tensor $ diag(a,\ldots,a) $
  • rank = 3 corresponds to a nonconstant diagonal tensor $ diag(a_1,\ldots,a_d) $
  • rank = 4 corresponds to a full tensor $ \{a_{ij}\}$
Note
It is assumed that all tensors are square!
C - num. integration domains
P - num. integration points
D - spatial dimension
D1* - first tensor dimensions, equals the spatial dimension D
D2** - second tensor dimension, equals the spatial dimension D
Parameters
outputData[out] - Output (matrix-vector product) data array.
inputDataLeft[in] - Left input data array.
inputDataRight[in] - Right input data array.
transpose[in] - If 'T', use transposed tensor; if 'N', no transpose. Default: 'N'.

Definition at line 1155 of file Intrepid2_ArrayToolsDefTensor.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::mapHCurlDataCrossNormalFromPhysSideToRefSide(), Intrepid2::FunctionSpaceTools< DeviceType >::mapHCurlDataFromPhysToRef(), Intrepid2::FunctionSpaceTools< DeviceType >::mapHDivDataFromPhysToRef(), and Intrepid2::FunctionSpaceTools< DeviceType >::tensorMultiplyDataData().

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::matvecProductDataField ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields,
const char  transpose = 'N' 
)
static

There are two use cases: (1) matrix-vector product of a rank-4 container inputFields with dimensions (C,F,P,D), representing the values of a set of vector fields, on the left by the values in a rank-2, 3, or 4 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data, OR (2) matrix-vector product of a rank-3 container inputFields with dimensions (F,P,D), representing the values of a vector field, on the left by the values in a rank-2, 3, or 4 container inputData indexed by (C,P), (C,P,D1) or (C,P,D1,D2), respectively, representing the values of tensor data; the output value container outputFields is indexed by (C,F,P,D), regardless of which of the two use cases is considered.

Remarks
The rank of inputData implicitly defines the type of tensor data:
  • rank = 2 corresponds to a constant diagonal tensor $ diag(a,\ldots,a) $
  • rank = 3 corresponds to a nonconstant diagonal tensor $ diag(a_1,\ldots,a_d) $
  • rank = 4 corresponds to a full tensor $ \{a_{ij}\}$
Note
It is assumed that all tensors are square!
The method is defined for spatial dimensions D = 1, 2, 3
C - num. integration domains
F - num. fields
P - num. integration points
D - spatial dimension
D1* - first tensor dimensions, equals the spatial dimension D
D2** - second tensor dimension, equals the spatial dimension D
Parameters
outputFields[out] - Output (matrix-vector product) fields array.
inputData[in] - Data array.
inputFields[in] - Input fields array.
transpose[in] - If 'T', use transposed tensor; if 'N', no transpose. Default: 'N'.

Definition at line 1001 of file Intrepid2_ArrayToolsDefTensor.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::HCURLtransformVALUE(), Intrepid2::FunctionSpaceTools< DeviceType >::HDIVtransformVALUE(), and Intrepid2::FunctionSpaceTools< DeviceType >::tensorMultiplyDataField().

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValuetype , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
void Intrepid2::ArrayTools< DeviceType >::outerProductDataData ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataLeftValuetype, inputDataLeftProperties...>  inputDataLeft,
const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...>  inputDataRight 
)
static

There are two use cases: (1) outer product of a rank-3 container inputDataRight with dimensions (C,P,D), representing the values of a set of vector data, on the left by the values in a rank-3 container inputDataLeft indexed by (C,P,D) representing the values of vector data, OR (2) outer product of a rank-2 container inputDataRight with dimensions (P,D), representing the values of vector data, on the left by the values in a rank-3 container inputDataLeft indexed by (C,P,D), representing the values of vector data; the output value container outputData is indexed by (C,P,D,D), regardless of which of the two use cases is considered.

C - num. integration domains
P - num. integration points
D1 - first spatial (tensor) dimension index
D2 - second spatial (tensor) dimension index
Parameters
outputData[out] - Output (outer product) data array.
inputDataLeft[in] - Left input data array.
inputDataRight[in] - Right input data array.

Definition at line 539 of file Intrepid2_ArrayToolsDefTensor.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::vectorMultiplyDataData().

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::outerProductDataField ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields 
)
static

There are two use cases: (1) outer product of a rank-4 container inputFields with dimensions (C,F,P,D), representing the values of a set of vector fields, on the left by the values in a rank-3 container inputData indexed by (C,P,D), representing the values of vector data, OR (2) outer product of a rank-3 container inputFields with dimensions (F,P,D), representing the values of a vector field, on the left by the values in a rank-3 container inputData indexed by (C,P,D), representing the values of vector data; the output value container outputFields is indexed by (C,F,P,D,D), regardless of which of the two use cases is considered.

C - num. integration domains
F - num. fields
P - num. integration points
D1 - first spatial (tensor) dimension index
D2 - second spatial (tensor) dimension index
Parameters
outputFields[out] - Output (outer product) fields array.
inputData[in] - Data array.
inputFields[in] - Input fields array.

Definition at line 432 of file Intrepid2_ArrayToolsDefTensor.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::vectorMultiplyDataField().

template<typename DeviceType >
template<typename outputDataValueType , class... outputDataProperties, typename inputDataLeftValueType , class... inputDataLeftProperties, typename inputDataRightValueType , class... inputDataRightProperties>
void Intrepid2::ArrayTools< DeviceType >::scalarMultiplyDataData ( Kokkos::DynRankView< outputDataValueType, outputDataProperties...>  outputData,
const Kokkos::DynRankView< inputDataLeftValueType, inputDataLeftProperties...>  inputDataLeft,
const Kokkos::DynRankView< inputDataRightValueType, inputDataRightProperties...>  inputDataRight,
const bool  reciprocal = false 
)
static

There are two use cases: (1) multiplies a rank-2, 3, or 4 container inputDataRight with dimensions (C,P), (C,P,D1) or (C,P,D1,D2), representing the values of a set of scalar, vector or tensor data, by the values in a rank-2 container inputDataLeft indexed by (C,P), representing the values of scalar data, OR (2) multiplies a rank-1, 2, or 3 container inputDataRight with dimensions (P), (P,D1) or (P,D1,D2), representing the values of scalar, vector or tensor data, by the values in a rank-2 container inputDataLeft indexed by (C,P), representing the values of scalar data; the output value container outputData is indexed by (C,P), (C,P,D1) or (C,P,D1,D2), regardless of which of the two use cases is considered.

C - num. integration domains
P - num. integration points
D1 - first spatial (tensor) dimension index
D2 - second spatial (tensor) dimension index
Note
The arguments inputDataLeft, inputDataRight can be changed! This enables in-place multiplication.
Parameters
outputData[out] - Output data array.
inputDataLeft[in] - Left (multiplying) data array.
inputDataRight[in] - Right (being multiplied) data array.
reciprocal[in] - If TRUE, divides input fields by the data (instead of multiplying). Default: FALSE.

Definition at line 177 of file Intrepid2_ArrayToolsDefScalar.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::computeEdgeMeasure(), Intrepid2::FunctionSpaceTools< DeviceType >::computeFaceMeasure(), Intrepid2::FunctionSpaceTools< DeviceType >::mapHDivDataFromPhysToRef(), Intrepid2::FunctionSpaceTools< DeviceType >::mapHVolDataFromPhysToRef(), and Intrepid2::FunctionSpaceTools< DeviceType >::scalarMultiplyDataData().

template<typename DeviceType >
template<typename outputFieldValueType , class... outputFieldProperties, typename inputDataValueType , class... inputDataProperties, typename inputFieldValueType , class... inputFieldProperties>
void Intrepid2::ArrayTools< DeviceType >::scalarMultiplyDataField ( Kokkos::DynRankView< outputFieldValueType, outputFieldProperties...>  outputFields,
const Kokkos::DynRankView< inputDataValueType, inputDataProperties...>  inputData,
const Kokkos::DynRankView< inputFieldValueType, inputFieldProperties...>  inputFields,
const bool  reciprocal = false 
)
static

There are two use cases: (1) multiplies a rank-3, 4, or 5 container inputFields with dimensions (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2), representing the values of a set of scalar, vector or tensor fields, by the values in a rank-2 container inputData indexed by (C,P), representing the values of scalar data, OR (2) multiplies a rank-2, 3, or 4 container inputFields with dimensions (F,P), (F,P,D1) or (F,P,D1,D2), representing the values of a scalar, vector or a tensor field, by the values in a rank-2 container inputData indexed by (C,P), representing the values of scalar data; the output value container outputFields is indexed by (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2), regardless of which of the two use cases is considered.

C - num. integration domains
F - num. fields
P - num. integration points
D1 - first spatial (tensor) dimension index
D2 - second spatial (tensor) dimension index
Note
The argument inputFields can be changed! This enables in-place multiplication.
Parameters
outputFields[out] - Output (product) fields array.
inputData[in] - Data (multiplying) array.
inputFields[in] - Input (being multiplied) fields array.
reciprocal[in] - If TRUE, divides input fields by the data (instead of multiplying). Default: FALSE.

Definition at line 98 of file Intrepid2_ArrayToolsDefScalar.hpp.

Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::HDIVtransformVALUE(), Intrepid2::FunctionSpaceTools< DeviceType >::HVOLtransformVALUE(), and Intrepid2::FunctionSpaceTools< DeviceType >::scalarMultiplyDataField().


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