Intrepid2
Intrepid2::RealSpaceTools< DeviceType > Class Template Reference

Implementation of basic linear algebra functionality in Euclidean space. More...

#include <Intrepid2_RealSpaceTools.hpp>

Classes

struct  Serial

Public Member Functions

template<typename inoutArrayValueType, class ... inoutAbsArrayProperties>
void absval (Kokkos::DynRankView< inoutArrayValueType, inoutAbsArrayProperties... > inoutAbsArray)

Static Public Member Functions

template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties>
static void extractScalarValues (Kokkos::DynRankView< outputValueType, outputProperties... > output, const Kokkos::DynRankView< inputValueType, inputProperties... > input)
 Extract scalar type values from Sacado-based array.
template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties>
static void clone (Kokkos::DynRankView< outputValueType, outputProperties... > output, const Kokkos::DynRankView< inputValueType, inputProperties... > input)
 Clone input array.
template<typename absArrayValueType, class ... absArrayProperties, typename inArrayValueType, class ... inArrayProperties>
static void absval (Kokkos::DynRankView< absArrayValueType, absArrayProperties... > absArray, const Kokkos::DynRankView< inArrayValueType, inArrayProperties... > inArray)
 Computes absolute value of an array.
template<typename inoutArrayValueType, class ... inoutArrayProperties>
static void absval (Kokkos::DynRankView< inoutArrayValueType, inoutArrayProperties... > inoutArray)
 Computes, in place, absolute value of an array.
template<typename normArrayValueType, class ... normArrayProperties, typename inVecValueType, class ... inVecProperties>
static void vectorNorm (Kokkos::DynRankView< normArrayValueType, normArrayProperties... > normArray, const Kokkos::DynRankView< inVecValueType, inVecProperties... > inVecs, const ENorm normType)
 Computes norms (1, 2, infinity) of vectors stored in a array of total rank 2 (array of vectors), indexed by (i0, D), or 3 (array of arrays of vectors), indexed by (i0, i1, D).
template<typename transposeMatValueType, class ... transposeMatProperties, typename inMatValueType, class ... inMatProperties>
static void transpose (Kokkos::DynRankView< transposeMatValueType, transposeMatProperties... > transposeMats, const Kokkos::DynRankView< inMatValueType, inMatProperties... > inMats)
 Computes transposes of square matrices stored in an array of total rank 2 (single matrix), indexed by (D, D), 3 (array of matrices), indexed by (i0, D, D), or 4 (array of arrays of matrices), indexed by (i0, i1, D, D).
template<class InverseMatrixViewType, class MatrixViewType>
static void inverse (InverseMatrixViewType inverseMats, MatrixViewType inMats)
 Computes inverses of nonsingular matrices stored in an array of total rank 2 (single matrix), indexed by (D, D), 3 (array of matrices), indexed by (i0, D, D), or 4 (array of arrays of matrices), indexed by (i0, i1, D, D).
template<class DeterminantArrayViewType, class MatrixViewType>
static void det (DeterminantArrayViewType detArray, const MatrixViewType inMats)
 Computes determinants of matrices stored in an array of total rank 3 (array of matrices), indexed by (i0, D, D), or 4 (array of arrays of matrices), indexed by (i0, i1, D, D).
template<typename sumArrayValueType, class ... sumArrayProperties, typename inArray1ValueType, class ... inArray1Properties, typename inArray2ValueType, class ... inArray2Properties>
static void add (Kokkos::DynRankView< sumArrayValueType, sumArrayProperties... > sumArray, const Kokkos::DynRankView< inArray1ValueType, inArray1Properties... > inArray1, const Kokkos::DynRankView< inArray2ValueType, inArray2Properties... > inArray2)
 Adds arrays inArray1 and inArray2:
