Intrepid2
Classes | Macros | Functions | Variables
Intrepid2_Utils.hpp File Reference

Header function for Intrepid2::Util class and other utility functions. More...

#include "Intrepid2_ConfigDefs.hpp"
#include "Intrepid2_DeviceAssert.hpp"
#include "Intrepid2_Types.hpp"
#include "Kokkos_Core.hpp"
#include "Kokkos_Macros.hpp"
#include "Kokkos_Random.hpp"

Go to the source code of this file.

Classes

struct  Intrepid2::ScalarTraits< T >
 scalar type traits More...
 
struct  Intrepid2::ScalarTraits< float >
 Built in support for float. More...
 
struct  Intrepid2::ScalarTraits< double >
 Built in support for double. More...
 
struct  Intrepid2::ScalarTraits< int >
 Built in support for int. More...
 
struct  Intrepid2::ScalarTraits< long int >
 Built in support for long int. More...
 
struct  Intrepid2::ScalarTraits< long long >
 Built in support for long long. More...
 
struct  Intrepid2::ExecSpace< ViewSpaceType, UserSpaceType >
 space overload More...
 
struct  Intrepid2::ExecSpace< ViewSpaceType, void >
 space overload More...
 
struct  Intrepid2::DeduceLayout< ViewType >
 layout deduction (temporary meta-function) More...
 
class  Intrepid2::Util< T >
 small utility functions More...
 
struct  Intrepid2::DeduceDynRankView< InputView >
 Used to obtain the dynRankView type from an input View,. More...
 
struct  Intrepid2::Impl::CreateViewFactory< ViewPack >
 Factory to create a view based on the properties of input views The class is useful when the view can be of Fad type It works with both DynRankViews and Views. More...
 
struct  Intrepid2::has_rank_member< T, typename >
 Tests whether a class has a member rank. Used in getFixedRank() method below, which in turn is used in the supports_rank_n helpers. More...
 
struct  Intrepid2::has_rank_member< T, decltype((void) T::rank, void())>
 Tests whether a class has a member rank. Used in getFixedRank() method below, which in turn is used in the supports_rank_n helpers. More...
 
class  Intrepid2::supports_rank_1< T >
 SFINAE helper to detect whether a type supports a 1-integral-argument operator(). More...
 
struct  Intrepid2::supports_rank_1< T >::two
 
class  Intrepid2::supports_rank_2< T >
 SFINAE helper to detect whether a type supports a 2-integral-argument operator(). More...
 
struct  Intrepid2::supports_rank_2< T >::two
 
class  Intrepid2::supports_rank_3< T >
 SFINAE helper to detect whether a type supports a 3-integral-argument operator(). More...
 
struct  Intrepid2::supports_rank_3< T >::two
 
class  Intrepid2::supports_rank_4< T >
 SFINAE helper to detect whether a type supports a 4-integral-argument operator(). More...
 
struct  Intrepid2::supports_rank_4< T >::two
 
class  Intrepid2::supports_rank_5< T >
 SFINAE helper to detect whether a type supports a 5-integral-argument operator(). More...
 
struct  Intrepid2::supports_rank_5< T >::two
 
class  Intrepid2::supports_rank_6< T >
 SFINAE helper to detect whether a type supports a 6-integral-argument operator(). More...
 
struct  Intrepid2::supports_rank_6< T >::two
 
class  Intrepid2::supports_rank_7< T >
 SFINAE helper to detect whether a type supports a 7-integral-argument operator(). More...
 
struct  Intrepid2::supports_rank_7< T >::two
 
class  Intrepid2::supports_rank< T, rank >
 SFINAE helper to detect whether a type supports a rank-integral-argument operator(). More...
 
class  Intrepid2::supports_rank< T, 1 >
 SFINAE helper to detect whether a type supports a 1-integral-argument operator(). More...
 
class  Intrepid2::supports_rank< T, 2 >
 SFINAE helper to detect whether a type supports a 2-integral-argument operator(). More...
 
class  Intrepid2::supports_rank< T, 3 >
 SFINAE helper to detect whether a type supports a 3-integral-argument operator(). More...
 
class  Intrepid2::supports_rank< T, 4 >
 SFINAE helper to detect whether a type supports a 4-integral-argument operator(). More...
 
