https://mooseframework.inl.gov
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Moose::Kokkos Namespace Reference

Namespaces

 Utils
 

Classes

class  ADIntegratedBC
 The base class for a user to derive their own Kokkos integrated boundary conditions using automatic differentiation (AD). More...
 
class  ADKernel
 The base class for a user to derive their own Kokkos kernels using automatic differentiation (AD). More...
 
class  ADNodalBC
 The base class for a user to derive their own Kokkos nodal boundary conditions using automatic differentiation (AD). More...
 
class  ADTimeKernel
 The base class for Kokkos time-derivative kernels. More...
 
class  Array
 The Kokkos array class. More...
 
class  Array< T, 1, index_type, LayoutType::LEFT >
 
class  ArrayBase
 The base class for Kokkos arrays. More...
 
struct  ArrayDeepCopy
 The type trait that determines the default behavior of copy constructor and deepCopy() If this type trait is set to true, the copy constructor will call deepCopy(), and the deepCopy() method will copy-construct each entry. More...
 
struct  ArrayDeepCopy< ADVariableGradient >
 
struct  ArrayDeepCopy< ADVariableValue >
 
struct  ArrayDeepCopy< Array< T, dimension, index_type, layout > >
 
struct  ArrayDeepCopy< MaterialProperty< T, dimension > >
 
struct  ArrayDeepCopy< ReferenceWrapper< T > >
 
struct  ArrayDeepCopy< Scalar< T > >
 
class  Assembly
 The Kokkos assembly class. More...
 
class  AssemblyDatum
 The Kokkos object that holds thread-private data in the parallel operations of Kokkos kernels. More...
 
class  AssemblyHolder
 The Kokkos interface that holds the host reference of the Kokkos assembly and copies it to device during parallel dispatch. More...
 
class  AuxKernel
 The base class for a user to derive their own Kokkos auxiliary kernels. More...
 
class  BoundaryCondition
 The base class for Kokkos boundary conditions. More...
 
class  Datum
 The Kokkos object that holds thread-private data in the parallel operations of any Kokkos object. More...
 
class  DirichletBCBaseTempl
 The base Kokkos boundary condition of a Dirichlet type. More...
 
class  Dispatcher
 Class that dispatches a parallel loop operation of a Kokkos functor. More...
 
class  DispatcherBase
 Base class for Kokkos functor dispatcher. More...
 
class  DispatcherRegistry
 Class that registers dispatchers of all Kokkos functors. More...
 
class  DispatcherRegistryEntry
 Class that stores the information of a dispatcher and builds it. More...
 
class  DispatcherRegistryEntryBase
 Base class for dispatcher registry entry. More...
 
struct  ElementInfo
 The Kokkos object that contains the information of an element The IDs used in Kokkos are different from the MOOSE or libMesh IDs The Kokkos IDs start from zero in each process and are contiguous. More...
 
class  ElementPostprocessor
 
class  ElementReducer
 
class  ElementReporter
 
class  ElementUserObject
 
class  ElementVectorPostprocessor
 
class  FESystem
 The Kokkos FE system class. More...
 
class  Function
 The abstract class that provides polymorphic interfaces for a function. More...
 
class  FunctionBase
 The base class for a user to derive their own Kokkos functions. More...
 
class  FunctionRegistryEntry
 
class  FunctionRegistryEntryBase
 
class  FunctionWrapperDevice
 Device function wrapper class that provides polymorphic interfaces for a function. More...
 
class  FunctionWrapperDeviceBase
 Base class for device function wrapper. More...
 
class  FunctionWrapperHost
 Host function wrapper class that allocates a function on device and creates its device wrapper. More...
 
class  FunctionWrapperHostBase
 Base class for host function wrapper. More...
 
class  FunctorCopy
 
class  FunctorRegistry
 
class  FunctorRegistryEntry
 
class  FunctorRegistryEntryBase
 
class  FunctorWrapperDevice
 Device functor wrapper class that provides polymorphic interfaces for a functor. More...
 
class  FunctorWrapperDeviceBase
 Base class for device functor wrapper. More...
 
class  FunctorWrapperHost
 Host functor wrapper class that allocates a functor on device and creates its device wrapper. More...
 
class  FunctorWrapperHostBase
 Base class for host functor wrapper. More...
 
class  FVDatum
 Device-side geometric context for finite volume kernels and boundary conditions. More...
 
class  GeneralPostprocessor
 
class  GeneralReporter
 
class  GeneralUserObject
 
class  GeneralVectorPostprocessor
 
struct  has_split_linear_fv_flux_dispatchers
 
struct  has_split_linear_fv_flux_dispatchers< T, std::void_t< typename T::InternalRightHandSideLoop, typename T::BoundaryRightHandSideLoop, typename T::InternalMatrixLoop, typename T::BoundaryMatrixLoop > >
 
class  IntegratedBC
 The base class for a user to derive their own Kokkos integrated boundary conditions. More...
 
class  IntegratedBCBase
 The base class for Kokkos integrated boundary conditions. More...
 
class  IntegratedBCValue
 The base class for a user to derive their own Kokkos integrated boundary conditions where the residual is of the form. More...
 
struct  is_kokkos_array
 The type trait that determines if a template type is Kokkos array. More...
 
struct  is_kokkos_array< Array< T, dimension, index_type, layout > >
 
struct  is_scalar
 
struct  is_scalar< Scalar< T, Enable > >
 
class  JaggedArray
 The Kokkos jagged array class. More...
 
class  JaggedArrayInnerData
 The inner array wrapper class. More...
 
struct  JaggedArrayInnerDim
 A simple object holding the dimension information of an inner array. More...
 
class  Kernel
 The base class for a user to derive their own Kokkos kernels. More...
 
class  KernelBase
 The base class for Kokkos kernels. More...
 
class  KernelCurl
 A base class that defines the curl operators for Kokkos vector kernels. More...
 
class  KernelGrad
 The base class for a user to derive their own Kokkos kernels where the residual is of the form. More...
 
class  KernelValue
 The base class for a user to derive their own Kokkos kernels where the residual is of the form. More...
 
class  LinearFVBoundaryCondition
 Base class for Kokkos linear finite volume boundary conditions. More...
 
class  LinearFVElementalKernel
 Base class for Kokkos linear finite volume kernels that contribute on elements (volumetric terms) More...
 
class  LinearFVFluxKernel
 Base class for Kokkos linear finite volume kernels that contribute on faces (flux terms). More...
 
class  LinearFVKernel
 Base class for Kokkos linear finite volume kernels that contribute to the linear system. More...
 
class  LinearSystemContributionObject
 Base class for Kokkos objects that contribute to a linear system, i.e. More...
 
class  LocalParallelInterface
 Interface class for controlling local DOF parallelization of kernels and integrated BCs. More...
 
class  MapBase
 The Kokkos wrapper class for standard map. More...
 
class  Material
 The base class for a user to derive their own Kokkos materials. More...
 
