Intrepid2
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 648 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 656 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 659 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==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 761 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==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 748 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==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 737 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==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 726 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==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 702 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==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 678 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==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 860 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==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 848 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==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 838 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==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 828 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==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 805 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==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 782 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 668 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 773 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 653 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 654 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 650 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 649 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 651 of file Intrepid2_ArrayToolsDefTensor.hpp.


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