class  Intrepid2::supports_rank< T, 5 >
 SFINAE helper to detect whether a type supports a 5-integral-argument operator(). More...
 
class  Intrepid2::supports_rank< T, 6 >
 SFINAE helper to detect whether a type supports a 6-integral-argument operator(). More...
 
class  Intrepid2::supports_rank< T, 7 >
 SFINAE helper to detect whether a type supports a 7-integral-argument operator(). More...
 
struct  Intrepid2::RankExpander< Scalar, rank >
 Helper to get Scalar[*+] where the number of *'s matches the given rank. More...
 
struct  Intrepid2::RankExpander< Scalar, 0 >
 Helper to get Scalar[*+] where the number of *'s matches the given rank. More...
 
struct  Intrepid2::RankExpander< Scalar, 1 >
 Helper to get Scalar[*+] where the number of *'s matches the given rank. More...
 
struct  Intrepid2::RankExpander< Scalar, 2 >
 Helper to get Scalar[*+] where the number of *'s matches the given rank. More...
 
struct  Intrepid2::RankExpander< Scalar, 3 >
 Helper to get Scalar[*+] where the number of *'s matches the given rank. More...
 
struct  Intrepid2::RankExpander< Scalar, 4 >
 Helper to get Scalar[*+] where the number of *'s matches the given rank. More...
 
struct  Intrepid2::RankExpander< Scalar, 5 >
 Helper to get Scalar[*+] where the number of *'s matches the given rank. More...
 
struct  Intrepid2::RankExpander< Scalar, 6 >
 Helper to get Scalar[*+] where the number of *'s matches the given rank. More...
 
struct  Intrepid2::RankExpander< Scalar, 7 >
 Helper to get Scalar[*+] where the number of *'s matches the given rank. More...
 
class  Intrepid2::has_rank_method< T >
 Tests whether a class implements rank(). Used in getFunctorRank() method below; allows us to do one thing for View and another for DynRankView and our custom Functor types. More...
 
struct  Intrepid2::has_rank_method< T >::two
 
struct  Intrepid2::NaturalLayoutForType< ValueType >
 Define layout that will allow us to wrap Sacado Scalar objects in Views without copying. More...
 
struct  Intrepid2::DeviceDeleter< Device >
 Struct for deleting device instantiation. More...
 

Macros

#define INTREPID2_TEST_FOR_WARNING(test, msg)
 
#define INTREPID2_TEST_FOR_EXCEPTION(test, x, msg)
 
#define INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE(test, x, msg)
 
#define INTREPID2_TEST_FOR_ABORT(test, msg)
 
#define INTREPID2_TEST_FOR_DEBUG_ABORT(test, info, msg)
 

Functions

template<typename IdxType , typename DimType , typename IterType >
static KOKKOS_FORCEINLINE_FUNCTION void Intrepid2::unrollIndex (IdxType &i, IdxType &j, const DimType, const DimType dim1, const IterType iter)
 
template<typename IdxType , typename DimType , typename IterType >
static KOKKOS_FORCEINLINE_FUNCTION void Intrepid2::unrollIndex (IdxType &i, IdxType &j, IdxType &k, const DimType dim0, const DimType dim1, const DimType dim2, const IterType iter)
 
template<typename T >
static KOKKOS_FORCEINLINE_FUNCTION T Intrepid2::min (const T &a, const T &b)
 
template<typename T >
static KOKKOS_FORCEINLINE_FUNCTION T Intrepid2::max (const T &a, const T &b)
 
template<typename T >
static KOKKOS_FORCEINLINE_FUNCTION T Intrepid2::abs (const T &a)
 
template<typename T >
KOKKOS_FORCEINLINE_FUNCTION constexpr std::enable_if<!(std::is_standard_layout< T >::value &&std::is_trivial< T >::value), typenameScalarTraits< T >::scalar_type >::type Intrepid2::get_scalar_value (const T &obj)
 functions returning the scalar value. for pod types, they return the input object itself. of other types it returns the member function val() of the type T. For Sacado Fad types it returns the scalar value.
 
