https://mooseframework.inl.gov
Public Member Functions | Public Attributes | List of all members
Moose::Kokkos::Vector3< T > Struct Template Reference

#include <KokkosTypes.h>

Public Member Functions

 Vector3 (const libMesh::TypeVector< T > &vector)
 
KOKKOS_INLINE_FUNCTION Vector3 ()
 
KOKKOS_INLINE_FUNCTION Vector3 (const T &scalar)
 
KOKKOS_INLINE_FUNCTION Vector3 (const Vector3< T > &vector)=default
 
KOKKOS_INLINE_FUNCTION Vector3 (const T &x, const T &y, const T &z)
 
KOKKOS_INLINE_FUNCTION Vector3< T > operator- () const
 
KOKKOS_INLINE_FUNCTION T & operator() (unsigned int i)
 
KOKKOS_INLINE_FUNCTION const T & operator() (unsigned int i) const
 
Vector3< T > & operator= (const libMesh::TypeVector< T > &vector)
 
template<typename U >
KOKKOS_INLINE_FUNCTION Vector3< T > & operator= (const Vector3< U > &vector)
 
KOKKOS_INLINE_FUNCTION Vector3< T > & operator= (const Vector3< T > &vector)
 
KOKKOS_INLINE_FUNCTION Vector3< T > & operator= (const T &scalar)
 
template<typename U >
KOKKOS_INLINE_FUNCTION void operator+= (const Vector3< U > &vector)
 
KOKKOS_INLINE_FUNCTION void operator+= (const T &scalar)
 
template<typename U >
KOKKOS_INLINE_FUNCTION void operator-= (const Vector3< U > &vector)
 
KOKKOS_INLINE_FUNCTION void operator-= (const T &scalar)
 
KOKKOS_INLINE_FUNCTION void operator*= (const T &scalar)
 
KOKKOS_INLINE_FUNCTION Real norm () const
 
KOKKOS_INLINE_FUNCTION Real dot_product (const Real3 vector) const
 
KOKKOS_INLINE_FUNCTION Real3 cross_product (const Real3 vector) const
 
KOKKOS_INLINE_FUNCTION Real33 cartesian_product (const Real3 vector) const
 
template<>
KOKKOS_INLINE_FUNCTION Real norm () const
 
template<>
KOKKOS_INLINE_FUNCTION Real dot_product (const Real3 vector) const
 
template<>
KOKKOS_INLINE_FUNCTION Real3 cross_product (const Real3 vector) const
 
template<>
KOKKOS_INLINE_FUNCTION Real33 cartesian_product (const Real3 vector) const
 

Public Attributes

v [3]
 

Detailed Description

template<typename T>
struct Moose::Kokkos::Vector3< T >

Definition at line 30 of file KokkosTypes.h.

Constructor & Destructor Documentation

◆ Vector3() [1/5]

template<typename T>
Moose::Kokkos::Vector3< T >::Vector3 ( const libMesh::TypeVector< T > &  vector)

Definition at line 107 of file KokkosTypes.h.

108 {
109  v[0] = vector(0);
110  v[1] = vector(1);
111  v[2] = vector(2);
112 }

◆ Vector3() [2/5]

template<typename T>
KOKKOS_INLINE_FUNCTION Moose::Kokkos::Vector3< T >::Vector3 ( )
inline

Definition at line 44 of file KokkosTypes.h.

44 { *this = T{}; }

◆ Vector3() [3/5]

template<typename T>
KOKKOS_INLINE_FUNCTION Moose::Kokkos::Vector3< T >::Vector3 ( const T &  scalar)
inline

Definition at line 45 of file KokkosTypes.h.

45 { *this = scalar; }

◆ Vector3() [4/5]

template<typename T>
KOKKOS_INLINE_FUNCTION Moose::Kokkos::Vector3< T >::Vector3 ( const Vector3< T > &  vector)
default

◆ Vector3() [5/5]

template<typename T>
KOKKOS_INLINE_FUNCTION Moose::Kokkos::Vector3< T >::Vector3 ( const T &  x,
const T &  y,
const T &  z 
)

Definition at line 116 of file KokkosTypes.h.

117 {
118  v[0] = x;
119  v[1] = y;
120  v[2] = z;
121 }

Member Function Documentation

◆ cartesian_product() [1/2]

template<typename T>
KOKKOS_INLINE_FUNCTION Real33 Moose::Kokkos::Vector3< T >::cartesian_product ( const Real3  vector) const

◆ cartesian_product() [2/2]

template<>
KOKKOS_INLINE_FUNCTION Real33 Moose::Kokkos::Vector3< Real >::cartesian_product ( const Real3  vector) const

Definition at line 317 of file KokkosTypes.h.

318 {
319  Real33 tensor;
320 
321  for (unsigned int i = 0; i < Moose::dim; ++i)
322  for (unsigned int j = 0; j < Moose::dim; ++j)
323  tensor(i, j) = v[i] * vector.v[j];
324 
325  return tensor;
326 }
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:165

◆ cross_product() [1/2]

template<typename T>
KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::Vector3< T >::cross_product ( const Real3  vector) const

◆ cross_product() [2/2]

template<>
KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::Vector3< Real >::cross_product ( const Real3  vector) const

Definition at line 304 of file KokkosTypes.h.

305 {
306  Real3 cross;
307 
308  cross.v[0] = v[1] * vector.v[2] - v[2] * vector.v[1];
309  cross.v[1] = v[2] * vector.v[0] - v[0] * vector.v[2];
310  cross.v[2] = v[0] * vector.v[1] - v[1] * vector.v[0];
311 
312  return cross;
313 }
Vector3< Real > Real3
Definition: KokkosTypes.h:32