class  MaterialBase
 The base class for Kokkos materials. More...
 
class  MaterialProperty
 The Kokkos material property class. More...
 
class  MaterialPropertyBase
 The base class for Kokkos material properties. More...
 
class  MaterialPropertyStorage
 The Kokkos class responsible for allocating and storing Kokkos material properties. More...
 
class  MaterialPropertyValue
 
class  MaterialPropertyValue< T, 0 >
 
class  MaterialPropertyValueBase
 The Kokkos wrapper class for accessing the material property values of a single quadrature point. More...
 
class  Matrix
 The Kokkos wrapper class for PETSc matrix. More...
 
class  MemoryChunk
 A temporary object returned by the Kokkos memory pool during memory chunk allocation. More...
 
class  MemoryPool
 The Kokkos class that manages memory pool for dynamically-sized temporary arrays in Kokkos parallel functions. More...
 
class  MemoryPoolHolder
 The Kokkos interface that holds the Kokkos memory pool. More...
 
class  Mesh
 The Kokkos mesh object. More...
 
class  MeshDatum
 Generic datum class containing geometric information related to the mesh. More...
 
class  MeshHolder
 The Kokkos interface that holds the host reference of the Kokkos mesh and copies it to device during parallel dispatch Maintains synchronization between host and device Kokkos mesh and provides access to the appropriate Kokkos mesh depending on the architecture. More...
 
class  NodalBC
 The base class for a user to derive their own Kokkos nodal boundary conditions. More...
 
class  NodalBCBase
 The base class for Kokkos nodal boundary conditions. More...
 
class  NodalKernel
 The base class for a user to derive their own Kokkos nodal kernels. More...
 
class  NodalKernelBase
 The base class for Kokkos nodal kernels. More...
 
class  NodalPostprocessor
 
class  NodalReducer
 
class  NodalReporter
 
class  NodalUserObject
 
class  NodalVectorPostprocessor
 
struct  Pair
 
class  ParsedObjectBase
 
class  PEGParser
 Parsing Expression Grammar (PEG) More...
 
class  Postprocessor
 
struct  PropRecord
 A structure storing the metadata of Kokkos material properties. More...
 
struct  Real33
 
class  Reducer
 Class that dispatches a parallel reduction operation of a Kokkos functor. More...
 
class  ReducerBase
 
class  ReducerRegistryEntry
 
class  ReferenceWrapper
 The Kokkos object that can hold the reference of a variable. More...
 
class  Reporter
 
class  ResidualObject
 The base class for Kokkos residual objects. More...
 
class  RPNBuilder
 Reverse Polish Notation (RPN) builder. More...
 
class  RPNEvaluator
 Reverse Polish Notation (RPN) evaluator. More...
 
class  Scalar
 The Kokkos wrapper class that can hold the reference of an arithmetic scalar variable. More...
 
class  SidePostprocessor
 
class  SideReducer
 
class  SideReporter
 
class  SideUserObject
 
class  SideVectorPostprocessor
 
class  System
 The Kokkos base system class. More...
 
class  Thread
 The Kokkos thread object that aids in converting the one-dimensional thread index into multi-dimensional thread indices. More...
 
class  TimeKernel
 The base class for Kokkos time-derivative kernels. More...
 
class  TimeKernelValue
 The base class for Kokkos time kernels whose test function can be factored out. More...
 
class  TimeNodalKernel
 The base class for Kokkos time-derivative nodal kernels. More...
 
class  UserObject
 
class  Variable
 The Kokkos variable object that carries the coupled variable and tag information. More...
 
class  VariableGradientTempl
 
class  VariableShapeGradient
 
class  VariableShapeValue
 The Kokkos wrapper classes for MOOSE-like shape function access. More...
 
class  VariableValueTempl
 The Kokkos wrapper classes for MOOSE-like variable value access. More...
 
class  Vector
 The Kokkos wrapper class for PETSc vector. More...
 
struct  Vector3
 
class  VectorIntegratedBC
 The base class for a user to derive their own Kokkos integrated boundary conditions on vector variables. More...
 
class  VectorIntegratedBCValue
 The base class for Kokkos integrated boundary conditions on vector variables where the residual is of the form $(, )$ and the vector test function can be factored out. More...
 
class  VectorKernel
 The base class for a user to derive their own Kokkos vector kernels on vector variables. More...
 
class  VectorKernelGrad
 The base class for Kokkos vector kernels where the residual is of the form. More...
 
class  VectorKernelValue
 The base class for Kokkos vector kernels where the residual is of the form. More...
 
class  VectorNodalBC
 The base class for a user to derive their own Kokkos nodal boundary conditions on vector variables. More...
 
class  VectorPostprocessor
 
class  VectorTimeKernel
 The base class for Kokkos vector time-derivative kernels. More...
 
class  VectorTimeKernelValue
 The base class for Kokkos vector time kernels whose test function can be factored out. More...
 
class  VectorVariableCurl
 
class  VectorVariableGradient
 
class  VectorVariableShapeCurl
 
class  VectorVariableShapeGradient
 
class  VectorVariableShapeValue
 
class  VectorVariableValue
 

Typedefs

template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE>
using Array1D = Array< T, 1, index_type, LayoutType::LEFT >
 
template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE, LayoutType layout = LayoutType::LEFT>
using Array2D = Array< T, 2, index_type, layout >
 
template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE, LayoutType layout = LayoutType::LEFT>
using Array3D = Array< T, 3, index_type, layout >
 
template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE, LayoutType layout = LayoutType::LEFT>
using Array4D = Array< T, 4, index_type, layout >
 
template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE, LayoutType layout = LayoutType::LEFT>
using Array5D = Array< T, 5, index_type, layout >
 
using Policy = ::Kokkos::RangePolicy< ExecSpace, ::Kokkos::IndexType< ThreadID > >
 
template<typename T1 , typename T2 >
using Map = MapBase< T1, T2, std::map >
 
template<typename T1 , typename T2 >
using UnorderedMap = MapBase< T1, T2, std::unordered_map >
 
using PostprocessorValue = Scalar< const PostprocessorValue >
 
using ThreadID = MOOSE_KOKKOS_INDEX_TYPE
 
using Real3 = Vector3< Real >
 
using ADReal3 = Vector3< ADReal >
 
typedef DirichletBCBaseTempl< false > DirichletBCBase
 
typedef DirichletBCBaseTempl< true > ADDirichletBCBase
 
using StorageKey = Moose::PassKey< MaterialPropertyStorage >
 
using PropertyStore = std::function< void(std::ostream &, void *)>
 
using PropertyLoad = std::function< void(std::istream &, void *)>
 
typedef KokkosSemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< MOOSE_AD_MAX_DOFS_PER_ELEM > > DNDerivativeType
 
template<std::size_t N>
using DNDerivativeSize = KokkosSemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< N > >
 
