Intrepid2
|
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 |
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 |
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 77 of file Intrepid2_ArrayTools.hpp.
|
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).
outputData | [out] - Output data array. |
inputData | [in] - Input data array. |
|
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).
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().
|
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).
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 512 of file Intrepid2_ArrayToolsDefContractions.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::integrate().
|
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).
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 584 of file Intrepid2_ArrayToolsDefContractions.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::integrate().
|
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).
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 547 of file Intrepid2_ArrayToolsDefContractions.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::integrate().
|
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.
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 390 of file Intrepid2_ArrayToolsDefContractions.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::integrate().
|
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.
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 470 of file Intrepid2_ArrayToolsDefContractions.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::integrate().
|
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.
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 429 of file Intrepid2_ArrayToolsDefContractions.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::integrate().
|
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).
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 266 of file Intrepid2_ArrayToolsDefContractions.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::integrate().
|
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.
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 347 of file Intrepid2_ArrayToolsDefContractions.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::integrate().
|
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.
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 306 of file Intrepid2_ArrayToolsDefContractions.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::integrate().
|
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.
outputData | [out] - Output (cross product) data array. |
inputDataLeft | [in] - Left input data array. |
inputDataRight | [in] - Right input data array. |
Definition at line 268 of file Intrepid2_ArrayToolsDefTensor.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::vectorMultiplyDataData().
|
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.
outputFields | [out] - Output (cross product) fields array. |
inputData | [in] - Data array. |
inputFields | [in] - Input fields array. |
Definition at line 145 of file Intrepid2_ArrayToolsDefTensor.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::vectorMultiplyDataField().
|
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.
outputData | [out] - Output (dot product) data array. |
inputDataLeft | [in] - Left input data array. |
inputDataRight | [in] - Right input data array. |
Definition at line 210 of file Intrepid2_ArrayToolsDefDot.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::dotMultiplyDataData(), and Intrepid2::LagrangianInterpolation< DeviceType >::getBasisCoeffs().
|
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.
outputFields | [out] - Output (dot product) field array. |
inputData | [in] - Data array. |
inputFields | [in] - Field array. |
Definition at line 146 of file Intrepid2_ArrayToolsDefDot.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::dotMultiplyDataField().
|
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.
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 1630 of file Intrepid2_ArrayToolsDefTensor.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::tensorMultiplyDataData().
|
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.
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 1466 of file Intrepid2_ArrayToolsDefTensor.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::tensorMultiplyDataField().
|
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.
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 1188 of file Intrepid2_ArrayToolsDefTensor.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::mapHCurlDataCrossNormalFromPhysSideToRefSide(), Intrepid2::FunctionSpaceTools< DeviceType >::mapHCurlDataFromPhysToRef(), Intrepid2::FunctionSpaceTools< DeviceType >::mapHDivDataFromPhysToRef(), and Intrepid2::FunctionSpaceTools< DeviceType >::tensorMultiplyDataData().
|
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.
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 1034 of file Intrepid2_ArrayToolsDefTensor.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::HCURLtransformVALUE(), Intrepid2::FunctionSpaceTools< DeviceType >::HDIVtransformVALUE(), and Intrepid2::FunctionSpaceTools< DeviceType >::tensorMultiplyDataField().
|
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.
outputData | [out] - Output (outer product) data array. |
inputDataLeft | [in] - Left input data array. |
inputDataRight | [in] - Right input data array. |
Definition at line 572 of file Intrepid2_ArrayToolsDefTensor.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::vectorMultiplyDataData().
|
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.
outputFields | [out] - Output (outer product) fields array. |
inputData | [in] - Data array. |
inputFields | [in] - Input fields array. |
Definition at line 465 of file Intrepid2_ArrayToolsDefTensor.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::vectorMultiplyDataField().
|
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.
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 210 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().
|
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.
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 131 of file Intrepid2_ArrayToolsDefScalar.hpp.
Referenced by Intrepid2::FunctionSpaceTools< DeviceType >::HDIVtransformVALUE(), Intrepid2::FunctionSpaceTools< DeviceType >::HVOLtransformVALUE(), and Intrepid2::FunctionSpaceTools< DeviceType >::scalarMultiplyDataField().