template<typename T >
KOKKOS_FORCEINLINE_FUNCTION constexpr std::enable_if< std::is_standard_layout< T >::value &&std::is_trivial< T >::value, typenameScalarTraits< T >::scalar_type >::type Intrepid2::get_scalar_value (const T &obj)
 
template<typename T , typename ... P>
KOKKOS_INLINE_FUNCTION constexpr std::enable_if< std::is_standard_layout< T >::value &&std::is_trivial< T >::value, unsigned >::type Intrepid2::dimension_scalar (const Kokkos::DynRankView< T, P... >)
 specialization of functions for pod types, returning the scalar dimension (1 for pod types) of a view these functions are specialized in Sacado and they return the scalar dimension (i.e. the dimension of the type w.r.t. the type associated to the pointer type).
 
template<typename T , typename ... P>
KOKKOS_INLINE_FUNCTION constexpr std::enable_if< std::is_standard_layout< typenameKokkos::View< T, P... >::value_type >::value &&std::is_trivial< typenameKokkos::View< T, P... >::value_type >::value, unsigned >::type Intrepid2::dimension_scalar (const Kokkos::View< T, P... >)
 
template<typename T , typename ... P>
static KOKKOS_FORCEINLINE_FUNCTION ordinal_type Intrepid2::get_dimension_scalar (const Kokkos::DynRankView< T, P... > &view)
 
template<typename T , typename ... P>
static KOKKOS_FORCEINLINE_FUNCTION ordinal_type Intrepid2::get_dimension_scalar (const Kokkos::View< T, P... > &view)
 
template<typename OutViewType , typename InViewType , typename CtorProp , typename... Dims>
OutViewType Intrepid2::Impl::createMatchingView (const InViewType &view, const CtorProp &prop, const Dims... dims)
 Creates and returns a view that matches the value_type of the provided view The type of the output view needs to be provided It works both with DynRankViews and Views.
 
template<typename InViewType , typename CtorProp , typename... Dims>
DeduceDynRankView< InViewType >::type Intrepid2::Impl::createMatchingDynRankView (const InViewType &view, const CtorProp &prop, const Dims... dims)
 Creates and returns a view that matches the value_type of the provided view The output view type is deduced from the input view, choosing the default layout when the input view has a stride layout.
 
template<typename OutViewType , typename InViewType , typename CtorProp , typename... Dims>
KOKKOS_INLINE_FUNCTION std::enable_if< std::is_pointer_v< CtorProp > &&!std::is_convertible_v< CtorProp, constchar * >, OutViewType >::type Intrepid2::Impl::createMatchingUnmanagedView (const InViewType &view, const CtorProp &data, const Dims... dims)
 Creates an unmanaged view that matches the value_type of the provided view The type of the output view needs to be provided.
 
template<typename InViewType , typename CtorProp , typename ... Dims>
KOKKOS_INLINE_FUNCTION std::enable_if< std::is_pointer_v< CtorProp > &&!std::is_convertible_v< CtorProp, constchar * >, typenameDeduceDynRankView< InViewType >::type >::type Intrepid2::Impl::createMatchingUnmanagedDynRankView (const InViewType &view, const CtorProp &data, const Dims... dims)
 Creates an unmanaged view that matches the value_type of the provided view The output view type is deduced from the input view, choosing the default layout when the input view has a stride layout.
 
template<class ViewType , class ... DimArgs>
Kokkos::DynRankView< typename ViewType::value_type, typename DeduceLayout< ViewType >::result_layout, typename ViewType::device_type > Intrepid2::getMatchingViewWithLabel (const ViewType &view, const std::string &label, DimArgs... dims)
 Creates and returns a view that matches the provided view in Kokkos Layout. DEPRECATED, use Impl::createMatchingDynRankView instead.
 
template<class Functor , ordinal_type default_value>
constexpr enable_if_t< has_rank_member< Functor >::value, ordinal_type > Intrepid2::getFixedRank ()
 
template<class Functor , ordinal_type default_value>
constexpr enable_if_t<!has_rank_member< Functor >::value, ordinal_type > Intrepid2::getFixedRank ()
 
template<class Functor >
enable_if_t< has_rank_method< Functor >::value, unsigned > KOKKOS_INLINE_FUNCTION Intrepid2::getFunctorRank (const Functor &functor)
 