typedef DualNumber< Real, DNDerivativeType, false > ADReal
 
using VariablePhiValue = VariableShapeValue< false >
 
using VariablePhiGradient = VariableShapeGradient< false >
 
using VariableTestValue = VariableShapeValue< true >
 
using VariableTestGradient = VariableShapeGradient< true >
 
using ADVariablePhiValue = VariablePhiValue
 
using ADVariablePhiGradient = VariablePhiGradient
 
using ADVariableTestValue = VariableTestValue
 
using ADVariableTestGradient = VariableTestGradient
 
using VectorVariablePhiValue = VectorVariableShapeValue< false >
 
using VectorVariablePhiGradient = VectorVariableShapeGradient< false >
 
using VectorVariablePhiCurl = VectorVariableShapeCurl< false >
 
using VectorVariableTestValue = VectorVariableShapeValue< true >
 
using VectorVariableTestGradient = VectorVariableShapeGradient< true >
 
using VectorVariableTestCurl = VectorVariableShapeCurl< true >
 
using VariableValue = VariableValueTempl< false >
 
using ADVariableValue = VariableValueTempl< true >
 
using VariableGradient = VariableGradientTempl< false >
 
using ADVariableGradient = VariableGradientTempl< true >
 

Enumerations

enum  MemcpyType { MemcpyType::HOST_TO_HOST, MemcpyType::HOST_TO_DEVICE, MemcpyType::DEVICE_TO_HOST, MemcpyType::DEVICE_TO_DEVICE }
 The enumerator that dictates the memory copy direction. More...
 
enum  LayoutType { LayoutType::LEFT, LayoutType::RIGHT }
 The enumerator that dictates the memory layout. More...
 
enum  PropertyConstantOption { PropertyConstantOption::NONE, PropertyConstantOption::ELEMENT, PropertyConstantOption::SUBDOMAIN }
 Property constant options. More...
 

Functions

void free (void *ptr)
 
template<typename T >
void copyToDeviceInner (T &)
 
template<typename T , unsigned int dimension, typename index_type , LayoutType layout>
void copyToDeviceInner (Array< T, dimension, index_type, layout > &data)
 
template<typename T , unsigned int dimension, typename index_type , LayoutType layout>
void dataStore (std::ostream &stream, Array< T, dimension, index_type, layout > &array, void *context)
 
template<typename T , unsigned int dimension, typename index_type , LayoutType layout>
void dataLoad (std::istream &stream, Array< T, dimension, index_type, layout > &array, void *context)
 
template<typename Object >
bool hasLinearFVMatrixContribution ()
 
template<typename Object >
bool hasInternalLinearFVFluxMatrixContribution ()
 
template<typename Object >
bool hasBoundaryLinearFVFluxMatrixContribution ()
 
template<typename Object >
void registerLinearFVKernelDispatchers (const std::string &objectname)
 
template<typename Object >
bool hasUserJacobianHook ()
 
template<typename Object >
bool hasUserOffDiagJacobianHook ()
 
template<typename T >
KOKKOS_FUNCTION uint32_t fnv1aHash (const T &key, uint32_t hash)
 
template<typename T >
KOKKOS_FUNCTION uint32_t fnv1aHash (const T &key)
 
template<typename T1 , typename T2 >
KOKKOS_FUNCTION uint32_t fnv1aHash (const Pair< T1, T2 > &key)
 
template<typename T1 , typename T2 , template< typename... > class MapType>
void dataStore (std::ostream &stream, MapBase< T1, T2, MapType > &map, void *context)
 
template<typename T1 , typename T2 , template< typename... > class MapType>
void dataLoad (std::istream &stream, MapBase< T1, T2, MapType > &map, void *context)
 
template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto operator+ (const T &left, const Scalar< U > &right) -> decltype(left+static_cast< const U &>(right))
 
template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto operator- (const T &left, const Scalar< U > &right) -> decltype(left - static_cast< const U &>(right))
 
template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto operator* (const T &left, const Scalar< U > &right) -> decltype(left *static_cast< const U &>(right))
 
template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto operator/ (const T &left, const Scalar< U > &right) -> decltype(left/static_cast< const U &>(right))
 
template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto operator% (const T &left, const Scalar< U > &right) -> decltype(left % static_cast< const U &>(right))
 
template<typename T >
KOKKOS_INLINE_FUNCTION Vector3< T > operator+ (const T &left, const Vector3< T > &right)
 
template<typename T >
KOKKOS_INLINE_FUNCTION Vector3< T > operator+ (const Vector3< T > &left, const T &right)
 
template<typename T >
KOKKOS_INLINE_FUNCTION Vector3< T > operator+ (const Vector3< T > &left, const Vector3< T > &right)
 
template<typename T >
KOKKOS_INLINE_FUNCTION Vector3< T > operator- (const T &left, const Vector3< T > &right)
 
template<typename T >
KOKKOS_INLINE_FUNCTION Vector3< T > operator- (const Vector3< T > &left, const T &right)
 
template<typename T >
KOKKOS_INLINE_FUNCTION Vector3< T > operator- (const Vector3< T > &left, const Vector3< T > &right)
 
template<typename T >
KOKKOS_INLINE_FUNCTION Vector3< T > operator* (const T &left, const Vector3< T > &right)
 
template<typename T >
KOKKOS_INLINE_FUNCTION Vector3< T > operator* (const Vector3< T > &left, const T &right)
 
template<typename T >
KOKKOS_INLINE_FUNCTION T operator* (const Vector3< T > &left, const Vector3< T > &right)
 
KOKKOS_INLINE_FUNCTION Real3 operator* (const Real33 left, const Real3 right)
 
KOKKOS_INLINE_FUNCTION ADReal3 operator* (const Real33 left, const ADReal3 &right)
 
KOKKOS_INLINE_FUNCTION ADReal3 operator* (const ADReal3 &left, const Real33 right)
 
KOKKOS_INLINE_FUNCTION Real33 operator* (const Real33 left, const Real33 right)
 
KOKKOS_INLINE_FUNCTION Real33 operator* (const Real left, Real33 right)
 
KOKKOS_INLINE_FUNCTION Real33 operator* (Real33 left, const Real right)
 
KOKKOS_INLINE_FUNCTION Real3 operator+ (const Real left, const Real3 right)
 
KOKKOS_INLINE_FUNCTION Real3 operator+ (const Real3 left, const Real right)
 
KOKKOS_INLINE_FUNCTION Real3 operator- (const Real left, const Real3 right)
 
KOKKOS_INLINE_FUNCTION Real3 operator- (const Real3 left, const Real right)
 
KOKKOS_INLINE_FUNCTION Real3 operator* (const Real left, const Real3 right)
 
KOKKOS_INLINE_FUNCTION Real3 operator* (const Real3 left, const Real right)
 
template<typename T , typename = typename std::enable_if< std::is_same<typename std::decay<T>::type, ADReal>::value>::type>
KOKKOS_INLINE_FUNCTION ADReal3 operator* (const Real3 left, const T &right)
 
