|
Intrepid2
|
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::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<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. | |
| 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 |
Header function for Intrepid2::Util class and other utility functions.
Definition in file Intrepid2_Utils.hpp.
| #define INTREPID2_TEST_FOR_ABORT | ( | test, | |
| msg | |||
| ) |
Definition at line 87 of file Intrepid2_Utils.hpp.
| #define INTREPID2_TEST_FOR_DEBUG_ABORT | ( | test, | |
| info, | |||
| msg | |||
| ) |
Definition at line 107 of file Intrepid2_Utils.hpp.
| #define INTREPID2_TEST_FOR_EXCEPTION | ( | test, | |
| x, | |||
| msg | |||
| ) |
Definition at line 59 of file Intrepid2_Utils.hpp.
| #define INTREPID2_TEST_FOR_EXCEPTION_DEVICE_SAFE | ( | test, | |
| x, | |||
| msg | |||
| ) |
KK: device assert is disabled when NDEBUG is defined which behaves differently from host test.
Definition at line 70 of file Intrepid2_Utils.hpp.
| #define INTREPID2_TEST_FOR_WARNING | ( | test, | |
| msg | |||
| ) |
Definition at line 52 of file Intrepid2_Utils.hpp.
|
static |
Definition at line 271 of file Intrepid2_Utils.hpp.
| 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 827 of file Intrepid2_Utils.hpp.
References Intrepid2::copy_virtual_class_to_device().
Referenced by Intrepid2::copy_virtual_class_to_device().
|
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 305 of file Intrepid2_Utils.hpp.
References Intrepid2::dimension_scalar().
Referenced by Intrepid2::dimension_scalar(), and Intrepid2::IntegrationTools< DeviceType >::integrate().
|
constexpr |
Definition at line 311 of file Intrepid2_Utils.hpp.
|
static |
Definition at line 315 of file Intrepid2_Utils.hpp.
|
static |
Definition at line 321 of file Intrepid2_Utils.hpp.
|
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 286 of file Intrepid2_Utils.hpp.
References Intrepid2::get_scalar_value().
Referenced by Intrepid2::get_scalar_value(), and Intrepid2::Impl::OrientationTools::getCoeffMatrix_HDIV().
|
constexpr |
Definition at line 292 of file Intrepid2_Utils.hpp.
|
constexpr |
Definition at line 380 of file Intrepid2_Utils.hpp.
References Intrepid2::getFixedRank().
Referenced by Intrepid2::getFixedRank().
|
constexpr |
Definition at line 391 of file Intrepid2_Utils.hpp.
References Intrepid2::getFixedRank().
| enable_if_t< has_rank_method< Functor >::value, unsigned > KOKKOS_INLINE_FUNCTION Intrepid2::getFunctorRank | ( | const Functor & | functor | ) |
Definition at line 747 of file Intrepid2_Utils.hpp.
References Intrepid2::getFunctorRank().
Referenced by Intrepid2::copyFunctorToHostView(), Intrepid2::RealSpaceTools< DeviceType >::Serial::det(), Intrepid2::RealSpaceTools< DeviceType >::det(), Intrepid2::getFunctorRank(), Intrepid2::ViewIterator< ViewType, ScalarType >::increment(), Intrepid2::RealSpaceTools< DeviceType >::inverse(), Intrepid2::TransformedBasisValues< Scalar, DeviceType >::multiplyByPointwiseWeights(), Intrepid2::ViewIterator< ViewType, ScalarType >::nextIncrementRank(), Intrepid2::testFloatingEquality(), and Intrepid2::ViewIterator< ViewType, ScalarType >::ViewIterator().
| enable_if_t<!has_rank_method< Functor >::value, unsigned > KOKKOS_INLINE_FUNCTION Intrepid2::getFunctorRank | ( | const Functor & | functor | ) |
Definition at line 758 of file Intrepid2_Utils.hpp.
References Intrepid2::getFunctorRank().
|
inline |
Creates and returns a view that matches the provided view in Kokkos Layout.
| [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 336 of file Intrepid2_Utils.hpp.
References Intrepid2::getMatchingViewWithLabel().
Referenced by Intrepid2::Data< DataScalar, DeviceType >::allocateDynRankViewMatchingUnderlying(), Intrepid2::Data< DataScalar, DeviceType >::allocateDynRankViewMatchingUnderlying(), Intrepid2::CellGeometry< PointScalar, spaceDim, DeviceType >::allocateJacobianDataPrivate(), Intrepid2::CellTools< DeviceType >::allocateJacobianDet(), Intrepid2::CellTools< DeviceType >::allocateJacobianInv(), Intrepid2::Data< DataScalar, DeviceType >::allocateMatMatResult(), Intrepid2::CellGeometry< PointScalar, spaceDim, DeviceType >::getJacobianRefData(), Intrepid2::CellGeometry< PointScalar, spaceDim, DeviceType >::getJacobianRefData(), Intrepid2::PointTools::getLattice(), Intrepid2::getMatchingViewWithLabel(), Intrepid2::Basis_TensorBasis< BasisBaseClass >::getValues(), Intrepid2::Basis_TensorBasis< BasisBaseClass >::getValues(), Intrepid2::Basis_TensorBasis3< BasisBaseClass >::getValues(), and Intrepid2::CellGeometry< PointScalar, spaceDim, DeviceType >::setJacobianDataPrivate().
|
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 805 of file Intrepid2_Utils.hpp.
References Intrepid2::getScalarDimensionForView().
Referenced by Intrepid2::getScalarDimensionForView().
|
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 793 of file Intrepid2_Utils.hpp.
References Intrepid2::getVectorSizeForHierarchicalParallelism().
Referenced by Intrepid2::getVectorSizeForHierarchicalParallelism().
|
static |
Definition at line 265 of file Intrepid2_Utils.hpp.
|
static |
Definition at line 259 of file Intrepid2_Utils.hpp.
|
static |
Definition at line 204 of file Intrepid2_Utils.hpp.
|
static |
Definition at line 220 of file Intrepid2_Utils.hpp.
| const int Intrepid2::FAD_VECTOR_SIZE = 1 |
Definition at line 786 of file Intrepid2_Utils.hpp.
| const int Intrepid2::VECTOR_SIZE = 1 |
Definition at line 782 of file Intrepid2_Utils.hpp.