sumArray = inArray1 + inArray2.
template<typename inoutSumArrayValueType, class ... inoutSumArrayProperties, typename inArrayValueType, class ... inArrayProperties>
static void add (Kokkos::DynRankView< inoutSumArrayValueType, inoutSumArrayProperties... > inoutSumArray, const Kokkos::DynRankView< inArrayValueType, inArrayProperties... > inArray)
 Adds, in place, inArray into inoutSumArray:
inoutSumArray = inoutSumArray + inArray.
template<typename diffArrayValueType, class ... diffArrayProperties, typename inArray1ValueType, class ... inArray1Properties, typename inArray2ValueType, class ... inArray2Properties>
static void subtract (Kokkos::DynRankView< diffArrayValueType, diffArrayProperties... > diffArray, const Kokkos::DynRankView< inArray1ValueType, inArray1Properties... > inArray1, const Kokkos::DynRankView< inArray2ValueType, inArray2Properties... > inArray2)
 Subtracts inArray2 from inArray1:
diffArray = inArray1 - inArray2.
template<typename inoutDiffArrayValueType, class ... inoutDiffArrayProperties, typename inArrayValueType, class ... inArrayProperties>
static void subtract (Kokkos::DynRankView< inoutDiffArrayValueType, inoutDiffArrayProperties... > diffArray, const Kokkos::DynRankView< inArrayValueType, inArrayProperties... > inArray)
 Subtracts, in place, inArray from diffArray:
diffArray = diffArray - inArray.
template<typename ValueType, typename scaledArrayValueType, class ... scaledArrayProperties, typename inArrayValueType, class ... inArrayProperties>
static void scale (Kokkos::DynRankView< scaledArrayValueType, scaledArrayProperties... > scaledArray, const Kokkos::DynRankView< inArrayValueType, inArrayProperties... > inArray, const ValueType alpha)
 Multiplies array inArray by the scalar scalar (componentwise):
scaledArray = scalar * inArray.
template<typename ValueType, typename inoutScaledArrayValueType, class ... inoutScaledArrayProperties>
static void scale (Kokkos::DynRankView< inoutScaledArrayValueType, inoutScaledArrayProperties... > inoutScaledArray, const ValueType alpha)
 Multiplies, in place, array inoutScaledArray by the scalar scalar (componentwise):
inoutScaledArray = scalar * inoutScaledArray.
template<typename dotArrayValueType, class ... dotArrayProperties, typename inVec1ValueType, class ... inVec1Properties, typename inVec2ValueType, class ... inVec2Properties>
static void dot (Kokkos::DynRankView< dotArrayValueType, dotArrayProperties... > dotArray, const Kokkos::DynRankView< inVec1ValueType, inVec1Properties... > inVecs1, const Kokkos::DynRankView< inVec2ValueType, inVec2Properties... > inVecs2)
 Computes dot product of vectors stored in an array of total rank 2 (array of vectors), indexed by (i0, D), or 3 (array of arrays of vectors), indexed by (i0, i1, D).
template<typename matVecValueType, class ... matVecProperties, typename inMatValueType, class ... inMatProperties, typename inVecValueType, class ... inVecProperties>
static void matvec (Kokkos::DynRankView< matVecValueType, matVecProperties... > matVecs, const Kokkos::DynRankView< inMatValueType, inMatProperties... > inMats, const Kokkos::DynRankView< inVecValueType, inVecProperties... > inVecs)
 Matrix-vector left multiply using multidimensional arrays:
matVec = inMat * inVec.
template<typename outMatValueType, class ... outMatProperties, typename inMatValueType, class ... inMatProperties>
static void AtA (Kokkos::DynRankView< outMatValueType, outMatProperties... > outMats, const Kokkos::DynRankView< inMatValueType, inMatProperties... > inMats)
 Computes the matrix-matrix product $A^T A$, for an input rectangular matrix $A$.
template<typename vecProdValueType, class ... vecProdProperties, typename inLeftValueType, class ... inLeftProperties, typename inRightValueType, class ... inRightProperties>
static void vecprod (Kokkos::DynRankView< vecProdValueType, vecProdProperties... > vecProd, const Kokkos::DynRankView< inLeftValueType, inLeftProperties... > inLeft, const Kokkos::DynRankView< inRightValueType, inRightProperties... > inRight)
 Vector product using multidimensional arrays:
vecProd = inVecLeft x inVecRight.

Detailed Description

template<typename DeviceType = void>
class Intrepid2::RealSpaceTools< DeviceType >

Implementation of basic linear algebra functionality in Euclidean space.

Note:

  • Compiled on devices (KOKKOS_INLINE_FUNCTION)
  • Callable on devices and Kokkos functor (no temporary allocation)
  • parallel_for inside of Intrepid functions is dictated by the provided execution space
  • With Kokkos::Serial, functions (that already contain parallel_for) can be nested in Kokkos functors
  • When a function is decorated with KOKKOS_INLINE_FUNCTION, remove Teuchos testing and std::vectors
  • For norm and det computations, the value_type is chosen from the first input container.
  • As the name says, the class assumes that input containers are "real type" and not complex type.
  • Functions that are designed for small problems are not parallelized e.g., dot, norm and det. These functions have non-void return types and expect to be used for small problems. However, high level (working on cell-level) functions are parallelized.

Definition at line 46 of file Intrepid2_RealSpaceTools.hpp.

Member Function Documentation

◆ absval() [1/3]

template<typename DeviceType>
template<typename absArrayValueType, class ... absArrayProperties, typename inArrayValueType, class ... inArrayProperties>
void Intrepid2::RealSpaceTools< DeviceType >::absval ( Kokkos::DynRankView< absArrayValueType, absArrayProperties... > absArray,
const Kokkos::DynRankView< inArrayValueType, inArrayProperties... > inArray )
static

Computes absolute value of an array.

Parameters
outArray[out] - output array
inArray[in] - input array
Note
Requirements (checked at runtime, in debug mode):
  • rank(absArray) == rank(inArray)
  • dimensions(absArray) == dimensions(inArray)

Definition at line 385 of file Intrepid2_RealSpaceToolsDef.hpp.

◆ absval() [2/3]

template<typename DeviceType = void>
template<typename inoutArrayValueType, class ... inoutAbsArrayProperties>
void Intrepid2::RealSpaceTools< DeviceType >::absval ( Kokkos::DynRankView< inoutArrayValueType, inoutAbsArrayProperties... > inoutAbsArray)

Definition at line 422 of file Intrepid2_RealSpaceToolsDef.hpp.

◆ absval() [3/3]

template<typename DeviceType = void>
template<typename inoutArrayValueType, class ... inoutArrayProperties>
void Intrepid2::RealSpaceTools< DeviceType >::absval ( Kokkos::DynRankView< inoutArrayValueType, inoutArrayProperties... > inoutArray)
static

Computes, in place, absolute value of an array.

Parameters
inoutArray[in/out] - input/output array

◆ add() [1/2]

template<typename DeviceType>
template<typename inoutSumArrayValueType, class ... inoutSumArrayProperties, typename inArrayValueType, class ... inArrayProperties>
void Intrepid2::RealSpaceTools< DeviceType >::add ( Kokkos::DynRankView< inoutSumArrayValueType, inoutSumArrayProperties... > inoutSumArray,
const Kokkos::DynRankView< inArrayValueType, inArrayProperties... > inArray )
static

Adds, in place, inArray into inoutSumArray:
inoutSumArray = inoutSumArray + inArray.

Parameters
inoutSumArray[in/out] - sum/first summand
inArray[in] - second summand
Note
Requirements (checked at runtime, in debug mode):
  • rank(inoutSumArray) == rank(inArray)
  • dimensions(inoutSumArray) == dimensions(inArray)

Definition at line 954 of file Intrepid2_RealSpaceToolsDef.hpp.

References add().

◆ add() [2/2]

