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 681 of file Intrepid2_ArrayToolsDefTensor.hpp.


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