template<typename T , typename = typename std::enable_if< std::is_same<typename std::decay<T>::type, ADReal>::value>::type>
KOKKOS_INLINE_FUNCTION ADReal3 operator* (const T &left, const Real3 right)
 
KOKKOS_INLINE_FUNCTION ADReal operator* (const Real3 left, const ADReal3 &right)
 
KOKKOS_INLINE_FUNCTION ADReal operator* (const ADReal3 &left, const Real3 right)
 
KOKKOS_INLINE_FUNCTION Real3 curlFromVectorGradient (const Real33 grad, const unsigned int dim)
 
template<typename T1 , typename T2 >
bool operator< (const Pair< T1, T2 > &left, const Pair< T1, T2 > &right)
 
void checkVariable (const Variable &var, bool expect_vector, const std::string &wrapper_name)
 
template<typename T , unsigned int dimension>
void propertyStore (std::ostream &stream, void *prop)
 
template<typename T , unsigned int dimension>
void propertyLoad (std::istream &stream, void *prop)
 
 MakeSystemHolder (FESystem)
 
 MakeSystemHolder (System)
 

Variables

constexpr unsigned int MAX_TAG = 30
 Maximum tag ID. More...
 
constexpr unsigned int MAX_CACHED_DOF = 30
 Maximum number of DOFs to cache during residual and Jacobian computation. More...
 
constexpr uint32_t FNV_PRIME = 0x01000193
 
constexpr uint32_t FNV_OFFSET_BASIS = 0x811C9DC5
 

Typedef Documentation

◆ ADDirichletBCBase

Definition at line 113 of file KokkosDirichletBCBase.h.

◆ ADReal

typedef DualNumber<Real, DNDerivativeType, false> Moose::Kokkos::ADReal

Definition at line 28 of file KokkosADReal.h.

◆ ADReal3

Definition at line 33 of file KokkosTypes.h.

◆ ADVariableGradient

Definition at line 643 of file KokkosVariableValue.h.

◆ ADVariablePhiGradient

Definition at line 109 of file KokkosVariableValue.h.

◆ ADVariablePhiValue

Definition at line 108 of file KokkosVariableValue.h.

◆ ADVariableTestGradient

Definition at line 111 of file KokkosVariableValue.h.

◆ ADVariableTestValue

Definition at line 110 of file KokkosVariableValue.h.

◆ ADVariableValue

Definition at line 641 of file KokkosVariableValue.h.

◆ Array1D

template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE>
using Moose::Kokkos::Array1D = typedef Array<T, 1, index_type, LayoutType::LEFT>

Definition at line 1901 of file KokkosArray.h.

◆ Array2D

template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE, LayoutType layout = LayoutType::LEFT>
using Moose::Kokkos::Array2D = typedef Array<T, 2, index_type, layout>

Definition at line 1905 of file KokkosArray.h.

◆ Array3D

template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE, LayoutType layout = LayoutType::LEFT>
using Moose::Kokkos::Array3D = typedef Array<T, 3, index_type, layout>

Definition at line 1909 of file KokkosArray.h.

◆ Array4D

template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE, LayoutType layout = LayoutType::LEFT>
using Moose::Kokkos::Array4D = typedef Array<T, 4, index_type, layout>

Definition at line 1913 of file KokkosArray.h.

◆ Array5D

template<typename T , typename index_type = MOOSE_KOKKOS_INDEX_TYPE, LayoutType layout = LayoutType::LEFT>
using Moose::Kokkos::Array5D = typedef Array<T, 5, index_type, layout>

Definition at line 1917 of file KokkosArray.h.

◆ DirichletBCBase

Definition at line 112 of file KokkosDirichletBCBase.h.

◆ DNDerivativeSize

template<std::size_t N>
using Moose::Kokkos::DNDerivativeSize = typedef KokkosSemiDynamicSparseNumberArray<Real, libMesh::dof_id_type, NWrapper<N> >

Definition at line 26 of file KokkosADReal.h.

◆ DNDerivativeType

typedef KokkosSemiDynamicSparseNumberArray<Real, libMesh::dof_id_type, NWrapper<MOOSE_AD_MAX_DOFS_PER_ELEM> > Moose::Kokkos::DNDerivativeType

Definition at line 22 of file KokkosADReal.h.

◆ Map

template<typename T1 , typename T2 >
using Moose::Kokkos::Map = typedef MapBase<T1, T2, std::map>

Definition at line 360 of file KokkosMap.h.

◆ Policy

using Moose::Kokkos::Policy = typedef ::Kokkos::RangePolicy<ExecSpace, ::Kokkos::IndexType<ThreadID> >

Definition at line 21 of file KokkosDispatcher.h.

◆ PostprocessorValue

Definition at line 308 of file KokkosScalar.h.

◆ PropertyLoad

using Moose::Kokkos::PropertyLoad = typedef std::function<void(std::istream &, void *)>

Definition at line 87 of file KokkosMaterialPropertyDecl.h.

◆ PropertyStore

using Moose::Kokkos::PropertyStore = typedef std::function<void(std::ostream &, void *)>

Definition at line 86 of file KokkosMaterialPropertyDecl.h.

◆ Real3

using Moose::Kokkos::Real3 = typedef Vector3<Real>

Definition at line 32 of file KokkosTypes.h.

◆ StorageKey

Definition at line 25 of file KokkosMaterialPropertyDecl.h.

◆ ThreadID

using Moose::Kokkos::ThreadID = typedef MOOSE_KOKKOS_INDEX_TYPE

Definition at line 22 of file KokkosThread.h.

◆ UnorderedMap

template<typename T1 , typename T2 >
using Moose::Kokkos::UnorderedMap = typedef MapBase<T1, T2, std::unordered_map>

Definition at line 363 of file KokkosMap.h.

◆ VariableGradient

Definition at line 642 of file KokkosVariableValue.h.

◆ VariablePhiGradient

Definition at line 105 of file KokkosVariableValue.h.

◆ VariablePhiValue

Definition at line 104 of file KokkosVariableValue.h.

◆ VariableTestGradient

Definition at line 107 of file KokkosVariableValue.h.

◆ VariableTestValue

Definition at line 106 of file KokkosVariableValue.h.

◆ VariableValue

Definition at line 640 of file KokkosVariableValue.h.

◆ VectorVariablePhiCurl

Definition at line 206 of file KokkosVariableValue.h.

◆ VectorVariablePhiGradient

Definition at line 205 of file KokkosVariableValue.h.

◆ VectorVariablePhiValue

Definition at line 204 of file KokkosVariableValue.h.

◆ VectorVariableTestCurl

Definition at line 209 of file KokkosVariableValue.h.

◆ VectorVariableTestGradient

Definition at line 208 of file KokkosVariableValue.h.

◆ VectorVariableTestValue

Definition at line 207 of file KokkosVariableValue.h.