template<typename DeviceType>
template<typename sumArrayValueType, class ... sumArrayProperties, typename inArray1ValueType, class ... inArray1Properties, typename inArray2ValueType, class ... inArray2Properties>
void Intrepid2::RealSpaceTools< DeviceType >::add ( Kokkos::DynRankView< sumArrayValueType, sumArrayProperties... > sumArray,
const Kokkos::DynRankView< inArray1ValueType, inArray1Properties... > inArray1,
const Kokkos::DynRankView< inArray2ValueType, inArray2Properties... > inArray2 )
static

Adds arrays inArray1 and inArray2:
sumArray = inArray1 + inArray2.

Parameters
sumArray[out] - sum
inArray1[in] - first summand
inArray2[in] - second summand
Note
Requirements (checked at runtime, in debug mode):
  • rank(sumArray) == rank(inArray1) == rank(inArray2)
  • dimensions(sumArray) == dimensions(inArray1) == dimensions(inArray2)

Definition at line 913 of file Intrepid2_RealSpaceToolsDef.hpp.

Referenced by add().

◆ AtA()

template<typename DeviceType>
template<typename outMatValueType, class ... outMatProperties, typename inMatValueType, class ... inMatProperties>
void Intrepid2::RealSpaceTools< DeviceType >::AtA ( Kokkos::DynRankView< outMatValueType, outMatProperties... > outMats,
const Kokkos::DynRankView< inMatValueType, inMatProperties... > inMats )
static

Computes the matrix-matrix product $A^T A$, for an input rectangular matrix $A$.

Parameters
matVec[out] - matrix-matrix product $A^T A$ indexed by (D, D), (i0, D, D) or (i0, i1, D, D)
inMat[in] - the matrix argument $A$ indexed by (D, D), (i0, D, D) or (i0, i1, D, D)

Definition at line 1437 of file Intrepid2_RealSpaceToolsDef.hpp.

◆ clone()

template<typename DeviceType>
template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties>
void Intrepid2::RealSpaceTools< DeviceType >::clone ( Kokkos::DynRankView< outputValueType, outputProperties... > output,
const Kokkos::DynRankView< inputValueType, inputProperties... > input )
static

◆ det()

template<typename DeviceType>
template<class DeterminantArrayViewType, class MatrixViewType>
void Intrepid2::RealSpaceTools< DeviceType >::det ( DeterminantArrayViewType detArray,
const MatrixViewType inMats )
static

Computes determinants of matrices stored in an array of total rank 3 (array of matrices), indexed by (i0, D, D), or 4 (array of arrays of matrices), indexed by (i0, i1, D, D).

Parameters
detArray[out] - array of determinants indexed by (i0) or (i0, i1)
inMats[in] - array of matrices indexed by (i0, D, D) or (i0, i1, D, D)
Note
Requirements (checked at runtime, in debug mode):
  • rank(detArray) == rank(inMats) - 2
  • rank(inMats) == 3 or 4
  • dimensions i0, i1 of detArray and inMats must agree
  • matrix dimensions are limited to 1, 2, and 3

Definition at line 822 of file Intrepid2_RealSpaceToolsDef.hpp.

Referenced by Intrepid2::CellTools< DeviceType >::setJacobianDet(), and Intrepid2::CellTools< DeviceType >::setJacobianDet().

◆ dot()

template<typename DeviceType>
template<typename dotArrayValueType, class ... dotArrayProperties, typename inVec1ValueType, class ... inVec1Properties, typename inVec2ValueType, class ... inVec2Properties>
void Intrepid2::RealSpaceTools< DeviceType >::dot ( Kokkos::DynRankView< dotArrayValueType, dotArrayProperties... > dotArray,
const Kokkos::DynRankView< inVec1ValueType, inVec1Properties... > inVecs1,
const Kokkos::DynRankView< inVec2ValueType, inVec2Properties... > inVecs2 )
static

Computes dot product of vectors stored in an array of total rank 2 (array of vectors), indexed by (i0, D), or 3 (array of arrays of vectors), indexed by (i0, i1, D).

