|
libMesh
|
Namespaces | |
| namespace | detail |
Classes | |
| struct | is_tensor_like |
Opt-in trait marking the types the generic tensor operations in kokkos_tensor_ops.h accept, all of which expose components as T(i,j): specialized below for the libMesh owning tensor types and tensor_ref. More... | |
| struct | is_tensor_like< libMesh::TensorValue< T > > |
| struct | is_tensor_like< libMesh::TypeTensor< T > > |
| struct | is_tensor_like< tensor_ref< ViewType > > |
| struct | is_tensor_ref |
| Type trait satisfied only by tensor_ref instantiations; the tensor-ref analogue of is_vector_ref. More... | |
| struct | is_tensor_ref< tensor_ref< ViewType > > |
| struct | is_vector_like |
Opt-in trait marking the types the generic vector operations in kokkos_vector_ops.h (and their SFINAE constraints) accept, all of which expose components as v(i): specialized below for the libMesh owning vector types and vector_ref. More... | |
| struct | is_vector_like< libMesh::Point > |
| struct | is_vector_like< libMesh::TypeVector< T > > |
| struct | is_vector_like< libMesh::VectorValue< T > > |
| struct | is_vector_like< vector_ref< ViewType > > |
| struct | is_vector_ref |
| Type trait satisfied only by vector_ref instantiations. More... | |
| struct | is_vector_ref< vector_ref< ViewType > > |
| struct | static_dim_storage_policy |
| Storage policy describing Kokkos views that hold runtime-many vectors or tensors whose per-entry dimensions are fixed at LIBMESH_DIM. More... | |
| class | tensor_ref |
| Non-owning handle to one tensor entry of a Kokkos storage view. More... | |
| struct | tensor_traits |
| Traits mapping each tensor-like type to its "semantic" owning libMesh type. More... | |
| struct | tensor_traits< libMesh::TensorValue< T > > |
| struct | tensor_traits< libMesh::TypeTensor< T > > |
| struct | tensor_traits< tensor_ref< ViewType > > |
| class | vector_ref |
| Non-owning handle to one vector entry of a Kokkos storage view. More... | |
| struct | vector_traits |
| Traits mapping each vector-like type to its "semantic" owning libMesh type - the type an algorithm should return when it needs to materialize a result from that input. More... | |
| struct | vector_traits< libMesh::Point > |
| struct | vector_traits< libMesh::TypeVector< T > > |
| struct | vector_traits< libMesh::VectorValue< T > > |
| struct | vector_traits< vector_ref< ViewType > > |
Typedefs | |
| template<typename T > | |
| using | vector_semantic_type_t = typename vector_traits< detail::remove_cvref_t< T > >::semantic_type |
The owning libMesh type a vector-like T materializes to, with any cv/reference qualification on T stripped first. | |
| template<typename T > | |
| using | tensor_semantic_type_t = typename tensor_traits< detail::remove_cvref_t< T > >::semantic_type |
The owning libMesh type a tensor-like T materializes to, with any cv/reference qualification on T stripped first. | |
| using | layout_left_storage_policy = static_dim_storage_policy< libMesh::Real, ::Kokkos::LayoutLeft > |
Convenience policies for libMesh's default Real scalar type with the two standard Kokkos layouts, plus the default policy used by the policy-free convenience overloads below. | |
| using | layout_right_storage_policy = static_dim_storage_policy< libMesh::Real, ::Kokkos::LayoutRight > |
| using | default_storage_policy = layout_right_storage_policy |
Functions | |
| template<typename ViewType > | |
| LIBMESH_DEVICE_INLINE vector_ref< typename std::remove_reference< ViewType >::type > | make_vector_ref (ViewType &&view, const unsigned int index) |
| template<typename ViewType > | |
| LIBMESH_DEVICE_INLINE tensor_ref< typename std::remove_reference< ViewType >::type > | make_tensor_ref (ViewType &&view, const unsigned int index) |
| template<typename OutputVector , typename VectorLike > | |
| LIBMESH_DEVICE_INLINE OutputVector | materialize_vector (const VectorLike &v) |
| template<typename OutputTensor , typename TensorLike > | |
| LIBMESH_DEVICE_INLINE OutputTensor | materialize_tensor (const TensorLike &T_in) |
| template<typename VectorType , typename ViewType > | |
| LIBMESH_DEVICE_INLINE VectorType | load_vector (const ViewType &view, const unsigned int i) |
| template<typename ViewType , typename VectorType > | |
| LIBMESH_DEVICE_INLINE void | store_vector (const ViewType &view, const unsigned int i, const VectorType &v) |
Copies the components of the vector v into entry i of the vector view view, overwriting whatever that entry held. | |
| template<typename TensorType , typename ViewType > | |
| LIBMESH_DEVICE_INLINE TensorType | load_tensor (const ViewType &view, const unsigned int i) |
| template<typename ViewType , typename TensorType > | |
| LIBMESH_DEVICE_INLINE void | store_tensor (const ViewType &view, const unsigned int i, const TensorType &T) |
Copies the components of the tensor T into entry i of the tensor view view, overwriting whatever that entry held. | |
| template<typename StoragePolicy > | |
| constexpr const char * | storage_policy_name () |
| template<typename StoragePolicy > | |
| StoragePolicy::vector_view | make_vector_storage (const char *label, const std::size_t n) |
| default_storage_policy::vector_view | make_vector_storage (const char *label, const std::size_t n) |
| template<typename StoragePolicy > | |
| StoragePolicy::tensor_view | make_tensor_storage (const char *label, const std::size_t n) |
| default_storage_policy::tensor_view | make_tensor_storage (const char *label, const std::size_t n) |
| template<typename StoragePolicy , typename VectorType > | |
| StoragePolicy::vector_view | upload_vector_storage (const std::vector< VectorType > &values, const char *label) |
Allocates a device view sized for values, copies each vector's components into a host mirror, and deep-copies the result to the device. | |
| template<typename VectorType > | |
| default_storage_policy::vector_view | upload_vector_storage (const std::vector< VectorType > &values, const char *label) |
| template<typename StoragePolicy , typename TensorType > | |
| StoragePolicy::tensor_view | upload_tensor_storage (const std::vector< TensorType > &values, const char *label) |
Allocates a device view sized for values, copies each tensor's components into a host mirror, and deep-copies the result to the device. | |
| template<typename TensorType > | |
| default_storage_policy::tensor_view | upload_tensor_storage (const std::vector< TensorType > &values, const char *label) |
| template<typename ResultTensor > | |
| LIBMESH_DEVICE_INLINE ResultTensor | tensor_identity (const unsigned int dim=LIBMESH_DIM) |
| template<typename ResultTensor = void, typename TensorLike > | |
| LIBMESH_DEVICE_INLINE auto | copy_tensor (const TensorLike &T_in) -> std::conditional_t< std::is_void< ResultTensor >::value, tensor_semantic_type_t< TensorLike >, ResultTensor > |
| template<typename LeftTensor , typename RightTensor , typename std::enable_if< is_tensor_like_v< LeftTensor > &&is_tensor_like_v< RightTensor >, int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | contract (const LeftTensor &left, const RightTensor &right) |
| template<typename ResultTensor = void, typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | outer_product (const LeftVector &left, const RightVector &right) -> std::enable_if_t< is_vector_like_v< LeftVector > &&is_vector_like_v< RightVector >, std::conditional_t< std::is_void< ResultTensor >::value, libMesh::TypeTensor< typename LeftVector::value_type >, ResultTensor > > |
| template<typename ResultTensor = void, typename TensorLike > | |
| LIBMESH_DEVICE_INLINE auto | transpose (const TensorLike &T_in) -> std::enable_if_t< is_tensor_like_v< TensorLike >, std::conditional_t< std::is_void< ResultTensor >::value, tensor_semantic_type_t< TensorLike >, ResultTensor > > |
| template<typename TensorLike > | |
| LIBMESH_DEVICE_INLINE auto | det (const TensorLike &T_in) -> std::enable_if_t< is_tensor_like_v< TensorLike >, decltype(T_in.det())> |
| template<typename ResultTensor = void, typename TensorLike > | |
| LIBMESH_DEVICE_INLINE auto | inverse (const TensorLike &T_in, const unsigned int dim=LIBMESH_DIM) -> std::enable_if_t< is_tensor_like_v< TensorLike >, std::conditional_t< std::is_void< ResultTensor >::value, tensor_semantic_type_t< TensorLike >, ResultTensor > > |
| template<typename ResultVector = void, typename TensorLike > | |
| LIBMESH_DEVICE_INLINE auto | row (const TensorLike &T_in, const unsigned int i) -> std::enable_if_t< is_tensor_like_v< TensorLike >, std::conditional_t< std::is_void< ResultVector >::value, libMesh::TypeVector< typename TensorLike::value_type >, ResultVector > > |
| template<typename ResultVector = void, typename TensorLike > | |
| LIBMESH_DEVICE_INLINE auto | column (const TensorLike &T_in, const unsigned int i) -> std::enable_if_t< is_tensor_like_v< TensorLike >, std::conditional_t< std::is_void< ResultVector >::value, libMesh::TypeVector< typename TensorLike::value_type >, ResultVector > > |
| template<typename LeftTensor , typename RightTensor > | |
| LIBMESH_DEVICE_INLINE auto | operator+= (LeftTensor &left, const RightTensor &right) -> std::enable_if_t< is_tensor_like_v< LeftTensor > &&is_tensor_like_v< RightTensor > &&(is_tensor_ref_v< LeftTensor >||is_tensor_ref_v< RightTensor >), LeftTensor & > |
Adds right to left in place; when left is a ref, the update writes through to the underlying storage. | |
| template<typename LeftTensor , typename RightTensor > | |
| LIBMESH_DEVICE_INLINE auto | operator-= (LeftTensor &left, const RightTensor &right) -> std::enable_if_t< is_tensor_like_v< LeftTensor > &&is_tensor_like_v< RightTensor > &&(is_tensor_ref_v< LeftTensor >||is_tensor_ref_v< RightTensor >), LeftTensor & > |
Subtracts right from left in place. | |
| template<typename TensorLike > | |
| LIBMESH_DEVICE_INLINE auto | operator- (const TensorLike &T_in) -> std::enable_if_t< is_tensor_like_v< TensorLike > &&is_tensor_ref_v< TensorLike >, tensor_semantic_type_t< TensorLike > > |
| template<typename LeftTensor , typename RightTensor > | |
| LIBMESH_DEVICE_INLINE auto | operator+ (const LeftTensor &left, const RightTensor &right) -> std::enable_if_t< is_tensor_like_v< LeftTensor > &&is_tensor_like_v< RightTensor > &&(is_tensor_ref_v< LeftTensor >||is_tensor_ref_v< RightTensor >), tensor_semantic_type_t< LeftTensor > > |
| template<typename LeftTensor , typename RightTensor > | |
| LIBMESH_DEVICE_INLINE auto | operator- (const LeftTensor &left, const RightTensor &right) -> std::enable_if_t< is_tensor_like_v< LeftTensor > &&is_tensor_like_v< RightTensor > &&(is_tensor_ref_v< LeftTensor >||is_tensor_ref_v< RightTensor >), tensor_semantic_type_t< LeftTensor > > |
| template<typename Scalar , typename TensorLike , typename std::enable_if<!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar > &&is_tensor_like_v< TensorLike > &&is_tensor_ref_v< TensorLike >, int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | operator* (const Scalar &alpha, const TensorLike &T_in) |
| template<typename TensorLike , typename Scalar , typename std::enable_if< is_tensor_like_v< TensorLike > &&is_tensor_ref_v< TensorLike > &&!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar >, int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | operator* (const TensorLike &T_in, const Scalar &alpha) |
| template<typename TensorLike , typename Scalar > | |
| LIBMESH_DEVICE_INLINE auto | operator/ (const TensorLike &T_in, const Scalar &alpha) -> std::enable_if_t< is_tensor_like_v< TensorLike > &&is_tensor_ref_v< TensorLike > &&!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar >, tensor_semantic_type_t< TensorLike > > |
| template<typename LeftTensor , typename RightTensor , typename std::enable_if< is_tensor_like_v< LeftTensor > &&is_tensor_like_v< RightTensor > &&(is_tensor_ref_v< LeftTensor >||is_tensor_ref_v< RightTensor >), int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | operator* (const LeftTensor &left, const RightTensor &right) |
| template<typename TensorLike , typename VectorLike , typename std::enable_if< is_tensor_like_v< TensorLike > &&is_vector_like_v< VectorLike > &&(is_tensor_ref_v< TensorLike >||is_vector_ref_v< VectorLike >), int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | operator* (const TensorLike &T_in, const VectorLike &v) |
| template<typename VectorLike , typename TensorLike , typename std::enable_if< is_vector_like_v< VectorLike > &&is_tensor_like_v< TensorLike > &&(is_vector_ref_v< VectorLike >||is_tensor_ref_v< TensorLike >), int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | operator* (const VectorLike &v, const TensorLike &T_in) |
| template<typename LeftTensor , typename RightTensor > | |
| LIBMESH_DEVICE_INLINE auto | operator== (const LeftTensor &left, const RightTensor &right) -> std::enable_if_t< is_tensor_like_v< LeftTensor > &&is_tensor_like_v< RightTensor > &&(is_tensor_ref_v< LeftTensor >||is_tensor_ref_v< RightTensor >), bool > |
| template<typename LeftTensor , typename RightTensor > | |
| LIBMESH_DEVICE_INLINE auto | operator!= (const LeftTensor &left, const RightTensor &right) -> std::enable_if_t< is_tensor_like_v< LeftTensor > &&is_tensor_like_v< RightTensor > &&(is_tensor_ref_v< LeftTensor >||is_tensor_ref_v< RightTensor >), bool > |
| template<typename LeftTensor , typename Scalar > | |
| LIBMESH_DEVICE_INLINE auto | operator*= (LeftTensor &left, const Scalar &alpha) -> std::enable_if_t< is_tensor_like_v< LeftTensor > &&is_tensor_ref_v< LeftTensor > &&!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar >, LeftTensor & > |
Scales left by alpha in place. | |
| template<typename LeftTensor , typename Scalar > | |
| LIBMESH_DEVICE_INLINE auto | operator/= (LeftTensor &left, const Scalar &alpha) -> std::enable_if_t< is_tensor_like_v< LeftTensor > &&is_tensor_ref_v< LeftTensor > &&!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar >, LeftTensor & > |
Divides left by alpha in place. | |
| template<typename ResultVector = void, typename VectorLike > | |
| LIBMESH_DEVICE_INLINE auto | copy_vector (const VectorLike &v) -> std::conditional_t< std::is_void< ResultVector >::value, vector_semantic_type_t< VectorLike >, ResultVector > |
| template<typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | vector_dot (const LeftVector &left, const RightVector &right) |
| template<typename ResultVector = void, typename VectorLike > | |
| LIBMESH_DEVICE_INLINE auto | vector_unit (const VectorLike &v) -> std::conditional_t< std::is_void< ResultVector >::value, vector_semantic_type_t< VectorLike >, ResultVector > |
| template<typename ResultVector = void, typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | vector_cross (const LeftVector &left, const RightVector &right) -> std::conditional_t< std::is_void< ResultVector >::value, vector_semantic_type_t< LeftVector >, ResultVector > |
| template<typename LeftVector , typename MiddleVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | vector_triple_product (const LeftVector &left, const MiddleVector &middle, const RightVector &right) |
| template<typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | vector_cross_norm_sq (const LeftVector &left, const RightVector &right) |
| template<typename VectorA , typename VectorB , typename VectorC > | |
| LIBMESH_DEVICE_INLINE auto | vector_solid_angle (const VectorA &v01, const VectorB &v02, const VectorC &v03) |
| template<typename LeftVector , typename RightVector , typename std::enable_if< is_vector_like_v< LeftVector > &&is_vector_like_v< RightVector >, int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | contract (const LeftVector &left, const RightVector &right) |
| template<typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | operator+= (LeftVector &left, const RightVector &right) -> std::enable_if_t< is_vector_like_v< LeftVector > &&is_vector_like_v< RightVector > &&(is_vector_ref_v< LeftVector >||is_vector_ref_v< RightVector >), LeftVector & > |
Adds right to left in place; when left is a ref, the update writes through to the underlying storage. | |
| template<typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | operator-= (LeftVector &left, const RightVector &right) -> std::enable_if_t< is_vector_like_v< LeftVector > &&is_vector_like_v< RightVector > &&(is_vector_ref_v< LeftVector >||is_vector_ref_v< RightVector >), LeftVector & > |
Subtracts right from left in place. | |
| template<typename VectorLike > | |
| LIBMESH_DEVICE_INLINE auto | operator- (const VectorLike &v) -> std::enable_if_t< is_vector_like_v< VectorLike > &&is_vector_ref_v< VectorLike >, vector_semantic_type_t< VectorLike > > |
| template<typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | operator+ (const LeftVector &left, const RightVector &right) -> std::enable_if_t< is_vector_like_v< LeftVector > &&is_vector_like_v< RightVector > &&(is_vector_ref_v< LeftVector >||is_vector_ref_v< RightVector >), vector_semantic_type_t< LeftVector > > |
| template<typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | operator- (const LeftVector &left, const RightVector &right) -> std::enable_if_t< is_vector_like_v< LeftVector > &&is_vector_like_v< RightVector > &&(is_vector_ref_v< LeftVector >||is_vector_ref_v< RightVector >), vector_semantic_type_t< LeftVector > > |
| template<typename LeftVector , typename RightVector , typename std::enable_if< is_vector_like_v< LeftVector > &&is_vector_like_v< RightVector > &&(is_vector_ref_v< LeftVector >||is_vector_ref_v< RightVector >), int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | operator* (const LeftVector &left, const RightVector &right) |
| template<typename Scalar , typename VectorLike , typename std::enable_if<!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar > &&is_vector_like_v< VectorLike > &&is_vector_ref_v< VectorLike >, int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | operator* (const Scalar &alpha, const VectorLike &v) |
| template<typename VectorLike , typename Scalar , typename std::enable_if< is_vector_like_v< VectorLike > &&is_vector_ref_v< VectorLike > &&!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar >, int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | operator* (const VectorLike &v, const Scalar &alpha) |
| template<typename VectorLike , typename Scalar , typename std::enable_if< is_vector_like_v< VectorLike > &&is_vector_ref_v< VectorLike > &&!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar >, int >::type = 0> | |
| LIBMESH_DEVICE_INLINE auto | operator/ (const VectorLike &v, const Scalar &alpha) |
| template<typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | operator== (const LeftVector &left, const RightVector &right) -> std::enable_if_t< is_vector_like_v< LeftVector > &&is_vector_like_v< RightVector > &&(is_vector_ref_v< LeftVector >||is_vector_ref_v< RightVector >), bool > |
| template<typename LeftVector , typename RightVector > | |
| LIBMESH_DEVICE_INLINE auto | operator!= (const LeftVector &left, const RightVector &right) -> std::enable_if_t< is_vector_like_v< LeftVector > &&is_vector_like_v< RightVector > &&(is_vector_ref_v< LeftVector >||is_vector_ref_v< RightVector >), bool > |
| template<typename LeftVector , typename Scalar > | |
| LIBMESH_DEVICE_INLINE auto | operator*= (LeftVector &left, const Scalar &alpha) -> std::enable_if_t< is_vector_like_v< LeftVector > &&is_vector_ref_v< LeftVector > &&!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar >, LeftVector & > |
Scales left by alpha in place. | |
| template<typename LeftVector , typename Scalar > | |
| LIBMESH_DEVICE_INLINE auto | operator/= (LeftVector &left, const Scalar &alpha) -> std::enable_if_t< is_vector_like_v< LeftVector > &&is_vector_ref_v< LeftVector > &&!is_vector_like_v< Scalar > &&!is_tensor_like_v< Scalar >, LeftVector & > |
Divides left by alpha in place. | |
Variables | |
| template<typename T > | |
| constexpr bool | is_vector_like_v = is_vector_like<detail::remove_cvref_t<T>>::value |
| Variable template shorthands for the traits above. | |
| template<typename T > | |
| constexpr bool | is_tensor_like_v = is_tensor_like<detail::remove_cvref_t<T>>::value |
| template<typename T > | |
| constexpr bool | is_vector_ref_v = is_vector_ref<detail::remove_cvref_t<T>>::value |
| template<typename T > | |
| constexpr bool | is_tensor_ref_v = is_tensor_ref<detail::remove_cvref_t<T>>::value |
| using libMesh::Kokkos::default_storage_policy = typedef layout_right_storage_policy |
Definition at line 100 of file kokkos_storage_policy.h.
| using libMesh::Kokkos::layout_left_storage_policy = typedef static_dim_storage_policy<libMesh::Real, ::Kokkos::LayoutLeft> |
Convenience policies for libMesh's default Real scalar type with the two standard Kokkos layouts, plus the default policy used by the policy-free convenience overloads below.
LayoutRight keeps each entry's components contiguous in memory, the natural arrangement when one thread works on one whole entry; LayoutLeft keeps a given component contiguous across entries, the coalescing-friendly arrangement for GPU thread teams. The Kokkos unit tests run under both policies to keep the algebra layout-agnostic.
Definition at line 98 of file kokkos_storage_policy.h.
| using libMesh::Kokkos::layout_right_storage_policy = typedef static_dim_storage_policy<libMesh::Real, ::Kokkos::LayoutRight> |
Definition at line 99 of file kokkos_storage_policy.h.
| using libMesh::Kokkos::tensor_semantic_type_t = typedef typename tensor_traits<detail::remove_cvref_t<T> >::semantic_type |
The owning libMesh type a tensor-like T materializes to, with any cv/reference qualification on T stripped first.
Definition at line 620 of file kokkos_linalg_base.h.
| using libMesh::Kokkos::vector_semantic_type_t = typedef typename vector_traits<detail::remove_cvref_t<T> >::semantic_type |
The owning libMesh type a vector-like T materializes to, with any cv/reference qualification on T stripped first.
Definition at line 613 of file kokkos_linalg_base.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::column | ( | const TensorLike & | T_in, |
| const unsigned int | i | ||
| ) | -> std::enable_if_t<is_tensor_like_v<TensorLike>, std::conditional_t<std::is_void<ResultVector>::value, libMesh::TypeVector<typename TensorLike::value_type>, ResultVector>> |
i of the tensor-like T_in, as an owning vector. Definition at line 578 of file kokkos_tensor_ops.h.
Referenced by libMesh::Kokkos::tensor_ref< ViewType >::column().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::contract | ( | const LeftTensor & | left, |
| const RightTensor & | right | ||
| ) |
left with right; the tensor overload of the contract() name shared with kokkos_vector_ops.h. Definition at line 479 of file kokkos_tensor_ops.h.
References libMesh::Kokkos::detail::tensor_contract().
Referenced by libMesh::Kokkos::tensor_ref< ViewType >::contract(), and libMesh::Kokkos::vector_ref< ViewType >::contract().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::contract | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) |
left and right; a synonym for vector_dot() matching the TypeVector::contract() name. Definition at line 370 of file kokkos_vector_ops.h.
References vector_dot().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::copy_tensor | ( | const TensorLike & | T_in | ) | -> std::conditional_t<std::is_void<ResultTensor>::value, tensor_semantic_type_t<TensorLike>, ResultTensor> |
T_in: by default a value of T_in 's semantic type, or of ResultTensor if that parameter is given explicitly. This is how a kernel snapshots a storage-backed ref's current value for register-resident work. Definition at line 84 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::copy_vector | ( | const VectorLike & | v | ) | -> std::conditional_t<std::is_void<ResultVector>::value, vector_semantic_type_t<VectorLike>, ResultVector> |
v: by default a value of v 's semantic type, or of ResultVector if that parameter is given explicitly. This is how a kernel snapshots a storage-backed ref's current value for register-resident work. Definition at line 65 of file kokkos_vector_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::det | ( | const TensorLike & | T_in | ) | -> std::enable_if_t<is_tensor_like_v<TensorLike>, decltype(T_in.det())> |
T_in, delegating to its det() member so owning types use TypeTensor::det() while refs use tensor_ref::det(). Definition at line 529 of file kokkos_tensor_ops.h.
Referenced by libMesh::Kokkos::detail::inverse().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::inverse | ( | const TensorLike & | T_in, |
| const unsigned int | dim = LIBMESH_DIM |
||
| ) | -> std::enable_if_t<is_tensor_like_v<TensorLike>, std::conditional_t<std::is_void<ResultTensor>::value, tensor_semantic_type_t<TensorLike>, ResultTensor>> |
dim x dim block of the tensor-like T_in, as an owning tensor. Definition at line 541 of file kokkos_tensor_ops.h.
References dim.
Referenced by libMesh::Kokkos::tensor_ref< ViewType >::inverse(), and libMesh::Kokkos::tensor_ref< ViewType >::solve().
| LIBMESH_DEVICE_INLINE TensorType libMesh::Kokkos::load_tensor | ( | const ViewType & | view, |
| const unsigned int | i | ||
| ) |
i of the tensor view view, materialized as an owning tensor of type TensorType (e.g. a TypeTensor or TensorValue).The view is expected to have one runtime extent indexing entries followed by LIBMESH_DIM x LIBMESH_DIM extents indexing components, as created by make_tensor_storage().
Definition at line 87 of file kokkos_storage.h.
References make_tensor_ref().
| LIBMESH_DEVICE_INLINE VectorType libMesh::Kokkos::load_vector | ( | const ViewType & | view, |
| const unsigned int | i | ||
| ) |
i of the vector view view, materialized as an owning vector of type VectorType (e.g. a TypeVector, VectorValue, or Point).The view is expected to have one runtime extent indexing entries followed by a LIBMESH_DIM extent indexing components, as created by make_vector_storage().
Definition at line 57 of file kokkos_storage.h.
References make_vector_ref().
| LIBMESH_DEVICE_INLINE tensor_ref< typename std::remove_reference< ViewType >::type > libMesh::Kokkos::make_tensor_ref | ( | ViewType && | view, |
| const unsigned int | index | ||
| ) |
index of view; the tensor analogue of make_vector_ref(), with the same by-value view semantics. Definition at line 646 of file kokkos_linalg_base.h.
Referenced by load_tensor(), store_tensor(), libMeshTest::KokkosTensorOracle::test_dim_ops(), libMeshTest::KokkosTensorOracle::test_linalg_foundation_storage_roundtrip(), libMeshTest::KokkosTensorOracle::test_mixed_representation_ops(), and libMeshTest::KokkosTensorOracle::test_tensor_ops().
|
inline |
n tensors, laid out according to StoragePolicy and labeled label for Kokkos profiling/debugging purposes. Definition at line 144 of file kokkos_storage_policy.h.
|
inline |
n tensors, using the default storage policy. Definition at line 154 of file kokkos_storage_policy.h.
| LIBMESH_DEVICE_INLINE vector_ref< typename std::remove_reference< ViewType >::type > libMesh::Kokkos::make_vector_ref | ( | ViewType && | view, |
| const unsigned int | index | ||
| ) |
index of view, so kernel code need not spell out the vector_ref's template argument. The ref stores the view by value (Kokkos views are cheap reference-counted handles), so the deduced reference qualification on the forwarded view is stripped from the ref's type. Definition at line 632 of file kokkos_linalg_base.h.
Referenced by load_vector(), store_vector(), libMeshTest::KokkosTensorOracle::test_linalg_foundation_storage_roundtrip(), libMeshTest::KokkosTensorOracle::test_mixed_representation_ops(), libMeshTest::KokkosVectorOracle::test_mixed_representation_ops(), libMeshTest::KokkosTensorOracle::test_tensor_ops(), and libMeshTest::KokkosVectorOracle::test_vector_ops_case().
|
inline |
n vectors, laid out according to StoragePolicy and labeled label for Kokkos profiling/debugging purposes. Definition at line 122 of file kokkos_storage_policy.h.
|
inline |
n vectors, using the default storage policy. Definition at line 132 of file kokkos_storage_policy.h.
| LIBMESH_DEVICE_INLINE OutputTensor libMesh::Kokkos::materialize_tensor | ( | const TensorLike & | T_in | ) |
OutputTensor whose components are copied from the tensor-like T_in. Definition at line 683 of file kokkos_linalg_base.h.
References libMesh::out, and row().
| LIBMESH_DEVICE_INLINE OutputVector libMesh::Kokkos::materialize_vector | ( | const VectorLike & | v | ) |
OutputVector whose components are copied from the vector-like v.This is the bridge from non-owning refs (or any other vector-like input) to register-resident values a kernel can compute with.
Definition at line 661 of file kokkos_linalg_base.h.
References libMesh::out.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator!= | ( | const LeftTensor & | left, |
| const RightTensor & | right | ||
| ) | -> std::enable_if_t<is_tensor_like_v<LeftTensor> && is_tensor_like_v<RightTensor> && (is_tensor_ref_v<LeftTensor> || is_tensor_ref_v<RightTensor>), bool> |
true if left and right differ in any component, false otherwise. Definition at line 929 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator!= | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) | -> std::enable_if_t<is_vector_like_v<LeftVector> && is_vector_like_v<RightVector> && (is_vector_ref_v<LeftVector> || is_vector_ref_v<RightVector>), bool> |
true if left and right differ in any component, false otherwise. Definition at line 650 of file kokkos_vector_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator* | ( | const LeftTensor & | left, |
| const RightTensor & | right | ||
| ) |
left and right, as an owning tensor. Definition at line 871 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator* | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) |
left and right, matching the TypeVector convention that vector * vector is a dot product. Definition at line 578 of file kokkos_vector_ops.h.
References vector_dot().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator* | ( | const Scalar & | alpha, |
| const TensorLike & | T_in | ||
| ) |
T_in scaled by alpha, as an owning tensor. The scalar may appear on either side of the product. Definition at line 827 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator* | ( | const Scalar & | alpha, |
| const VectorLike & | v | ||
| ) |
v scaled by alpha, as an owning vector. The scalar may appear on either side of the product. Definition at line 593 of file kokkos_vector_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator* | ( | const TensorLike & | T_in, |
| const Scalar & | alpha | ||
| ) |
Definition at line 838 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator* | ( | const TensorLike & | T_in, |
| const VectorLike & | v | ||
| ) |
Definition at line 885 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator* | ( | const VectorLike & | v, |
| const Scalar & | alpha | ||
| ) |
Definition at line 604 of file kokkos_vector_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator* | ( | const VectorLike & | v, |
| const TensorLike & | T_in | ||
| ) |
Definition at line 900 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator*= | ( | LeftTensor & | left, |
| const Scalar & | alpha | ||
| ) | -> std::enable_if_t<is_tensor_like_v<LeftTensor> && is_tensor_ref_v<LeftTensor> && !is_vector_like_v<Scalar> && !is_tensor_like_v<Scalar>, LeftTensor &> |
Scales left by alpha in place.
Definition at line 971 of file kokkos_tensor_ops.h.
References libMesh::Kokkos::detail::transform_tensor_components().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator*= | ( | LeftVector & | left, |
| const Scalar & | alpha | ||
| ) | -> std::enable_if_t<is_vector_like_v<LeftVector> && is_vector_ref_v<LeftVector> && !is_vector_like_v<Scalar> && !is_tensor_like_v<Scalar>, LeftVector &> |
Scales left by alpha in place.
Definition at line 692 of file kokkos_vector_ops.h.
References libMesh::Kokkos::detail::transform_vector_components().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator+ | ( | const LeftTensor & | left, |
| const RightTensor & | right | ||
| ) | -> std::enable_if_t<is_tensor_like_v<LeftTensor> && is_tensor_like_v<RightTensor> && (is_tensor_ref_v<LeftTensor> || is_tensor_ref_v<RightTensor>), tensor_semantic_type_t<LeftTensor>> |
left and right, as an owning tensor. Definition at line 791 of file kokkos_tensor_ops.h.
References libMesh::out.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator+ | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) | -> std::enable_if_t<is_vector_like_v<LeftVector> && is_vector_like_v<RightVector> && (is_vector_ref_v<LeftVector> || is_vector_ref_v<RightVector>), vector_semantic_type_t<LeftVector>> |
left and right, as an owning vector. Definition at line 543 of file kokkos_vector_ops.h.
References libMesh::out.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator+= | ( | LeftTensor & | left, |
| const RightTensor & | right | ||
| ) | -> std::enable_if_t<is_tensor_like_v<LeftTensor> && is_tensor_like_v<RightTensor> && (is_tensor_ref_v<LeftTensor> || is_tensor_ref_v<RightTensor>), LeftTensor &> |
Adds right to left in place; when left is a ref, the update writes through to the underlying storage.
Definition at line 943 of file kokkos_tensor_ops.h.
References libMesh::Kokkos::detail::update_tensor_components().
Referenced by libMesh::Kokkos::tensor_ref< ViewType >::add(), and libMesh::Kokkos::vector_ref< ViewType >::add().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator+= | ( | LeftVector & | left, |
| const RightVector & | right | ||
| ) | -> std::enable_if_t<is_vector_like_v<LeftVector> && is_vector_like_v<RightVector> && (is_vector_ref_v<LeftVector> || is_vector_ref_v<RightVector>), LeftVector &> |
Adds right to left in place; when left is a ref, the update writes through to the underlying storage.
Definition at line 664 of file kokkos_vector_ops.h.
References libMesh::Kokkos::detail::update_vector_components().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator- | ( | const LeftTensor & | left, |
| const RightTensor & | right | ||
| ) | -> std::enable_if_t<is_tensor_like_v<LeftTensor> && is_tensor_like_v<RightTensor> && (is_tensor_ref_v<LeftTensor> || is_tensor_ref_v<RightTensor>), tensor_semantic_type_t<LeftTensor>> |
left and right, as an owning tensor. Definition at line 807 of file kokkos_tensor_ops.h.
References libMesh::out.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator- | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) | -> std::enable_if_t<is_vector_like_v<LeftVector> && is_vector_like_v<RightVector> && (is_vector_ref_v<LeftVector> || is_vector_ref_v<RightVector>), vector_semantic_type_t<LeftVector>> |
left and right, as an owning vector. Definition at line 558 of file kokkos_vector_ops.h.
References libMesh::out.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator- | ( | const TensorLike & | T_in | ) | -> std::enable_if_t<is_tensor_like_v<TensorLike> && is_tensor_ref_v<TensorLike>, tensor_semantic_type_t<TensorLike>> |
T_in, as an owning tensor. Definition at line 777 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator- | ( | const VectorLike & | v | ) | -> std::enable_if_t<is_vector_like_v<VectorLike> && is_vector_ref_v<VectorLike>, vector_semantic_type_t<VectorLike>> |
v, as an owning vector. Definition at line 529 of file kokkos_vector_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator-= | ( | LeftTensor & | left, |
| const RightTensor & | right | ||
| ) | -> std::enable_if_t<is_tensor_like_v<LeftTensor> && is_tensor_like_v<RightTensor> && (is_tensor_ref_v<LeftTensor> || is_tensor_ref_v<RightTensor>), LeftTensor &> |
Subtracts right from left in place.
Definition at line 957 of file kokkos_tensor_ops.h.
References libMesh::Kokkos::detail::update_tensor_components().
Referenced by libMesh::Kokkos::tensor_ref< ViewType >::subtract(), and libMesh::Kokkos::vector_ref< ViewType >::subtract().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator-= | ( | LeftVector & | left, |
| const RightVector & | right | ||
| ) | -> std::enable_if_t<is_vector_like_v<LeftVector> && is_vector_like_v<RightVector> && (is_vector_ref_v<LeftVector> || is_vector_ref_v<RightVector>), LeftVector &> |
Subtracts right from left in place.
Definition at line 678 of file kokkos_vector_ops.h.
References libMesh::Kokkos::detail::update_vector_components().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator/ | ( | const TensorLike & | T_in, |
| const Scalar & | alpha | ||
| ) | -> std::enable_if_t<is_tensor_like_v<TensorLike> && is_tensor_ref_v<TensorLike> && !is_vector_like_v<Scalar> && !is_tensor_like_v<Scalar>, tensor_semantic_type_t<TensorLike>> |
T_in divided (componentwise) by the scalar alpha, as an owning tensor. Definition at line 851 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator/ | ( | const VectorLike & | v, |
| const Scalar & | alpha | ||
| ) |
v divided (componentwise) by the scalar alpha, as an owning vector. Definition at line 621 of file kokkos_vector_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator/= | ( | LeftTensor & | left, |
| const Scalar & | alpha | ||
| ) | -> std::enable_if_t<is_tensor_like_v<LeftTensor> && is_tensor_ref_v<LeftTensor> && !is_vector_like_v<Scalar> && !is_tensor_like_v<Scalar>, LeftTensor &> |
Divides left by alpha in place.
Definition at line 985 of file kokkos_tensor_ops.h.
References libMesh::Kokkos::detail::transform_tensor_components().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator/= | ( | LeftVector & | left, |
| const Scalar & | alpha | ||
| ) | -> std::enable_if_t<is_vector_like_v<LeftVector> && is_vector_ref_v<LeftVector> && !is_vector_like_v<Scalar> && !is_tensor_like_v<Scalar>, LeftVector &> |
Divides left by alpha in place.
Definition at line 706 of file kokkos_vector_ops.h.
References libMesh::Kokkos::detail::transform_vector_components().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator== | ( | const LeftTensor & | left, |
| const RightTensor & | right | ||
| ) | -> std::enable_if_t<is_tensor_like_v<LeftTensor> && is_tensor_like_v<RightTensor> && (is_tensor_ref_v<LeftTensor> || is_tensor_ref_v<RightTensor>), bool> |
true if left and right agree in every component, false otherwise. Each component is compared with exact operator==. Definition at line 915 of file kokkos_tensor_ops.h.
References libMesh::Kokkos::detail::tensor_equal_impl().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::operator== | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) | -> std::enable_if_t<is_vector_like_v<LeftVector> && is_vector_like_v<RightVector> && (is_vector_ref_v<LeftVector> || is_vector_ref_v<RightVector>), bool> |
true if left and right agree in every component, false otherwise. Each component is compared with exact operator==, matching TypeVector::operator==; this is not a tolerance-based floating-point comparison. Definition at line 636 of file kokkos_vector_ops.h.
References libMesh::Kokkos::detail::vector_equal_impl().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::outer_product | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) | -> std::enable_if_t<is_vector_like_v<LeftVector> && is_vector_like_v<RightVector>, std::conditional_t<std::is_void<ResultTensor>::value, libMesh::TypeTensor<typename LeftVector::value_type>, ResultTensor>> |
ResultTensor if given explicitly. Definition at line 492 of file kokkos_tensor_ops.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::row | ( | const TensorLike & | T_in, |
| const unsigned int | i | ||
| ) | -> std::enable_if_t<is_tensor_like_v<TensorLike>, std::conditional_t<std::is_void<ResultVector>::value, libMesh::TypeVector<typename TensorLike::value_type>, ResultVector>> |
i of the tensor-like T_in, as an owning vector: by default a TypeVector of T_in 's component type, or ResultVector if given explicitly. Definition at line 560 of file kokkos_tensor_ops.h.
Referenced by libMesh::Kokkos::tensor_ref< ViewType >::is_zero(), materialize_tensor(), libMesh::Kokkos::tensor_ref< ViewType >::norm_sq(), libMesh::Kokkos::tensor_ref< ViewType >::row(), store_tensor(), and upload_tensor_storage().
|
constexpr |
StoragePolicy, as reported by its static name() member; a free-function form convenient for labeling per-policy results in generic code such as the Kokkos unit tests. Definition at line 110 of file kokkos_storage_policy.h.
| LIBMESH_DEVICE_INLINE void libMesh::Kokkos::store_tensor | ( | const ViewType & | view, |
| const unsigned int | i, | ||
| const TensorType & | T | ||
| ) |
Copies the components of the tensor T into entry i of the tensor view view, overwriting whatever that entry held.
Definition at line 98 of file kokkos_storage.h.
References make_tensor_ref(), libMesh::out, and row().
Referenced by libMeshTest::KokkosTensorOracle::test_dim_ops(), libMeshTest::KokkosTensorOracle::test_mixed_representation_ops(), and libMeshTest::KokkosTensorOracle::test_tensor_ops().
| LIBMESH_DEVICE_INLINE void libMesh::Kokkos::store_vector | ( | const ViewType & | view, |
| const unsigned int | i, | ||
| const VectorType & | v | ||
| ) |
Copies the components of the vector v into entry i of the vector view view, overwriting whatever that entry held.
Definition at line 68 of file kokkos_storage.h.
References make_vector_ref(), and libMesh::out.
Referenced by libMeshTest::KokkosTensorOracle::test_mixed_representation_ops(), libMeshTest::KokkosVectorOracle::test_mixed_representation_ops(), libMeshTest::KokkosTensorOracle::test_tensor_ops(), and libMeshTest::KokkosVectorOracle::test_vector_ops_case().
| LIBMESH_DEVICE_INLINE ResultTensor libMesh::Kokkos::tensor_identity | ( | const unsigned int | dim = LIBMESH_DIM | ) |
ResultTensor whose leading dim x dim block is the identity and whose remaining components are zero. Definition at line 65 of file kokkos_tensor_ops.h.
References dim, and libMesh::out.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::transpose | ( | const TensorLike & | T_in | ) | -> std::enable_if_t<is_tensor_like_v<TensorLike>, std::conditional_t<std::is_void<ResultTensor>::value, tensor_semantic_type_t<TensorLike>, ResultTensor>> |
T_in, as an owning tensor. Definition at line 510 of file kokkos_tensor_ops.h.
Referenced by libMesh::Kokkos::tensor_ref< ViewType >::transpose().
|
inline |
Allocates a device view sized for values, copies each tensor's components into a host mirror, and deep-copies the result to the device.
Definition at line 211 of file kokkos_storage_policy.h.
References row().
|
inline |
values, using the default storage policy. Definition at line 231 of file kokkos_storage_policy.h.
|
inline |
Allocates a device view sized for values, copies each vector's components into a host mirror, and deep-copies the result to the device.
Definition at line 173 of file kokkos_storage_policy.h.
|
inline |
values, using the default storage policy. Definition at line 192 of file kokkos_storage_policy.h.
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::vector_cross | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) | -> std::conditional_t<std::is_void<ResultVector>::value, vector_semantic_type_t<LeftVector>, ResultVector> |
left and right, as an owning vector.Definition at line 267 of file kokkos_vector_ops.h.
References libMesh::libmesh_ignore(), and libMesh::out.
Referenced by libMesh::Kokkos::vector_ref< ViewType >::cross().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::vector_cross_norm_sq | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) |
Definition at line 320 of file kokkos_vector_ops.h.
Referenced by libMeshTest::KokkosVectorOracle::test_mixed_representation_ops().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::vector_dot | ( | const LeftVector & | left, |
| const RightVector & | right | ||
| ) |
left and right, in whatever type their componentwise products sum to. Definition at line 220 of file kokkos_vector_ops.h.
Referenced by contract(), operator*(), libMeshTest::KokkosVectorOracle::test_vector_ops_case(), and vector_solid_angle().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::vector_solid_angle | ( | const VectorA & | v01, |
| const VectorB & | v02, | ||
| const VectorC & | v03 | ||
| ) |
v01, v02, v03 - positive if the vectors obey the right-hand rule, negative for a left-hand orientation. Computed by Van Oosterom and Strackee's formula, mirroring the solid_angle() free function in type_vector.h. Definition at line 342 of file kokkos_vector_ops.h.
References libMesh::Real, vector_dot(), and vector_triple_product().
Referenced by libMeshTest::KokkosVectorOracle::test_mixed_representation_ops(), and libMeshTest::KokkosVectorOracle::test_vector_ops_case().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::vector_triple_product | ( | const LeftVector & | left, |
| const MiddleVector & | middle, | ||
| const RightVector & | right | ||
| ) |
Definition at line 297 of file kokkos_vector_ops.h.
References libMesh::libmesh_ignore().
Referenced by vector_solid_angle().
| LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::vector_unit | ( | const VectorLike & | v | ) | -> std::conditional_t<std::is_void<ResultVector>::value, vector_semantic_type_t<VectorLike>, ResultVector> |
v. Asserts (in debug modes) that v is not the zero vector. Definition at line 242 of file kokkos_vector_ops.h.
References libMesh::Real.
Referenced by libMesh::Kokkos::vector_ref< ViewType >::unit().
|
inlineconstexpr |
Definition at line 170 of file kokkos_linalg_base.h.
|
inlineconstexpr |
Definition at line 176 of file kokkos_linalg_base.h.
|
inlineconstexpr |
Variable template shorthands for the traits above.
The traits are specialized only for plain (unqualified) types, so each shorthand strips reference and cv-qualifiers before consulting the trait; callers can therefore apply them to qualified types (e.g. is_vector_like_v<const TypeVector<Real> &> is still true) without decaying first.
Definition at line 167 of file kokkos_linalg_base.h.
|
inlineconstexpr |
Definition at line 173 of file kokkos_linalg_base.h.