Enumeration Type Documentation

◆ LayoutType

The enumerator that dictates the memory layout.

Enumerator
LEFT 
RIGHT 

Definition at line 52 of file KokkosArray.h.

◆ MemcpyType

The enumerator that dictates the memory copy direction.

Enumerator
HOST_TO_HOST 
HOST_TO_DEVICE 
DEVICE_TO_HOST 
DEVICE_TO_DEVICE 

Definition at line 41 of file KokkosArray.h.

◆ PropertyConstantOption

Property constant options.

Enumerator
NONE 
ELEMENT 
SUBDOMAIN 

Definition at line 40 of file KokkosMaterialPropertyDecl.h.

Function Documentation

◆ checkVariable()

void Moose::Kokkos::checkVariable ( const Variable var,
bool  expect_vector,
const std::string &  wrapper_name 
)
inline

Definition at line 22 of file KokkosVariableValue.h.

Referenced by Moose::Kokkos::VariableGradientTempl< is_ad >::VariableGradientTempl(), Moose::Kokkos::VariableValueTempl< is_ad >::VariableValueTempl(), Moose::Kokkos::VectorVariableCurl::VectorVariableCurl(), Moose::Kokkos::VectorVariableGradient::VectorVariableGradient(), and Moose::Kokkos::VectorVariableValue::VectorVariableValue().