template<class Functor >
enable_if_t<!has_rank_method< Functor >::value, unsigned > KOKKOS_INLINE_FUNCTION Intrepid2::getFunctorRank (const Functor &functor)
 
template<typename Scalar >
constexpr int Intrepid2::getVectorSizeForHierarchicalParallelism ()
 Returns a vector size to be used for the provided Scalar type in the context of hierarchically-parallel Kokkos functor execution.
 
template<typename ViewType >
KOKKOS_INLINE_FUNCTION constexpr unsigned Intrepid2::getScalarDimensionForView (const ViewType &view)
 Returns the size of the Scalar dimension for the View. This is 0 for non-AD types. This method is useful for sizing scratch storage in hierarchically parallel kernels. Whereas get_dimension_scalar() returns 1 for POD types, this returns 0 for POD types.
 
template<typename Device , typename Derived >
std::unique_ptr< Derived, DeviceDeleter< Device > > Intrepid2::copy_virtual_class_to_device (const Derived &host_source)
 

Variables

const int Intrepid2::VECTOR_SIZE = 1
 
const int Intrepid2::FAD_VECTOR_SIZE = 1
 

Detailed Description

Header function for Intrepid2::Util class and other utility functions.

Author
Created by P. Bochev and D. Ridzal. Kokkorized by Kyungjoo Kim

Definition in file Intrepid2_Utils.hpp.

Macro Definition Documentation

◆ INTREPID2_TEST_FOR_ABORT

#define INTREPID2_TEST_FOR_ABORT (   test,
  msg 
)
Value:
if (test) { \
Kokkos::printf("[Intrepid2] Error in file %s, line %d\n",__FILE__,__LINE__); \
Kokkos::printf(" Test that evaluated to true: %s\n", #test); \
Kokkos::printf(" %s \n", msg); \
Kokkos::abort( "[Intrepid2] Abort\n"); \
}

Definition at line 88 of file Intrepid2_Utils.hpp.

◆ INTREPID2_TEST_FOR_DEBUG_ABORT

#define INTREPID2_TEST_FOR_DEBUG_ABORT (   test,
  info,
  msg 
)
Value:
if (!(info) && (test)) { \
Kokkos::printf("[Intrepid2] Error in file %s, line %d\n",__FILE__,__LINE__); \
Kokkos::printf(" Test that evaluated to true: %s\n", #test); \
Kokkos::printf(" %s \n", msg); \
info = true ; \
Kokkos::abort( "[Intrepid2] Abort\n"); \
}

Definition at line 108 of file Intrepid2_Utils.hpp.

◆ INTREPID2_TEST_FOR_EXCEPTION

#define INTREPID2_TEST_FOR_EXCEPTION (   test,
  x,
  msg 
)
Value:
if (test) { \
Kokkos::printf("[Intrepid2] Error in file %s, line %d\n",__FILE__,__LINE__); \
Kokkos::printf(" Test that evaluated to true: %s\n", #test); \
Kokkos::printf(" %s \n", msg); \
throw x(msg); \
}

Definition at line 60 of file Intrepid2_Utils.hpp.

◆ INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE

#define INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE (   test,
  x,
  msg 
)
Value:
if (test) { \
std::cout << "[Intrepid2] Error in file " << __FILE__ << ", line " << __LINE__ << "\n"; \
std::cout << " Test that evaluated to true: " << #test << "\n"; \
std::cout << " " << msg << " \n"; \
throw x(msg); \
}

KK: device assert is disabled when NDEBUG is defined which behaves differently from host test.

Definition at line 71 of file Intrepid2_Utils.hpp.

◆ INTREPID2_TEST_FOR_WARNING

