Intrepid2
Public Types | Public Member Functions | Public Attributes | List of all members
Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose > Struct Template Reference

Functor for matvecProduct; new version avoids both subviews and branching. See Intrepid2::ArrayTools for more. More...

#include <Intrepid2_ArrayToolsDefTensor.hpp>

Public Types

using value_type = typename OutputViewType::value_type
 

Public Member Functions

KOKKOS_INLINE_FUNCTION F_matvecProduct (OutputViewType output_, leftInputViewType leftInput_, rightInputViewType rightInput_)
 
KOKKOS_INLINE_FUNCTION void operator() (const ordinal_type cl, const ordinal_type bf, const ordinal_type pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==4 &&r==4 &&hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &bf, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==4 &&r==3 &&hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &bf, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==3 &&r==4 &&hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &bf, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==3 &&r==3 &&hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &bf, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==2 &&r==4 &&hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &bf, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==2 &&r==3 &&hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &bf, const ordinal_type &pt) const
 
KOKKOS_INLINE_FUNCTION void operator() (const ordinal_type cl, const ordinal_type pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==4 &&r==3 &&!hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==4 &&r==2 &&!hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==3 &&r==3 &&!hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==3 &&r==2 &&!hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==2 &&r==3 &&!hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &pt) const
 
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==2 &&r==2 &&!hf, void > apply_matvec_product (const ordinal_type &cl, const ordinal_type &pt) const
 

Public Attributes

OutputViewType _output
 
const leftInputViewType _leftInput
 
const rightInputViewType _rightInput
 
const ordinal_type _iend
 
const ordinal_type _jend
 

Detailed Description

template<typename OutputViewType, typename leftInputViewType, typename rightInputViewType, ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
struct Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >

Functor for matvecProduct; new version avoids both subviews and branching. See Intrepid2::ArrayTools for more.

Definition at line 649 of file Intrepid2_ArrayToolsDefTensor.hpp.

Member Typedef Documentation

◆ value_type

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
using Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::value_type = typename OutputViewType::value_type

Definition at line 657 of file Intrepid2_ArrayToolsDefTensor.hpp.

Constructor & Destructor Documentation

◆ F_matvecProduct()

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
KOKKOS_INLINE_FUNCTION Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::F_matvecProduct ( OutputViewType  output_,
leftInputViewType  leftInput_,
rightInputViewType  rightInput_ 
)
inline

Definition at line 660 of file Intrepid2_ArrayToolsDefTensor.hpp.

Member Function Documentation

◆ apply_matvec_product() [1/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==4 &&r==4 &&hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  bf,
const ordinal_type &  pt 
) const
inline

Definition at line 679 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [2/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==4 &&r==3 &&hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  bf,
const ordinal_type &  pt 
) const
inline

Definition at line 703 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [3/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==3 &&r==4 &&hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  bf,
const ordinal_type &  pt 
) const
inline

Definition at line 727 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [4/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==3 &&r==3 &&hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  bf,
const ordinal_type &  pt 
) const
inline

Definition at line 738 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [5/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==2 &&r==4 &&hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  bf,
const ordinal_type &  pt 
) const
inline

Definition at line 749 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [6/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==2 &&r==3 &&hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  bf,
const ordinal_type &  pt 
) const
inline

Definition at line 762 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [7/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==4 &&r==3 &&!hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  pt 
) const
inline

Definition at line 783 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [8/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==4 &&r==2 &&!hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  pt 
) const
inline

Definition at line 806 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [9/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==3 &&r==3 &&!hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  pt 
) const
inline

Definition at line 829 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [10/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==3 &&r==2 &&!hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  pt 
) const
inline

Definition at line 839 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [11/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==2 &&r==3 &&!hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  pt 
) const
inline

Definition at line 849 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ apply_matvec_product() [12/12]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
template<ordinal_type l = leftInputRank, ordinal_type r = rightInputRank, bool hf = hasField>
KOKKOS_FORCEINLINE_FUNCTION std::enable_if_t< l==2 &&r==2 &&!hf, void > Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::apply_matvec_product ( const ordinal_type &  cl,
const ordinal_type &  pt 
) const
inline

Definition at line 861 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ operator()() [1/2]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
KOKKOS_INLINE_FUNCTION void Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::operator() ( const ordinal_type  cl,
const ordinal_type  bf,
const ordinal_type  pt 
) const
inline

Definition at line 669 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ operator()() [2/2]

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
KOKKOS_INLINE_FUNCTION void Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::operator() ( const ordinal_type  cl,
const ordinal_type  pt 
) const
inline

Definition at line 774 of file Intrepid2_ArrayToolsDefTensor.hpp.

Member Data Documentation

◆ _iend

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
const ordinal_type Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::_iend

Definition at line 654 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ _jend

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
const ordinal_type Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::_jend

Definition at line 655 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ _leftInput

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
const leftInputViewType Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::_leftInput

Definition at line 651 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ _output

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
OutputViewType Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::_output

Definition at line 650 of file Intrepid2_ArrayToolsDefTensor.hpp.

◆ _rightInput

template<typename OutputViewType , typename leftInputViewType , typename rightInputViewType , ordinal_type leftInputRank, ordinal_type rightInputRank, bool hasField, bool isTranspose>
const rightInputViewType Intrepid2::FunctorArrayTools::F_matvecProduct< OutputViewType, leftInputViewType, rightInputViewType, leftInputRank, rightInputRank, hasField, isTranspose >::_rightInput

Definition at line 652 of file Intrepid2_ArrayToolsDefTensor.hpp.


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