◆ dot_product() [1/2]

template<typename T>
KOKKOS_INLINE_FUNCTION Real Moose::Kokkos::Vector3< T >::dot_product ( const Real3  vector) const

◆ dot_product() [2/2]

template<>
KOKKOS_INLINE_FUNCTION Real Moose::Kokkos::Vector3< Real >::dot_product ( const Real3  vector) const

Definition at line 297 of file KokkosTypes.h.

298 {
299  return v[0] * vector.v[0] + v[1] * vector.v[1] + v[2] * vector.v[2];
300 }

◆ norm() [1/2]

template<typename T>
KOKKOS_INLINE_FUNCTION Real Moose::Kokkos::Vector3< T >::norm ( ) const

◆ norm() [2/2]

template<>
KOKKOS_INLINE_FUNCTION Real Moose::Kokkos::Vector3< Real >::norm ( ) const

Definition at line 290 of file KokkosTypes.h.

291 {
292  return ::Kokkos::sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
293 }
CTSub CT_OPERATOR_BINARY CTMul CTCompareLess CTCompareGreater CTCompareEqual _arg template * sqrt(_arg)) *_arg.template D< dtag >()) CT_SIMPLE_UNARY_FUNCTION(tanh

◆ operator()() [1/2]

template<typename T>
KOKKOS_INLINE_FUNCTION T& Moose::Kokkos::Vector3< T >::operator() ( unsigned int  i)
inline

Definition at line 50 of file KokkosTypes.h.

50 { return v[i]; }

◆ operator()() [2/2]

template<typename T>
KOKKOS_INLINE_FUNCTION const T& Moose::Kokkos::Vector3< T >::operator() ( unsigned int  i) const
inline

Definition at line 51 of file KokkosTypes.h.

51 { return v[i]; }

◆ operator*=()

template<typename T>
KOKKOS_INLINE_FUNCTION void Moose::Kokkos::Vector3< T >::operator*= ( const T &  scalar)

Definition at line 218 of file KokkosTypes.h.

219 {
220  v[0] *= scalar;
221  v[1] *= scalar;
222  v[2] *= scalar;
223 }

◆ operator+=() [1/2]

template<typename T >
template<typename U >
KOKKOS_INLINE_FUNCTION void Moose::Kokkos::Vector3< T >::operator+= ( const Vector3< U > &  vector)

Definition at line 181 of file KokkosTypes.h.

182 {
183  v[0] += vector.v[0];
184  v[1] += vector.v[1];
185  v[2] += vector.v[2];
186 }

◆ operator+=() [2/2]

template<typename T>
KOKKOS_INLINE_FUNCTION void Moose::Kokkos::Vector3< T >::operator+= ( const T &  scalar)

Definition at line 190 of file KokkosTypes.h.

191 {
192  v[0] += scalar;
193  v[1] += scalar;
194  v[2] += scalar;
195 }

◆ operator-()

template<typename T >
KOKKOS_INLINE_FUNCTION Vector3< T > Moose::Kokkos::Vector3< T >::operator- ( ) const

Definition at line 136 of file KokkosTypes.h.

137 {
138  Vector3<T> vector(*this);
139  vector *= -1;
140 
141  return vector;
142 }

◆ operator-=() [1/2]

template<typename T >
template<typename U >
KOKKOS_INLINE_FUNCTION void Moose::Kokkos::Vector3< T >::operator-= ( const Vector3< U > &  vector)

Definition at line 200 of file KokkosTypes.h.

201 {
202  v[0] -= vector.v[0];
203  v[1] -= vector.v[1];
204  v[2] -= vector.v[2];
205 }

◆ operator-=() [2/2]

template<typename T>
KOKKOS_INLINE_FUNCTION void Moose::Kokkos::Vector3< T >::operator-= ( const T &  scalar)

Definition at line 209 of file KokkosTypes.h.

210 {
211  v[0] -= scalar;
212  v[1] -= scalar;
213  v[2] -= scalar;
214 }

◆ operator=() [1/4]

template<typename T>
Vector3< T > & Moose::Kokkos::Vector3< T >::operator= ( const libMesh::TypeVector< T > &  vector)

Definition at line 125 of file KokkosTypes.h.

126 {
127  v[0] = vector(0);
128  v[1] = vector(1);
129  v[2] = vector(2);
130 
131  return *this;
132 }

◆ operator=() [2/4]

template<typename T >
template<typename U >
KOKKOS_INLINE_FUNCTION Vector3< T > & Moose::Kokkos::Vector3< T >::operator= ( const Vector3< U > &  vector)

Definition at line 158 of file KokkosTypes.h.

159 {
160  v[0] = vector.v[0];
161  v[1] = vector.v[1];
162  v[2] = vector.v[2];
163 
164  return *this;
165 }

◆ operator=() [3/4]

template<typename T>
KOKKOS_INLINE_FUNCTION Vector3< T > & Moose::Kokkos::Vector3< T >::operator= ( const Vector3< T > &  vector)

Definition at line 146 of file KokkosTypes.h.

147 {
148  v[0] = vector.v[0];
149  v[1] = vector.v[1];
150  v[2] = vector.v[2];
151 
152  return *this;
153 }

◆ operator=() [4/4]

template<typename T>
KOKKOS_INLINE_FUNCTION Vector3< T > & Moose::Kokkos::Vector3< T >::operator= ( const T &  scalar)

Definition at line 169 of file KokkosTypes.h.

170 {
171  v[0] = scalar;
172  v[1] = scalar;
173  v[2] = scalar;
174 
175  return *this;
176 }

Member Data Documentation

◆ v

template<typename T>
T Moose::Kokkos::Vector3< T >::v[3]

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