#define INTREPID2_TEST_FOR_WARNING (   test,
  msg 
)
Value:
if (test) { \
Kokkos::printf("[Intrepid2] Warning in file %s, line %d\n",__FILE__,__LINE__); \
Kokkos::printf(" Test that evaluated to true: %s\n", #test); \
Kokkos::printf(" %s \n", msg); \
}

Definition at line 53 of file Intrepid2_Utils.hpp.

Function Documentation

◆ abs()

template<typename T >
static KOKKOS_FORCEINLINE_FUNCTION T Intrepid2::abs ( const T &  a)
static

Definition at line 272 of file Intrepid2_Utils.hpp.

◆ copy_virtual_class_to_device()

template<typename Device , typename Derived >
std::unique_ptr< Derived, DeviceDeleter< Device > > Intrepid2::copy_virtual_class_to_device ( const Derived &  host_source)

Function for creating a vtable on device (requires copy ctor for derived object). Allocates device memory and must be called from host.

Definition at line 929 of file Intrepid2_Utils.hpp.

References Intrepid2::copy_virtual_class_to_device().

Referenced by Intrepid2::copy_virtual_class_to_device().

◆ createMatchingDynRankView()

template<typename InViewType , typename CtorProp , typename... Dims>
DeduceDynRankView< InViewType >::type Intrepid2::Impl::createMatchingDynRankView ( const InViewType &  view,
const CtorProp &  prop,
const Dims...  dims 
)

Creates and returns a view that matches the value_type of the provided view The output view type is deduced from the input view, choosing the default layout when the input view has a stride layout.

Parameters
[in]view- the view(s) to match
[in]prop- the properties (e.g., label)
[in]dims- dimensions to use for the view (the logical dimensions; this method handles adding the derivative dimension required for Fad types).

Definition at line 390 of file Intrepid2_Utils.hpp.

References Intrepid2::Impl::createMatchingDynRankView().

Referenced by Intrepid2::Impl::createMatchingDynRankView().

◆ createMatchingUnmanagedDynRankView()

template<typename InViewType , typename CtorProp , typename ... Dims>
KOKKOS_INLINE_FUNCTION std::enable_if< std::is_pointer_v< CtorProp > &&!std::is_convertible_v< CtorProp, constchar * >, typenameDeduceDynRankView< InViewType >::type >::type Intrepid2::Impl::createMatchingUnmanagedDynRankView ( const InViewType &  view,
const CtorProp &  data,
const Dims...  dims 
)

Creates an unmanaged view that matches the value_type of the provided view The output view type is deduced from the input view, choosing the default layout when the input view has a stride layout.

Parameters
[in]view- the view(s) to match
[in]data- pointer to array
[in]dims- dimensions to use for the view (the logical dimensions; this method handles adding the derivative dimension required for Fad types).

Definition at line 439 of file Intrepid2_Utils.hpp.

References Intrepid2::Impl::createMatchingUnmanagedDynRankView().

Referenced by Intrepid2::Impl::createMatchingUnmanagedDynRankView().

◆ createMatchingUnmanagedView()

template<typename OutViewType , typename InViewType , typename CtorProp , typename... Dims>
KOKKOS_INLINE_FUNCTION std::enable_if< std::is_pointer_v< CtorProp > &&!std::is_convertible_v< CtorProp, constchar * >, OutViewType >::type Intrepid2::Impl::createMatchingUnmanagedView ( const InViewType &  view,
const CtorProp &  data,
const Dims...  dims 
)

Creates an unmanaged view that matches the value_type of the provided view The type of the output view needs to be provided.

Parameters
[in]view- the view(s) to match
[in]view- the view(s) to match
[in]data- pointer to array
[in]dims- dimensions to use for the view (the logical dimensions; this method handles adding the derivative dimension required for Fad types).

Definition at line 409 of file Intrepid2_Utils.hpp.

References Intrepid2::Impl::createMatchingUnmanagedView().

Referenced by Intrepid2::Impl::createMatchingUnmanagedView().

◆ createMatchingView()

template<typename OutViewType , typename InViewType , typename CtorProp , typename... Dims>
OutViewType Intrepid2::Impl::createMatchingView ( const InViewType &  view,
const CtorProp &  prop,
const Dims...  dims 
)

Creates and returns a view that matches the value_type of the provided view The type of the output view needs to be provided It works both with DynRankViews and Views.

Parameters
[in]view- the view(s) to match
[in]prop- the properties (e.g., label)
[in]dims- dimensions to use for the view (the logical dimensions; this method handles adding the derivative dimension required for Fad types).

Definition at line 375 of file Intrepid2_Utils.hpp.

References Intrepid2::Impl::createMatchingView().

Referenced by Intrepid2::Impl::createMatchingView().

◆ dimension_scalar() [1/2]

template<typename T , typename ... P>
KOKKOS_INLINE_FUNCTION constexpr std::enable_if< std::is_standard_layout< T >::value &&std::is_trivial< T >::value, unsigned >::type Intrepid2::dimension_scalar ( const Kokkos::DynRankView< T, P... >  )
constexpr

specialization of functions for pod types, returning the scalar dimension (1 for pod types) of a view these functions are specialized in Sacado and they return the scalar dimension (i.e. the dimension of the type w.r.t. the type associated to the pointer type).

Definition at line 306 of file Intrepid2_Utils.hpp.

References Intrepid2::dimension_scalar().

Referenced by Intrepid2::dimension_scalar(), and Intrepid2::IntegrationTools< DeviceType >::integrate().

◆ dimension_scalar() [2/2]

template<typename T , typename ... P>
KOKKOS_INLINE_FUNCTION constexpr std::enable_if< std::is_standard_layout< typenameKokkos::View< T, P... >::value_type >::value &&std::is_trivial< typenameKokkos::View< T, P... >::value_type >::value, unsigned >::type Intrepid2::dimension_scalar ( const Kokkos::View< T, P... >  )
constexpr

Definition at line 312 of file Intrepid2_Utils.hpp.

◆ get_dimension_scalar() [1/2]

template<typename T , typename ... P>
static KOKKOS_FORCEINLINE_FUNCTION ordinal_type Intrepid2::get_dimension_scalar ( const Kokkos::DynRankView< T, P... > &  view)
static

Definition at line 316 of file Intrepid2_Utils.hpp.

◆ get_dimension_scalar() [2/2]

template<typename T , typename ... P>
static KOKKOS_FORCEINLINE_FUNCTION ordinal_type Intrepid2::get_dimension_scalar ( const Kokkos::View< T, P... > &  view)
static

Definition at line 322 of file Intrepid2_Utils.hpp.

◆ get_scalar_value() [1/2]

template<typename T >
KOKKOS_FORCEINLINE_FUNCTION constexpr std::enable_if<!(std::is_standard_layout< T >::value &&std::is_trivial< T >::value), typenameScalarTraits< T >::scalar_type >::type Intrepid2::get_scalar_value ( const T &  obj)
constexpr

functions returning the scalar value. for pod types, they return the input object itself. of other types it returns the member function val() of the type T. For Sacado Fad types it returns the scalar value.

Definition at line 287 of file Intrepid2_Utils.hpp.

References Intrepid2::get_scalar_value().

Referenced by Intrepid2::get_scalar_value(), and Intrepid2::Impl::OrientationTools::getCoeffMatrix_HDIV().

◆ get_scalar_value() [2/2]

template<typename T >
KOKKOS_FORCEINLINE_FUNCTION constexpr std::enable_if< std::is_standard_layout< T >::value &&std::is_trivial< T >::value, typenameScalarTraits< T >::scalar_type >::type Intrepid2::get_scalar_value ( const T &  obj)
constexpr

Definition at line 293 of file Intrepid2_Utils.hpp.

◆ getFixedRank() [1/2]

template<class Functor , ordinal_type default_value>
constexpr enable_if_t< has_rank_member< Functor >::value, ordinal_type > Intrepid2::getFixedRank ( )
constexpr
Returns
functor.rank if the functor has a static rank member; returns specified default_value otherwise.

Definition at line 485 of file Intrepid2_Utils.hpp.

References Intrepid2::getFixedRank().

Referenced by Intrepid2::getFixedRank().

◆ getFixedRank() [2/2]

template<class Functor , ordinal_type default_value>
constexpr enable_if_t<!has_rank_member< Functor >::value, ordinal_type > Intrepid2::getFixedRank ( )
constexpr
Returns
functor.rank if the functor has a static rank member; returns specified default_value otherwise.

Definition at line 496 of file Intrepid2_Utils.hpp.

References Intrepid2::getFixedRank().

◆ getFunctorRank() [1/2]

template<class Functor >
enable_if_t< has_rank_method< Functor >::value, unsigned > KOKKOS_INLINE_FUNCTION Intrepid2::getFunctorRank ( const Functor &  functor)

◆ getFunctorRank() [2/2]

template<class Functor >
enable_if_t<!has_rank_method< Functor >::value, unsigned > KOKKOS_INLINE_FUNCTION Intrepid2::getFunctorRank ( const Functor &  functor)
Returns
functor.rank() if the functor implements rank(); functor.rank otherwise.

Definition at line 860 of file Intrepid2_Utils.hpp.

References Intrepid2::getFunctorRank().

◆ getMatchingViewWithLabel()

template<class ViewType , class ... DimArgs>
Kokkos::DynRankView< typename ViewType::value_type, typename DeduceLayout< ViewType >::result_layout, typename ViewType::device_type > Intrepid2::getMatchingViewWithLabel ( const ViewType &  view,
const std::string &  label,
DimArgs...  dims 
)
inline

Creates and returns a view that matches the provided view in Kokkos Layout. DEPRECATED, use Impl::createMatchingDynRankView instead.

Parameters
[in]view- the view to match
[in]label- a string label for the view to be created
[in]dims- dimensions to use for the view (the logical dimensions; this method handles adding the derivative dimension required for Fad types).

This method is particularly useful because we use LayoutStride as the Kokkos Layout in a number of places, and LayoutStride views cannot be instantiated without also providing stride information.

Definition at line 458 of file Intrepid2_Utils.hpp.

References Intrepid2::getMatchingViewWithLabel().

Referenced by Intrepid2::getMatchingViewWithLabel().

◆ getScalarDimensionForView()

template<typename ViewType >
KOKKOS_INLINE_FUNCTION constexpr unsigned Intrepid2::getScalarDimensionForView ( const ViewType &  view)
constexpr

Returns the size of the Scalar dimension for the View. This is 0 for non-AD types. This method is useful for sizing scratch storage in hierarchically parallel kernels. Whereas get_dimension_scalar() returns 1 for POD types, this returns 0 for POD types.

Definition at line 907 of file Intrepid2_Utils.hpp.

References Intrepid2::getScalarDimensionForView().

Referenced by Intrepid2::getScalarDimensionForView().

◆ getVectorSizeForHierarchicalParallelism()

template<typename Scalar >
constexpr int Intrepid2::getVectorSizeForHierarchicalParallelism ( )
constexpr

Returns a vector size to be used for the provided Scalar type in the context of hierarchically-parallel Kokkos functor execution.

Definition at line 895 of file Intrepid2_Utils.hpp.

References Intrepid2::getVectorSizeForHierarchicalParallelism().

Referenced by Intrepid2::getVectorSizeForHierarchicalParallelism().

◆ max()

template<typename T >
static KOKKOS_FORCEINLINE_FUNCTION T Intrepid2::max ( const T &  a,
const T &  b 
)
static

Definition at line 266 of file Intrepid2_Utils.hpp.

◆ min()

template<typename T >
static KOKKOS_FORCEINLINE_FUNCTION T Intrepid2::min ( const T &  a,
const T &  b 
)
static

Definition at line 260 of file Intrepid2_Utils.hpp.

◆ unrollIndex() [1/2]

template<typename IdxType , typename DimType , typename IterType >
static KOKKOS_FORCEINLINE_FUNCTION void Intrepid2::unrollIndex ( IdxType &  i,
IdxType &  j,
const DimType  ,
const DimType  dim1,
const IterType  iter 
)
static

Definition at line 205 of file Intrepid2_Utils.hpp.

◆ unrollIndex() [2/2]

template<typename IdxType , typename DimType , typename IterType >
static KOKKOS_FORCEINLINE_FUNCTION void Intrepid2::unrollIndex ( IdxType &  i,
IdxType &  j,
IdxType &  k,
const DimType  dim0,
const DimType  dim1,
const DimType  dim2,
const IterType  iter 
)
static

Definition at line 221 of file Intrepid2_Utils.hpp.

Variable Documentation

◆ FAD_VECTOR_SIZE

const int Intrepid2::FAD_VECTOR_SIZE = 1

Definition at line 888 of file Intrepid2_Utils.hpp.

◆ VECTOR_SIZE

const int Intrepid2::VECTOR_SIZE = 1

Definition at line 884 of file Intrepid2_Utils.hpp.