Parameters
dotArray[out] - dot product array indexed by (i0) or (i0, i1)
inVecs1[in] - first array of vectors indexed by (i0, D) or (i0, i1, D)
inVecs2[in] - second array of vectors indexed by (i0, D) or (i0, i1, D)
Note
Requirements (checked at runtime, in debug mode):
  • rank(dotArray) == rank(inVecs1) - 1 == rank(inVecs2) - 1
  • rank(inVecs1) == 2 or 3
  • dimensions i0, i1 of dotArray and inVecs1 / inVecs2 must agree

Definition at line 1203 of file Intrepid2_RealSpaceToolsDef.hpp.

◆ extractScalarValues()

template<typename DeviceType>
template<typename outputValueType, class ... outputProperties, typename inputValueType, class ... inputProperties>
void Intrepid2::RealSpaceTools< DeviceType >::extractScalarValues ( Kokkos::DynRankView< outputValueType, outputProperties... > output,
const Kokkos::DynRankView< inputValueType, inputProperties... > input )
static

Extract scalar type values from Sacado-based array.

Parameters
output[out] - output array
input[in] - input array

Definition at line 223 of file Intrepid2_RealSpaceToolsDef.hpp.

◆ inverse()

template<typename DeviceType>
template<class InverseMatrixViewType, class MatrixViewType>
void Intrepid2::RealSpaceTools< DeviceType >::inverse ( InverseMatrixViewType inverseMats,
MatrixViewType inMats )
static

Computes inverses of nonsingular matrices stored in an array of total rank 2 (single matrix), indexed by (D, D), 3 (array of matrices), indexed by (i0, D, D), or 4 (array of arrays of matrices), indexed by (i0, i1, D, D).

Parameters
inverseMats[out] - array of inverses indexed by (D, D), (i0, D, D) or (i0, i1, D, D)
inMats[in] - array of matrices indexed by (D, D), (i0, D, D) or (i0, i1, D, D)
Note
Requirements (checked at runtime, in debug mode):
  • rank(inverseMats) == rank(inMats)
  • rank(inMats) == 3 or 4
  • dimensions(inverseMats) == dimensions(inMats)
  • matrices must be square
  • matrix dimensions are limited to 1, 2, and 3

Definition at line 716 of file Intrepid2_RealSpaceToolsDef.hpp.

Referenced by Intrepid2::CellTools< DeviceType >::setJacobianInv(), and Intrepid2::CellTools< DeviceType >::setJacobianInv().

◆ matvec()

template<typename DeviceType>
template<typename matVecValueType, class ... matVecProperties, typename inMatValueType, class ... inMatProperties, typename inVecValueType, class ... inVecProperties>
void Intrepid2::RealSpaceTools< DeviceType >::matvec ( Kokkos::DynRankView< matVecValueType, matVecProperties... > matVecs,
const Kokkos::DynRankView< inMatValueType, inMatProperties... > inMats,
const Kokkos::DynRankView< inVecValueType, inVecProperties... > inVecs )
static

Matrix-vector left multiply using multidimensional arrays:
matVec = inMat * inVec.

An array (rank 1, 2 or 3) of "column" vectors, indexed by (D), (i0, D) or (i0, i1, D), is multiplied on the left by an array (rank 2, 3 or 4) of square matrices, indexed by (D, D), (i0, D, D) or (i0, i1, D, D).

Parameters
matVec[out] - matrix-vector product indexed by (D), (i0, D) or (i0, i1, D)
inMat[in] - the matrix argument indexed by (D, D), (i0, D, D) or (i0, i1, D, D)
inVec[in] - the vector argument indexed by (D), (i0, D) or (i0, i1, D)
Note
Requirements (checked at runtime, in debug mode):
  • rank(matVec) == rank(inVec) == rank(inMat) - 1
  • dimensions(matVec) == dimensions(inVec)
  • matrix and vector dimensions D, i0 and i1 must agree
  • matrices are square

Definition at line 1355 of file Intrepid2_RealSpaceToolsDef.hpp.

