libMesh
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
kokkos_vector_ops.h File Reference

Go to the source code of this file.

Classes

struct  libMesh::Kokkos::detail::negate_value< ValueType >
 Componentwise transform functors, shared by the vector helpers here and the tensor helpers in kokkos_tensor_ops.h. More...
 
struct  libMesh::Kokkos::detail::scale_value< Scalar >
 
struct  libMesh::Kokkos::detail::divide_value< Scalar >
 

Namespaces

namespace  libMesh
 The libMesh namespace provides an interface to certain functionality in the library.
 
namespace  libMesh::Kokkos
 
namespace  libMesh::Kokkos::detail
 

Functions

template<typename ResultVector = void, typename VectorLike >
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 >
 
template<typename LeftVector , typename RightVector >
LIBMESH_DEVICE_INLINE void libMesh::Kokkos::detail::assign_vector_components (LeftVector &left, const RightVector &right)
 Componentwise copy: left = right.
 
template<typename VectorLike , typename Scalar >
LIBMESH_DEVICE_INLINE void libMesh::Kokkos::detail::fill_vector_components (VectorLike &v, const Scalar &value)
 Sets every component of v to value.
 
template<typename LeftVector , typename RightVector , typename Scalar >
LIBMESH_DEVICE_INLINE void libMesh::Kokkos::detail::update_vector_components (LeftVector &left, const RightVector &right, const Scalar &factor)
 Componentwise axpy-style update: left += factor * right.
 
template<typename OutputVector , typename InputVector , typename TransformOp >
LIBMESH_DEVICE_INLINE void libMesh::Kokkos::detail::transform_vector_components (OutputVector &out, const InputVector &in, const TransformOp &op)
 Componentwise transform: out(i) = op(in(i)).
 
template<typename ResultVector , typename VectorLike , typename TransformOp >
LIBMESH_DEVICE_INLINE ResultVector libMesh::Kokkos::detail::transformed_vector (const VectorLike &v, const TransformOp &op)
 
template<typename LeftVector , typename RightVector >
LIBMESH_DEVICE_INLINE bool libMesh::Kokkos::detail::vector_equal_impl (const LeftVector &left, const RightVector &right)
 
template<typename LeftVector , typename RightVector >
LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::vector_dot (const LeftVector &left, const RightVector &right)
 
template<typename ResultVector = void, typename VectorLike >
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 >
 
template<typename ResultVector = void, typename LeftVector , typename RightVector >
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 >
 
template<typename LeftVector , typename MiddleVector , typename RightVector >
LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::vector_triple_product (const LeftVector &left, const MiddleVector &middle, const RightVector &right)
 
template<typename LeftVector , typename RightVector >
LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::vector_cross_norm_sq (const LeftVector &left, const RightVector &right)
 
template<typename VectorA , typename VectorB , typename VectorC >
LIBMESH_DEVICE_INLINE auto libMesh::Kokkos::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 libMesh::Kokkos::contract (const LeftVector &left, const RightVector &right)
 
template<typename LeftVector , typename RightVector >
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.
 
template<typename LeftVector , typename RightVector >
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.
 
template<typename VectorLike >
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 > >
 
template<typename LeftVector , typename RightVector >
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 > >
 
template<typename LeftVector , typename RightVector >
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 > >
 
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 libMesh::Kokkos::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 libMesh::Kokkos::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 libMesh::Kokkos::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 libMesh::Kokkos::operator/ (const VectorLike &v, const Scalar &alpha)
 
template<typename LeftVector , typename RightVector >
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 >
 
template<typename LeftVector , typename RightVector >
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 >
 
template<typename LeftVector , typename Scalar >
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.
 
template<typename LeftVector , typename Scalar >
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.