23 {
24  if (!var.initialized())
25  mooseError("Attempted to construct Kokkos ", wrapper_name, " with an uninitialized variable.");
26 
27  if (var.vector() != expect_vector)
28  mooseError("Kokkos ",
29  wrapper_name,
30  " cannot be constructed with ",
31  var.vector() ? "vector" : "scalar",
32  " variables.");
33 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:311

◆ copyToDeviceInner() [1/2]

template<typename T >
void Moose::Kokkos::copyToDeviceInner ( T &  )

◆ copyToDeviceInner() [2/2]

template<typename T , unsigned int dimension, typename index_type , LayoutType layout>
void Moose::Kokkos::copyToDeviceInner ( Array< T, dimension, index_type, layout > &  data)

Definition at line 1364 of file KokkosArray.h.

1365 {
1366  data.copyToDeviceNested();
1367 }

◆ curlFromVectorGradient()

KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::curlFromVectorGradient ( const Real33  grad,
const unsigned int  dim 
)

Definition at line 591 of file KokkosTypes.h.

Referenced by Moose::Kokkos::VectorVariableShapeCurl< is_test >::operator()(), and Moose::Kokkos::VectorVariableCurl::operator()().

592 {
593  if (dim < 2)
594  return 0;
595  else if (dim == 2)
596  return Real3(0, 0, grad(1, 0) - grad(0, 1));
597  else
598  return Real3(grad(2, 1) - grad(1, 2), grad(0, 2) - grad(2, 0), grad(1, 0) - grad(0, 1));
599 }
Vector3< Real > Real3
Definition: KokkosTypes.h:32
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:165

◆ dataLoad() [1/2]

template<typename T1 , typename T2 , template< typename... > class MapType>
void Moose::Kokkos::dataLoad ( std::istream &  stream,
MapBase< T1, T2, MapType > &  map,
void context 
)

Definition at line 348 of file KokkosMap.h.

349 {
351 
352  dataLoad(stream, map.get(), context);
353  dataLoad(stream, map._keys, context);
354  dataLoad(stream, map._values, context);
355  dataLoad(stream, map._offset, context);
356 }
void dataLoad(std::istream &stream, MapBase< T1, T2, MapType > &map, void *context)
Definition: KokkosMap.h:348

◆ dataLoad() [2/2]

template<typename T , unsigned int dimension, typename index_type , LayoutType layout>
void Moose::Kokkos::dataLoad ( std::istream &  stream,
Array< T, dimension, index_type, layout > &  array,
void context 
)

Definition at line 1481 of file KokkosArray.h.

Referenced by dataLoad(), and propertyLoad().

1482 {
1484 
1485  bool is_alloc;
1486  dataLoad(stream, is_alloc, nullptr);
1487 
1488  if (!is_alloc)
1489  return;
1490 
1491  std::string from_type_name;
1492  dataLoad(stream, from_type_name, nullptr);
1493 
1494  if (from_type_name != typeid(T).name())
1495  mooseError("Kokkos array error: cannot load array because the stored array is of type '",
1496  MooseUtils::prettyCppType(libMesh::demangle(from_type_name.c_str())),
1497  "' but the loading array is of type '",
1499  "'.");
1500 
1501  unsigned int from_dimension;
1502  dataLoad(stream, from_dimension, nullptr);
1503 
1504  if (from_dimension != dimension)
1505  mooseError("Kokkos array error: cannot load array because the stored array is ",
1506  from_dimension,
1507  "D but the loading array is ",
1508  dimension,
1509  "D.");
1510 
1511  std::vector<index_type> from_n(dimension);
1512  std::vector<index_type> n(dimension);
1513 
1514  for (const auto dim : make_range(dimension))
1515  {
1516  dataLoad(stream, from_n[dim], nullptr);
1517  n[dim] = array.n(dim);
1518  }
1519 
1520  if (from_n != n)
1521  mooseError("Kokkos array error: cannot load array because the stored array has dimensions (",
1522  Moose::stringify(from_n),
1523  ") but the loading array has dimensions (",
1524  Moose::stringify(n),
1525  ").");
1526 
1527  if (array.isHostAlloc())
1528  {
1529  for (auto & value : array)
1530  dataLoad(stream, value, context);
1531 
1532  if (array.isDeviceAlloc())
1533  array.copyToDevice();
1534  }
1535  else
1536  {
1537  std::vector<T> data(array.size());
1538 
1539  for (auto & value : data)
1540  dataLoad(stream, value, context);
1541 
1542  array.copyIn(data.data(), MemcpyType::HOST_TO_DEVICE, array.size());
1543  }
1544 }
std::string name(const ElemQuality q)
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:311
void dataLoad(std::istream &stream, Array< T, dimension, index_type, layout > &array, void *context)
Definition: KokkosArray.h:1481
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:165
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
std::string demangle(const char *name)
IntRange< T > make_range(T beg, T end)
std::string prettyCppType(const std::string &cpp_type)
Definition: MooseUtils.C:1151

◆ dataStore() [1/2]

template<typename T1 , typename T2 , template< typename... > class MapType>
void Moose::Kokkos::dataStore ( std::ostream &  stream,
MapBase< T1, T2, MapType > &  map,
void context 
)

Definition at line 336 of file KokkosMap.h.

337 {
339 
340  dataStore(stream, map.get(), context);
341  dataStore(stream, map._keys, context);
342  dataStore(stream, map._values, context);
343  dataStore(stream, map._offset, context);
344 }
void dataStore(std::ostream &stream, MapBase< T1, T2, MapType > &map, void *context)
Definition: KokkosMap.h:336

◆ dataStore() [2/2]

template<typename T , unsigned int dimension, typename index_type , LayoutType layout>
void Moose::Kokkos::dataStore ( std::ostream &  stream,
Array< T, dimension, index_type, layout > &  array,
void context 
)

Definition at line 1437 of file KokkosArray.h.

Referenced by dataStore(), and propertyStore().

1438 {
1440 
1441  bool is_alloc = array.isAlloc();
1442  dataStore(stream, is_alloc, nullptr);
1443 
1444  if (!is_alloc)
1445  return;
1446 
1447  std::string type = typeid(T).name();
1448  dataStore(stream, type, nullptr);
1449 
1450  unsigned int dim = dimension;
1451  dataStore(stream, dim, nullptr);
1452 
1453  for (const auto dim : make_range(dimension))
1454  {
1455  auto n = array.n(dim);
1456  dataStore(stream, n, nullptr);
1457  }
1458 
1459  if (array.isDeviceAlloc())
1460  {
1461  // We use malloc/free because we just want a memory copy
1462  // If T is a Kokkos array and we use new/delete or vector to copy it out,
1463  // the arrays will be destroyed on cleanup
1464 
1465  T * data = static_cast<T *>(std::malloc(array.size() * sizeof(T)));
1466 
1467  array.copyOut(data, MemcpyType::DEVICE_TO_HOST, array.size());
1468 
1469  for (const auto i : make_range(array.size()))
1470  dataStore(stream, data[i], context);
1471 
1472  std::free(data);
1473  }
1474  else
1475  for (auto & value : array)
1476  dataStore(stream, value, context);
1477 }
std::string name(const ElemQuality q)
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:165
void dataStore(std::ostream &stream, Array< T, dimension, index_type, layout > &array, void *context)
Definition: KokkosArray.h:1437
void free(void *ptr)
IntRange< T > make_range(T beg, T end)

◆ fnv1aHash() [1/3]

template<typename T >
KOKKOS_FUNCTION uint32_t Moose::Kokkos::fnv1aHash ( const T &  key,
uint32_t  hash 
)

Definition at line 26 of file KokkosMap.h.

Referenced by Moose::Kokkos::MapBase< unsigned int, unsigned int >::copy(), Moose::Kokkos::MapBase< unsigned int, unsigned int >::find(), and fnv1aHash().

27 {
28  auto bytes = reinterpret_cast<const uint8_t *>(&key);
29 
30  for (size_t i = 0; i < sizeof(T); ++i)
31  {
32  hash ^= bytes[i];
33  hash *= FNV_PRIME;
34  }
35 
36  return hash;
37 }
constexpr uint32_t FNV_PRIME
Definition: KokkosMap.h:21

◆ fnv1aHash() [2/3]

template<typename T >
KOKKOS_FUNCTION uint32_t Moose::Kokkos::fnv1aHash ( const T &  key)

Definition at line 41 of file KokkosMap.h.

42 {
43  return fnv1aHash(key, FNV_OFFSET_BASIS);
44 }
constexpr uint32_t FNV_OFFSET_BASIS
Definition: KokkosMap.h:22
KOKKOS_FUNCTION uint32_t fnv1aHash(const Pair< T1, T2 > &key)
Definition: KokkosMap.h:51

◆ fnv1aHash() [3/3]

template<typename T1 , typename T2 >
KOKKOS_FUNCTION uint32_t Moose::Kokkos::fnv1aHash ( const Pair< T1, T2 > &  key)

Definition at line 51 of file KokkosMap.h.

52 {
53  return fnv1aHash(key.second, fnv1aHash(key.first));
54 }
KOKKOS_FUNCTION uint32_t fnv1aHash(const Pair< T1, T2 > &key)
Definition: KokkosMap.h:51

◆ free()

void Moose::Kokkos::free ( void ptr)

◆ hasBoundaryLinearFVFluxMatrixContribution()

template<typename Object >
bool Moose::Kokkos::hasBoundaryLinearFVFluxMatrixContribution ( )

Definition at line 401 of file KokkosDispatcher.h.

402 {
403  return &Object::template computeBoundaryMatrixContribution<Object> !=
404  Object::template defaultBoundaryMatrixContribution<Object>();
405 }

◆ hasInternalLinearFVFluxMatrixContribution()

template<typename Object >
bool Moose::Kokkos::hasInternalLinearFVFluxMatrixContribution ( )

Definition at line 391 of file KokkosDispatcher.h.

392 {
393  return &Object::template computeInternalMatrixContribution<Object> !=
394  Object::template defaultInternalMatrixContribution<Object>() ||
395  &Object::template computeInternalNeighborMatrixContribution<Object> !=
396  Object::template defaultInternalNeighborMatrixContribution<Object>();
397 }

◆ hasLinearFVMatrixContribution()

template<typename Object >
bool Moose::Kokkos::hasLinearFVMatrixContribution ( )

Definition at line 381 of file KokkosDispatcher.h.

382 {
383  return &Object::template computeMatrixContribution<Object> !=
384  Object::template defaultMatrixContribution<Object>() ||
385  &Object::template computeNeighborMatrixContribution<Object> !=
386  Object::template defaultNeighborMatrixContribution<Object>();
387 }

◆ hasUserJacobianHook()

template<typename Object >
bool Moose::Kokkos::hasUserJacobianHook ( )

Definition at line 443 of file KokkosDispatcher.h.

444 {
445  if constexpr (Object::use_precompute_hooks)
446  return &Object::template precomputeQpJacobian<Object> !=
447  Object::template defaultJacobian<Object>();
448  else
449  return &Object::template computeQpJacobian<Object> !=
450  Object::template defaultJacobian<Object>();
451 }

◆ hasUserOffDiagJacobianHook()

template<typename Object >
bool Moose::Kokkos::hasUserOffDiagJacobianHook ( )

Definition at line 455 of file KokkosDispatcher.h.

456 {
457  if constexpr (Object::use_precompute_hooks)
458  return &Object::template precomputeQpOffDiagJacobian<Object> !=
459  Object::template defaultOffDiagJacobian<Object>();
460  else
461  return &Object::template computeQpOffDiagJacobian<Object> !=
462  Object::template defaultOffDiagJacobian<Object>();
463 }

◆ MakeSystemHolder() [1/2]

Moose::Kokkos::MakeSystemHolder ( System  )

◆ MakeSystemHolder() [2/2]

Moose::Kokkos::MakeSystemHolder ( FESystem  )

◆ operator%()

template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto Moose::Kokkos::operator% ( const T &  left,
const Scalar< U > &  right 
) -> decltype(left % static_cast<const U &>(right))

Definition at line 296 of file KokkosScalar.h.

297 {
298  return left % static_cast<const U &>(right);
299 }

◆ operator*() [1/16]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector3<T> Moose::Kokkos::operator* ( const T &  left,
const Vector3< T > &  right 
)

Definition at line 269 of file KokkosTypes.h.

270 {
271  return {left * right.v[0], left * right.v[1], left * right.v[2]};
272 }

◆ operator*() [2/16]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector3<T> Moose::Kokkos::operator* ( const Vector3< T > &  left,
const T &  right 
)

Definition at line 276 of file KokkosTypes.h.

277 {
278  return {left.v[0] * right, left.v[1] * right, left.v[2] * right};
279 }

◆ operator*() [3/16]

template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto Moose::Kokkos::operator* ( const T &  left,
const Scalar< U > &  right 
) -> decltype(left * static_cast<const U &>(right))

Definition at line 278 of file KokkosScalar.h.

Referenced by UniqueStorage< T >::DereferenceIterator< BaseIterator >::operator*(), and UniqueStorage< T >::DereferenceIterator< BaseIterator >::operator->().

279 {
280  return left * static_cast<const U &>(right);
281 }

◆ operator*() [4/16]

template<typename T >
KOKKOS_INLINE_FUNCTION T Moose::Kokkos::operator* ( const Vector3< T > &  left,
const Vector3< T > &  right 
)

Definition at line 283 of file KokkosTypes.h.

284 {
285  return left.v[0] * right.v[0] + left.v[1] * right.v[1] + left.v[2] * right.v[2];
286 }

◆ operator*() [5/16]

KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::operator* ( const Real33  left,
const Real3  right 
)

Definition at line 472 of file KokkosTypes.h.

473 {
474  return {left(0, 0) * right.v[0] + left(0, 1) * right.v[1] + left(0, 2) * right.v[2],
475  left(1, 0) * right.v[0] + left(1, 1) * right.v[1] + left(1, 2) * right.v[2],
476  left(2, 0) * right.v[0] + left(2, 1) * right.v[1] + left(2, 2) * right.v[2]};
477 }

◆ operator*() [6/16]

KOKKOS_INLINE_FUNCTION ADReal3 Moose::Kokkos::operator* ( const Real33  left,
const ADReal3 right 
)

Definition at line 480 of file KokkosTypes.h.

481 {
482  return {left(0, 0) * right(0) + left(0, 1) * right(1) + left(0, 2) * right(2),
483  left(1, 0) * right(0) + left(1, 1) * right(1) + left(1, 2) * right(2),
484  left(2, 0) * right(0) + left(2, 1) * right(1) + left(2, 2) * right(2)};
485 }

◆ operator*() [7/16]

KOKKOS_INLINE_FUNCTION ADReal3 Moose::Kokkos::operator* ( const ADReal3 left,
const Real33  right 
)

Definition at line 488 of file KokkosTypes.h.

489 {
490  return {left(0) * right(0, 0) + left(1) * right(1, 0) + left(2) * right(2, 0),
491  left(0) * right(0, 1) + left(1) * right(1, 1) + left(2) * right(2, 1),
492  left(0) * right(0, 2) + left(1) * right(1, 2) + left(2) * right(2, 2)};
493 }

◆ operator*() [8/16]

KOKKOS_INLINE_FUNCTION Real33 Moose::Kokkos::operator* ( const Real33  left,
const Real33  right 
)

Definition at line 496 of file KokkosTypes.h.

497 {
498  Real33 mul;
499 
500  for (unsigned int i = 0; i < Moose::dim; ++i)
501  for (unsigned int j = 0; j < Moose::dim; ++j)
502  for (unsigned int k = 0; k < Moose::dim; ++k)
503  mul(i, j) += left(i, k) * right(k, j);
504 
505  return mul;
506 }
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:165

◆ operator*() [9/16]

KOKKOS_INLINE_FUNCTION Real33 Moose::Kokkos::operator* ( const Real  left,
Real33  right 
)

Definition at line 509 of file KokkosTypes.h.

510 {
511  right *= left;
512 
513  return right;
514 }

◆ operator*() [10/16]

KOKKOS_INLINE_FUNCTION Real33 Moose::Kokkos::operator* ( Real33  left,
const Real  right 
)

Definition at line 517 of file KokkosTypes.h.

518 {
519  left *= right;
520 
521  return left;
522 }

◆ operator*() [11/16]

KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::operator* ( const Real  left,
const Real3  right 
)

Definition at line 549 of file KokkosTypes.h.

550 {
551  return {left * right.v[0], left * right.v[1], left * right.v[2]};
552 }

◆ operator*() [12/16]

KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::operator* ( const Real3  left,
const Real  right 
)

Definition at line 555 of file KokkosTypes.h.

556 {
557  return {left.v[0] * right, left.v[1] * right, left.v[2] * right};
558 }

◆ operator*() [13/16]

template<typename T , typename = typename std::enable_if< std::is_same<typename std::decay<T>::type, ADReal>::value>::type>
KOKKOS_INLINE_FUNCTION ADReal3 Moose::Kokkos::operator* ( const Real3  left,
const T &  right 
)

Definition at line 564 of file KokkosTypes.h.

565 {
566  return {left(0) * right, left(1) * right, left(2) * right};
567 }

◆ operator*() [14/16]

template<typename T , typename = typename std::enable_if< std::is_same<typename std::decay<T>::type, ADReal>::value>::type>
KOKKOS_INLINE_FUNCTION ADReal3 Moose::Kokkos::operator* ( const T &  left,
const Real3  right 
)

Definition at line 573 of file KokkosTypes.h.

574 {
575  return {left * right(0), left * right(1), left * right(2)};
576 }

◆ operator*() [15/16]

KOKKOS_INLINE_FUNCTION ADReal Moose::Kokkos::operator* ( const Real3  left,
const ADReal3 right 
)

Definition at line 579 of file KokkosTypes.h.

580 {
581  return left(0) * right(0) + left(1) * right(1) + left(2) * right(2);
582 }

◆ operator*() [16/16]

KOKKOS_INLINE_FUNCTION ADReal Moose::Kokkos::operator* ( const ADReal3 left,
const Real3  right 
)

Definition at line 585 of file KokkosTypes.h.

586 {
587  return left(0) * right(0) + left(1) * right(1) + left(2) * right(2);
588 }

◆ operator+() [1/6]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector3<T> Moose::Kokkos::operator+ ( const T &  left,
const Vector3< T > &  right 
)

Definition at line 227 of file KokkosTypes.h.

228 {
229  return {left + right.v[0], left + right.v[1], left + right.v[2]};
230 }

◆ operator+() [2/6]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector3<T> Moose::Kokkos::operator+ ( const Vector3< T > &  left,
const T &  right 
)

Definition at line 234 of file KokkosTypes.h.

235 {
236  return {left.v[0] + right, left.v[1] + right, left.v[2] + right};
237 }

◆ operator+() [3/6]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector3<T> Moose::Kokkos::operator+ ( const Vector3< T > &  left,
const Vector3< T > &  right 
)

Definition at line 241 of file KokkosTypes.h.

242 {
243  return {left.v[0] + right.v[0], left.v[1] + right.v[1], left.v[2] + right.v[2]};
244 }

◆ operator+() [4/6]

template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto Moose::Kokkos::operator+ ( const T &  left,
const Scalar< U > &  right 
) -> decltype(left + static_cast<const U &>(right))

Definition at line 260 of file KokkosScalar.h.

261 {
262  return left + static_cast<const U &>(right);
263 }

◆ operator+() [5/6]

KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::operator+ ( const Real  left,
const Real3  right 
)

Definition at line 525 of file KokkosTypes.h.

526 {
527  return {left + right.v[0], left + right.v[1], left + right.v[2]};
528 }

◆ operator+() [6/6]

KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::operator+ ( const Real3  left,
const Real  right 
)

Definition at line 531 of file KokkosTypes.h.

532 {
533  return {left.v[0] + right, left.v[1] + right, left.v[2] + right};
534 }

◆ operator-() [1/6]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector3<T> Moose::Kokkos::operator- ( const T &  left,
const Vector3< T > &  right 
)

Definition at line 248 of file KokkosTypes.h.

249 {
250  return {left - right.v[0], left - right.v[1], left - right.v[2]};
251 }

◆ operator-() [2/6]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector3<T> Moose::Kokkos::operator- ( const Vector3< T > &  left,
const T &  right 
)

Definition at line 255 of file KokkosTypes.h.

256 {
257  return {left.v[0] - right, left.v[1] - right, left.v[2] - right};
258 }

◆ operator-() [3/6]

template<typename T >
KOKKOS_INLINE_FUNCTION Vector3<T> Moose::Kokkos::operator- ( const Vector3< T > &  left,
const Vector3< T > &  right 
)

Definition at line 262 of file KokkosTypes.h.

263 {
264  return {left.v[0] - right.v[0], left.v[1] - right.v[1], left.v[2] - right.v[2]};
265 }

◆ operator-() [4/6]

template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto Moose::Kokkos::operator- ( const T &  left,
const Scalar< U > &  right 
) -> decltype(left - static_cast<const U &>(right))

Definition at line 269 of file KokkosScalar.h.

270 {
271  return left - static_cast<const U &>(right);
272 }

◆ operator-() [5/6]

KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::operator- ( const Real  left,
const Real3  right 
)

Definition at line 537 of file KokkosTypes.h.

538 {
539  return {left - right.v[0], left - right.v[1], left - right.v[2]};
540 }

◆ operator-() [6/6]

KOKKOS_INLINE_FUNCTION Real3 Moose::Kokkos::operator- ( const Real3  left,
const Real  right 
)

Definition at line 543 of file KokkosTypes.h.

544 {
545  return {left.v[0] - right, left.v[1] - right, left.v[2] - right};
546 }

◆ operator/()

template<typename T , typename U , typename = typename std::enable_if<!is_scalar<typename std::decay<T>::type>::value>::type>
KOKKOS_SCALAR_FUNCTION auto Moose::Kokkos::operator/ ( const T &  left,
const Scalar< U > &  right 
) -> decltype(left / static_cast<const U &>(right))

Definition at line 287 of file KokkosScalar.h.

288 {
289  return left / static_cast<const U &>(right);
290 }

◆ operator<()

template<typename T1 , typename T2 >
bool Moose::Kokkos::operator< ( const Pair< T1, T2 > &  left,
const Pair< T1, T2 > &  right 
)

Definition at line 621 of file KokkosTypes.h.

622 {
623  return std::make_pair(left.first, left.second) < std::make_pair(right.first, right.second);
624 }

◆ propertyLoad()

template<typename T , unsigned int dimension>
void Moose::Kokkos::propertyLoad ( std::istream &  stream,
void prop 
)

Definition at line 174 of file KokkosMaterialProperty.h.

175 {
176  auto property = static_cast<MaterialProperty<T, dimension> *>(prop);
177 
178  dataLoad(stream, property->_data, nullptr);
179 }
void dataLoad(std::istream &stream, LineSegment &l, void *context)
Definition: LineSegment.C:274

◆ propertyStore()

template<typename T , unsigned int dimension>
void Moose::Kokkos::propertyStore ( std::ostream &  stream,
void prop 
)

Definition at line 166 of file KokkosMaterialProperty.h.

167 {
168  auto property = static_cast<MaterialProperty<T, dimension> *>(prop);
169 
170  dataStore(stream, property->_data, nullptr);
171 }
void dataStore(std::ostream &stream, LineSegment &l, void *context)
Definition: LineSegment.C:267

◆ registerLinearFVKernelDispatchers()

template<typename Object >
void Moose::Kokkos::registerLinearFVKernelDispatchers ( const std::string &  objectname)

Definition at line 409 of file KokkosDispatcher.h.

410 {
411  if constexpr (has_split_linear_fv_flux_dispatchers<Object>::value)
412  {
413  DispatcherRegistry::addDispatcher<typename Object::InternalRightHandSideLoop, Object>(
414  objectname);
415  DispatcherRegistry::addDispatcher<typename Object::BoundaryRightHandSideLoop, Object>(
416  objectname);
417  DispatcherRegistry::addDispatcher<typename Object::InternalMatrixLoop, Object>(objectname);
418  DispatcherRegistry::addDispatcher<typename Object::BoundaryMatrixLoop, Object>(objectname);
419 
420  DispatcherRegistry::hasUserMethod<typename Object::InternalMatrixLoop>(
421  objectname, hasInternalLinearFVFluxMatrixContribution<Object>());
422  DispatcherRegistry::hasUserMethod<typename Object::BoundaryMatrixLoop>(
423  objectname, hasBoundaryLinearFVFluxMatrixContribution<Object>());
424  }
425  else
426  {
427  DispatcherRegistry::addDispatcher<typename Object::RightHandSideLoop, Object>(objectname);
428  DispatcherRegistry::addDispatcher<typename Object::MatrixLoop, Object>(objectname);
429  DispatcherRegistry::hasUserMethod<typename Object::MatrixLoop>(
430  objectname, hasLinearFVMatrixContribution<Object>());
431  }
432 }

Variable Documentation

◆ FNV_OFFSET_BASIS

constexpr uint32_t Moose::Kokkos::FNV_OFFSET_BASIS = 0x811C9DC5

Definition at line 22 of file KokkosMap.h.

Referenced by fnv1aHash().

◆ FNV_PRIME

constexpr uint32_t Moose::Kokkos::FNV_PRIME = 0x01000193

Definition at line 21 of file KokkosMap.h.

Referenced by fnv1aHash().

◆ MAX_CACHED_DOF

constexpr unsigned int Moose::Kokkos::MAX_CACHED_DOF = 30

◆ MAX_TAG

constexpr unsigned int Moose::Kokkos::MAX_TAG = 30

Maximum tag ID.

Definition at line 79 of file KokkosHeader.h.