Referenced by Intrepid2::CellTools< DeviceType >::getPhysicalEdgeTangents(), Intrepid2::CellTools< DeviceType >::getPhysicalEdgeTangents(), Intrepid2::CellTools< DeviceType >::getPhysicalFaceTangents(), and Intrepid2::CellTools< DeviceType >::getPhysicalFaceTangents().

◆ scale() [1/2]

template<typename DeviceType>
template<typename ValueType, typename inoutScaledArrayValueType, class ... inoutScaledArrayProperties>
void Intrepid2::RealSpaceTools< DeviceType >::scale ( Kokkos::DynRankView< inoutScaledArrayValueType, inoutScaledArrayProperties... > inoutScaledArray,
const ValueType alpha )
static

Multiplies, in place, array inoutScaledArray by the scalar scalar (componentwise):
inoutScaledArray = scalar * inoutScaledArray.

Parameters
inoutScaledArray[in/out] - input/output array
alpha[in] - multiplier

Definition at line 1151 of file Intrepid2_RealSpaceToolsDef.hpp.

References scale().

◆ scale() [2/2]

template<typename DeviceType>
template<typename ValueType, typename scaledArrayValueType, class ... scaledArrayProperties, typename inArrayValueType, class ... inArrayProperties>
void Intrepid2::RealSpaceTools< DeviceType >::scale ( Kokkos::DynRankView< scaledArrayValueType, scaledArrayProperties... > scaledArray,
const Kokkos::DynRankView< inArrayValueType, inArrayProperties... > inArray,
const ValueType alpha )
static

Multiplies array inArray by the scalar scalar (componentwise):
scaledArray = scalar * inArray.

Parameters
scaledArray[out] - scaled array
inArray[in] - input array
alpha[in] - multiplier
Note
Requirements (checked at runtime, in debug mode):
  • rank(scaledArray) == rank(inArray)
  • dimensions(scaledArray) == dimensions(inArray)

Definition at line 1111 of file Intrepid2_RealSpaceToolsDef.hpp.

Referenced by scale().

◆ subtract() [1/2]

template<typename DeviceType>
template<typename diffArrayValueType, class ... diffArrayProperties, typename inArray1ValueType, class ... inArray1Properties, typename inArray2ValueType, class ... inArray2Properties>
void Intrepid2::RealSpaceTools< DeviceType >::subtract ( Kokkos::DynRankView< diffArrayValueType, diffArrayProperties... > diffArray,
const Kokkos::DynRankView< inArray1ValueType, inArray1Properties... > inArray1,
const Kokkos::DynRankView< inArray2ValueType, inArray2Properties... > inArray2 )
static

Subtracts inArray2 from inArray1:
diffArray = inArray1 - inArray2.

Parameters
diffArray[out] - difference
inArray1[in] - minuend
inArray2[in] - subtrahend
Note
Requirements (checked at runtime, in debug mode):
  • rank(sumArray) == rank(inArray1) == rank(inArray2)
  • dimensions(sumArray) == dimensions(inArray1) == dimensions(inArray2)

Definition at line 1012 of file Intrepid2_RealSpaceToolsDef.hpp.

Referenced by subtract().

◆ subtract() [2/2]

template<typename DeviceType>
template<typename inoutDiffArrayValueType, class ... inoutDiffArrayProperties, typename inArrayValueType, class ... inArrayProperties>
void Intrepid2::RealSpaceTools< DeviceType >::subtract ( Kokkos::DynRankView< inoutDiffArrayValueType, inoutDiffArrayProperties... > diffArray,
const Kokkos::DynRankView< inArrayValueType, inArrayProperties... > inArray )
static

Subtracts, in place, inArray from diffArray:
diffArray = diffArray - inArray.

Parameters
diffArray[in/out] - difference/minuend
inArray[in] - subtrahend
Note
Requirements (checked at runtime, in debug mode):
  • rank(inoutDiffArray) == rank(inArray)
  • dimensions(inoutDiffArray) == dimensions(inArray)

