|
Intrepid
|
Utility class that provides methods for higher-order algebraic manipulation of user-defined arrays, such as tensor contractions. For low-order operations, see Intrepid::RealSpaceTools. More...
#include <Intrepid_ArrayTools.hpp>
Static Public Member Functions | |
| template<class Scalar , class ArrayOutFields , class ArrayInFieldsLeft , class ArrayInFieldsRight > | |
| static void | contractFieldFieldScalar (ArrayOutFields &outputFields, const ArrayInFieldsLeft &leftFields, const ArrayInFieldsRight &rightFields, const ECompEngine compEngine, 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). | |
| template<class Scalar , class ArrayOutFields , class ArrayInFieldsLeft , class ArrayInFieldsRight > | |
| static void | contractFieldFieldVector (ArrayOutFields &outputFields, const ArrayInFieldsLeft &leftFields, const ArrayInFieldsRight &rightFields, const ECompEngine compEngine, 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). | |
| template<class Scalar , class ArrayOutFields , class ArrayInFieldsLeft , class ArrayInFieldsRight > | |
| static void | contractFieldFieldTensor (ArrayOutFields &outputFields, const ArrayInFieldsLeft &leftFields, const ArrayInFieldsRight &rightFields, const ECompEngine compEngine, 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). | |
| template<class Scalar , class ArrayOutFields , class ArrayInData , class ArrayInFields > | |
| static void | contractDataFieldScalar (ArrayOutFields &outputFields, const ArrayInData &inputData, const ArrayInFields &inputFields, const ECompEngine compEngine, 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). | |
| template<class Scalar , class ArrayOutFields , class ArrayInData , class ArrayInFields > | |
| static void | contractDataFieldVector (ArrayOutFields &outputFields, const ArrayInData &inputData, const ArrayInFields &inputFields, const ECompEngine compEngine, 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). | |
| template<class Scalar , class ArrayOutFields , class ArrayInData , class ArrayInFields > | |
| static void | contractDataFieldTensor (ArrayOutFields &outputFields, const ArrayInData &inputData, const ArrayInFields &inputFields, const ECompEngine compEngine, 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). | |
| template<class Scalar , class ArrayOutData , class ArrayInDataLeft , class ArrayInDataRight > | |
| static void | contractDataDataScalar (ArrayOutData &outputData, const ArrayInDataLeft &inputDataLeft, const ArrayInDataRight &inputDataRight, const ECompEngine compEngine, 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). | |
| template<class Scalar , class ArrayOutData , class ArrayInDataLeft , class ArrayInDataRight > | |
| static void | contractDataDataVector (ArrayOutData &outputData, const ArrayInDataLeft &inputDataLeft, const ArrayInDataRight &inputDataRight, const ECompEngine compEngine, 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). | |
| template<class Scalar , class ArrayOutData , class ArrayInDataLeft , class ArrayInDataRight > | |
| static void | contractDataDataTensor (ArrayOutData &outputData, const ArrayInDataLeft &inputDataLeft, const ArrayInDataRight &inputDataRight, const ECompEngine compEngine, 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). | |
| template<class Scalar , class ArrayOutFields , class ArrayInData , class ArrayInFields > | |
| static void | scalarMultiplyDataField (ArrayOutFields &outputFields, const ArrayInData &inputData, ArrayInFields &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. | |
| template<class Scalar , class ArrayOutData , class ArrayInDataLeft , class ArrayInDataRight > | |
| static void | scalarMultiplyDataData (ArrayOutData &outputData, ArrayInDataLeft &inputDataLeft, ArrayInDataRight &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. | |
| template<class Scalar , class ArrayOutFields , class ArrayInData , class ArrayInFields > | |
| static void | dotMultiplyDataField (ArrayOutFields &outputFields, const ArrayInData &inputData, const ArrayInFields &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. | |
| template<class Scalar , class ArrayOutData , class ArrayInDataLeft , class ArrayInDataRight > | |
| static void | dotMultiplyDataData (ArrayOutData &outputData, const ArrayInDataLeft &inputDataLeft, const ArrayInDataRight &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. | |
| template<class Scalar , class ArrayOutFields , class ArrayInData , class ArrayInFields > | |
| static void | crossProductDataField (ArrayOutFields &outputFields, const ArrayInData &inputData, const ArrayInFields &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. | |
| template<class Scalar , class ArrayOutData , class ArrayInDataLeft , class ArrayInDataRight > | |
| static void | crossProductDataData (ArrayOutData &outputData, const ArrayInDataLeft &inputDataLeft, const ArrayInDataRight &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. | |
| template<class Scalar , class ArrayOutFields , class ArrayInData , class ArrayInFields > | |
| static void | outerProductDataField (ArrayOutFields &outputFields, const ArrayInData &inputData, const ArrayInFields &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. | |
| template<class Scalar , class ArrayOutData , class ArrayInDataLeft , class ArrayInDataRight > | |
| static void | outerProductDataData (ArrayOutData &outputData, const ArrayInDataLeft &inputDataLeft, const ArrayInDataRight &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. | |
| template<class Scalar , class ArrayOutFields , class ArrayInData , class ArrayInFields > | |
| static void | matvecProductDataField (ArrayOutFields &outputFields, const ArrayInData &inputData, const ArrayInFields &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. | |
| template<class Scalar , class ArrayOutData , class ArrayInDataLeft , class ArrayInDataRight > | |
| static void | matvecProductDataData (ArrayOutData &outputData, const ArrayInDataLeft &inputDataLeft, const ArrayInDataRight &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. | |
| template<class Scalar , class ArrayOutFields , class ArrayInData , class ArrayInFields > | |
| static void | matmatProductDataField (ArrayOutFields &outputFields, const ArrayInData &inputData, const ArrayInFields &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. | |
| template<class Scalar , class ArrayOutData , class ArrayInDataLeft , class ArrayInDataRight > | |
| static void | matmatProductDataData (ArrayOutData &outputData, const ArrayInDataLeft &inputDataLeft, const ArrayInDataRight &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. | |
| template<class Scalar , class ArrayOutFields , class ArrayInFields > | |
| static void | cloneFields (ArrayOutFields &outputFields, const ArrayInFields &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). | |
| template<class Scalar , class ArrayOutFields , class ArrayInFactors , class ArrayInFields > | |
| static void | cloneScaleFields (ArrayOutFields &outputFields, const ArrayInFactors &inputFactors, const ArrayInFields &inputFields) |
| Multiplies 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, F-componentwise with a scalar container indexed by (C,F), and stores the result in an output value container of size (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2). | |
| template<class Scalar , class ArrayInOutFields , class ArrayInFactors > | |
| static void | scaleFields (ArrayInOutFields &inoutFields, const ArrayInFactors &inputFactors) |
| Multiplies, in place, a rank-2, 3, or 4 container with dimensions (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2), representing the values of a scalar, vector or a tensor field, F-componentwise with a scalar container indexed by (C,F). | |
Utility class that provides methods for higher-order algebraic manipulation of user-defined arrays, such as tensor contractions. For low-order operations, see Intrepid::RealSpaceTools.
Definition at line 65 of file Intrepid_ArrayTools.hpp.
| void Intrepid::ArrayTools::cloneFields | ( | ArrayOutFields & | outputFields, |
| const ArrayInFields & | 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
| outputFields | [out] - Output fields array. |
| inputFields | [in] - Input fields array. |
Definition at line 53 of file Intrepid_ArrayToolsDefCloneScale.hpp.
| void Intrepid::ArrayTools::cloneScaleFields | ( | ArrayOutFields & | outputFields, |
| const ArrayInFactors & | inputFactors, | ||
| const ArrayInFields & | inputFields | ||
| ) | [static] |
Multiplies 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, F-componentwise with a scalar container indexed by (C,F), and stores the result in 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
| outputFields | [out] - Output fields array. |
| inputFactors | [in] - Input field factors array. |
| inputFields | [in] - Input fields array. |
Definition at line 135 of file Intrepid_ArrayToolsDefCloneScale.hpp.
| void Intrepid::ArrayTools::contractDataDataScalar | ( | ArrayOutData & | outputData, |
| const ArrayInDataLeft & | inputDataLeft, | ||
| const ArrayInDataRight & | inputDataRight, | ||
| const ECompEngine | compEngine, | ||
| 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
| outputData | [out] - Output data array. |
| inputDataLeft | [in] - Left data input array. |
| inputDataRight | [in] - Right data input array. |
| compEngine | [in] - Computational engine. |
| sumInto | [in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE. |
Definition at line 899 of file Intrepid_ArrayToolsDefContractions.hpp.
| void Intrepid::ArrayTools::contractDataDataTensor | ( | ArrayOutData & | outputData, |
| const ArrayInDataLeft & | inputDataLeft, | ||
| const ArrayInDataRight & | inputDataRight, | ||
| const ECompEngine | compEngine, | ||
| 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
| outputData | [out] - Output data array. |
| inputDataLeft | [in] - Left data input array. |
| inputDataRight | [in] - Right data input array. |
| compEngine | [in] - Computational engine. |
| sumInto | [in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE. |
Definition at line 1053 of file Intrepid_ArrayToolsDefContractions.hpp.
| void Intrepid::ArrayTools::contractDataDataVector | ( | ArrayOutData & | outputData, |
| const ArrayInDataLeft & | inputDataLeft, | ||
| const ArrayInDataRight & | inputDataRight, | ||
| const ECompEngine | compEngine, | ||
| 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
| outputData | [out] - Output data array. |
| inputDataLeft | [in] - Left data input array. |
| inputDataRight | [in] - Right data input array. |
| compEngine | [in] - Computational engine. |
| sumInto | [in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE. |
Definition at line 972 of file Intrepid_ArrayToolsDefContractions.hpp.
| void Intrepid::ArrayTools::contractDataFieldScalar | ( | ArrayOutFields & | outputFields, |
| const ArrayInData & | inputData, | ||
| const ArrayInFields & | inputFields, | ||
| const ECompEngine | compEngine, | ||
| 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
| outputFields | [out] - Output fields array. |
| inputData | [in] - Data array. |
| inputFields | [in] - Input fields array. |
| compEngine | [in] - Computational engine. |
| sumInto | [in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE. |
Definition at line 436 of file Intrepid_ArrayToolsDefContractions.hpp.
| void Intrepid::ArrayTools::contractDataFieldTensor | ( | ArrayOutFields & | outputFields, |
| const ArrayInData & | inputData, | ||
| const ArrayInFields & | inputFields, | ||
| const ECompEngine | compEngine, | ||
| 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
| outputFields | [out] - Output fields array. |
| inputData | [in] - Data array. |
| inputFields | [in] - Input fields array. |
| compEngine | [in] - Computational engine. |
| sumInto | [in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE. |
Definition at line 734 of file Intrepid_ArrayToolsDefContractions.hpp.
| void Intrepid::ArrayTools::contractDataFieldVector | ( | ArrayOutFields & | outputFields, |
| const ArrayInData & | inputData, | ||
| const ArrayInFields & | inputFields, | ||
| const ECompEngine | compEngine, | ||
| 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
| outputFields | [out] - Output fields array. |
| inputData | [in] - Data array. |
| inputFields | [in] - Input fields array. |
| compEngine | [in] - Computational engine. |
| sumInto | [in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE. |
Definition at line 580 of file Intrepid_ArrayToolsDefContractions.hpp.
| void Intrepid::ArrayTools::contractFieldFieldScalar | ( | ArrayOutFields & | outputFields, |
| const ArrayInFieldsLeft & | leftFields, | ||
| const ArrayInFieldsRight & | rightFields, | ||
| const ECompEngine | compEngine, | ||
| 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).
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
| outputFields | [out] - Output array. |
| leftFields | [in] - Left input array. |
| rightFields | [in] - Right input array. |
| compEngine | [in] - Computational engine. |
| sumInto | [in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE. |
Definition at line 52 of file Intrepid_ArrayToolsDefContractions.hpp.
| void Intrepid::ArrayTools::contractFieldFieldTensor | ( | ArrayOutFields & | outputFields, |
| const ArrayInFieldsLeft & | leftFields, | ||
| const ArrayInFieldsRight & | rightFields, | ||
| const ECompEngine | compEngine, | ||
| 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
| outputFields | [out] - Output array. |
| leftFields | [in] - Left input array. |
| rightFields | [in] - Right input array. |
| compEngine | [in] - Computational engine. |
| sumInto | [in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE. |
Definition at line 301 of file Intrepid_ArrayToolsDefContractions.hpp.
| void Intrepid::ArrayTools::contractFieldFieldVector | ( | ArrayOutFields & | outputFields, |
| const ArrayInFieldsLeft & | leftFields, | ||
| const ArrayInFieldsRight & | rightFields, | ||
| const ECompEngine | compEngine, | ||
| 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
| outputFields | [out] - Output array. |
| leftFields | [in] - Left input array. |
| rightFields | [in] - Right input array. |
| compEngine | [in] - Computational engine. |
| sumInto | [in] - If TRUE, sum into given output array, otherwise overwrite it. Default: FALSE. |
Definition at line 173 of file Intrepid_ArrayToolsDefContractions.hpp.
| void Intrepid::ArrayTools::crossProductDataData | ( | ArrayOutData & | outputData, |
| const ArrayInDataLeft & | inputDataLeft, | ||
| const ArrayInDataRight & | 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
| 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 Intrepid_ArrayToolsDefTensor.hpp.
| void Intrepid::ArrayTools::crossProductDataField | ( | ArrayOutFields & | outputFields, |
| const ArrayInData & | inputData, | ||
| const ArrayInFields & | 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
| outputFields | [out] - Output (cross product) fields array. |
| inputData | [in] - Data array. |
| inputFields | [in] - Input fields array. |
Definition at line 55 of file Intrepid_ArrayToolsDefTensor.hpp.
| void Intrepid::ArrayTools::dotMultiplyDataData | ( | ArrayOutData & | outputData, |
| const ArrayInDataLeft & | inputDataLeft, | ||
| const ArrayInDataRight & | 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
| outputData | [out] - Output (dot product) data array. |
| inputDataLeft | [in] - Left input data array. |
| inputDataRight | [in] - Right input data array. |
Definition at line 347 of file Intrepid_ArrayToolsDefDot.hpp.
| void Intrepid::ArrayTools::dotMultiplyDataField | ( | ArrayOutFields & | outputFields, |
| const ArrayInData & | inputData, | ||
| const ArrayInFields & | 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
| outputFields | [out] - Output (dot product) fields array. |
| inputData | [in] - Data array. |
| inputFields | [in] - Input fields array. |
Definition at line 52 of file Intrepid_ArrayToolsDefDot.hpp.
| void Intrepid::ArrayTools::matmatProductDataData | ( | ArrayOutData & | outputData, |
| const ArrayInDataLeft & | inputDataLeft, | ||
| const ArrayInDataRight & | 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.

C - num. integration domains
P - num. integration points
D1* - first spatial (tensor) dimension index
D2** - second spatial (tensor) dimension index
| 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 1945 of file Intrepid_ArrayToolsDefTensor.hpp.
| void Intrepid::ArrayTools::matmatProductDataField | ( | ArrayOutFields & | outputFields, |
| const ArrayInData & | inputData, | ||
| const ArrayInFields & | 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.

C - num. integration domains
F - num. fields
P - num. integration points
D1* - first spatial (tensor) dimension index
D2** - second spatial (tensor) dimension index
| 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 1470 of file Intrepid_ArrayToolsDefTensor.hpp.
| void Intrepid::ArrayTools::matvecProductDataData | ( | ArrayOutData & | outputData, |
| const ArrayInDataLeft & | inputDataLeft, | ||
| const ArrayInDataRight & | 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.

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
| 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 1063 of file Intrepid_ArrayToolsDefTensor.hpp.
| void Intrepid::ArrayTools::matvecProductDataField | ( | ArrayOutFields & | outputFields, |
| const ArrayInData & | inputData, | ||
| const ArrayInFields & | 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.

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
| 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 625 of file Intrepid_ArrayToolsDefTensor.hpp.
| void Intrepid::ArrayTools::outerProductDataData | ( | ArrayOutData & | outputData, |
| const ArrayInDataLeft & | inputDataLeft, | ||
| const ArrayInDataRight & | 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
| outputData | [out] - Output (outer product) data array. |
| inputDataLeft | [in] - Left input data array. |
| inputDataRight | [in] - Right input data array. |
Definition at line 518 of file Intrepid_ArrayToolsDefTensor.hpp.
| void Intrepid::ArrayTools::outerProductDataField | ( | ArrayOutFields & | outputFields, |
| const ArrayInData & | inputData, | ||
| const ArrayInFields & | 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
| outputFields | [out] - Output (outer product) fields array. |
| inputData | [in] - Data array. |
| inputFields | [in] - Input fields array. |
Definition at line 407 of file Intrepid_ArrayToolsDefTensor.hpp.
| void Intrepid::ArrayTools::scalarMultiplyDataData | ( | ArrayOutData & | outputData, |
| ArrayInDataLeft & | inputDataLeft, | ||
| ArrayInDataRight & | 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
| 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 474 of file Intrepid_ArrayToolsDefScalar.hpp.
| void Intrepid::ArrayTools::scalarMultiplyDataField | ( | ArrayOutFields & | outputFields, |
| const ArrayInData & | inputData, | ||
| ArrayInFields & | 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
| 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 52 of file Intrepid_ArrayToolsDefScalar.hpp.
| void Intrepid::ArrayTools::scaleFields | ( | ArrayInOutFields & | inoutFields, |
| const ArrayInFactors & | inputFactors | ||
| ) | [static] |
Multiplies, in place, a rank-2, 3, or 4 container with dimensions (C,F,P), (C,F,P,D1) or (C,F,P,D1,D2), representing the values of a scalar, vector or a tensor field, F-componentwise with a scalar container indexed by (C,F).
C - num. integration domains
F - num. fields
P - num. integration points
D1 - first spatial (tensor) dimension index
D2 - second spatial (tensor) dimension index
| inoutFields | [in/out] - Input / output fields array. |
| inputFactors | [in] - Scaling field factors array. |
Definition at line 224 of file Intrepid_ArrayToolsDefCloneScale.hpp.
1.7.6.1