Definition at line 1053 of file Intrepid2_RealSpaceToolsDef.hpp.

References subtract().

◆ transpose()

template<typename DeviceType>
template<typename transposeMatValueType, class ... transposeMatProperties, typename inMatValueType, class ... inMatProperties>
void Intrepid2::RealSpaceTools< DeviceType >::transpose ( Kokkos::DynRankView< transposeMatValueType, transposeMatProperties... > transposeMats,
const Kokkos::DynRankView< inMatValueType, inMatProperties... > inMats )
static

Computes transposes of square matrices stored in an array of total rank 2 (single matrix), indexed by (D, D), 3 (array of matrices), indexed by (i0, D, D), or 4 (array of arrays of matrices), indexed by (i0, i1, D, D).

Parameters
transposeMats[out] - array of transposes indexed by (D, D), (i0, D, D) or (i0, i1, D, D)
inMats[in] - array of matrices indexed by (D, D), (i0, D, D) or (i0, i1, D, D)
Note
Requirements (checked at runtime, in debug mode):
  • rank(transposeMats) == rank(inMats)
  • rank(inMats) == 3 or 4
  • dimensions(transposeMats) == dimensions(inMats)
  • matrices must be square

Definition at line 551 of file Intrepid2_RealSpaceToolsDef.hpp.

◆ vecprod()

template<typename DeviceType>
template<typename vecProdValueType, class ... vecProdProperties, typename inLeftValueType, class ... inLeftProperties, typename inRightValueType, class ... inRightProperties>
void Intrepid2::RealSpaceTools< DeviceType >::vecprod ( Kokkos::DynRankView< vecProdValueType, vecProdProperties... > vecProd,
const Kokkos::DynRankView< inLeftValueType, inLeftProperties... > inLeft,
const Kokkos::DynRankView< inRightValueType, inRightProperties... > inRight )
static

Vector product using multidimensional arrays:
vecProd = inVecLeft x inVecRight.

Vector multiplication of two "column" vectors stored in arrays (rank 1, 2, or 3) indexed by (D), (i0, D) or (i0, i1, D).

Parameters
vecProd[in] - vector product indexed by (D), (i0, D) or (i0, i1, D)
inLeft[in] - left vector argument indexed by (D), (i0, D) or (i0, i1, D)
inRight[in] - right vector argument indexed by (D), (i0, D) or (i0, i1, D)
Todo
Need to decide on how to handle vecprod in 2D: is the result a vector, i.e., there's dimension D or a scalar?

Definition at line 1539 of file Intrepid2_RealSpaceToolsDef.hpp.

Referenced by Intrepid2::CellTools< DeviceType >::getPhysicalFaceNormals(), Intrepid2::CellTools< DeviceType >::getPhysicalFaceNormals(), and Intrepid2::CellTools< DeviceType >::getReferenceFaceNormal().

◆ vectorNorm()

template<typename DeviceType>
template<typename normArrayValueType, class ... normArrayProperties, typename inVecValueType, class ... inVecProperties>
void Intrepid2::RealSpaceTools< DeviceType >::vectorNorm ( Kokkos::DynRankView< normArrayValueType, normArrayProperties... > normArray,
const Kokkos::DynRankView< inVecValueType, inVecProperties... > inVecs,
const ENorm normType )
static

Computes norms (1, 2, infinity) of vectors stored in a array of total rank 2 (array of vectors), indexed by (i0, D), or 3 (array of arrays of vectors), indexed by (i0, i1, D).

Parameters
normArray[out] - norm array indexed by (i0) or (i0, i1)
inVecs[in] - array of vectors indexed by (i0, D) or (i0, i1, D)
normType[in] - norm type
Note
Requirements (checked at runtime, in debug mode):
  • rank(normArray) == rank(inVecs) - 1
  • rank(inVecs) == 2 or 3
  • dimensions i0, i1 of normArray and inVecs must agree

Definition at line 466 of file Intrepid2_RealSpaceToolsDef.hpp.

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


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