https://mooseframework.inl.gov
Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
Moose::Kokkos::Datum Class Reference

The Kokkos object that holds thread-private data in the parallel operations of any Kokkos object. More...

#include <KokkosDatum.h>

Inheritance diagram for Moose::Kokkos::Datum:
[legend]

Public Member Functions

KOKKOS_FUNCTION Datum (const ContiguousElementID elem, const unsigned int side, const Assembly &assembly, const Array< System > &systems)
 Constructor for element and side data. More...
 
KOKKOS_FUNCTION Datum (const ContiguousNodeID node, const Assembly &assembly, const Array< System > &systems)
 Constructor for node data. More...
 
KOKKOS_FUNCTION const Assemblyassembly () const
 Get the Kokkos assembly. More...
 
KOKKOS_FUNCTION const Systemsystem (unsigned int sys) const
 Get the Kokkos system. More...
 
KOKKOS_FUNCTION const Meshmesh () const
 Get the Kokkos mesh. More...
 
KOKKOS_FUNCTION const ElementInfoelem () const
 Get the element information object. More...
 
KOKKOS_FUNCTION ContiguousElementID elemID () const
 Get the contiguous element ID. More...
 
KOKKOS_FUNCTION dof_id_type extraElemID (unsigned int index) const
 Get the extra element ID. More...
 
KOKKOS_FUNCTION ContiguousSubdomainID subdomain () const
 Get the contiguous subdomain ID. More...
 
KOKKOS_FUNCTION unsigned int side () const
 Get the side index. More...
 
KOKKOS_FUNCTION ContiguousNodeID node () const
 Get the contiguous node ID. More...
 
KOKKOS_FUNCTION unsigned int n_qps () const
 Get the number of local quadrature points. More...
 
KOKKOS_FUNCTION dof_id_type qpOffset () const
 Get the starting offset into the global quadrature point index. More...
 
KOKKOS_FUNCTION dof_id_type propertyIdx (const PropertyConstantOption constant_option, const unsigned int qp) const
 Get the index into the property data storage. More...
 
KOKKOS_FUNCTION bool hasNeighbor () const
 Get whether the current side has a neighbor. More...
 
KOKKOS_FUNCTION bool isSide () const
 Get whether the current datum is on a side. More...
 
KOKKOS_FUNCTION bool isNodal () const
 Get whether the current datum is on a node. More...
 
KOKKOS_FUNCTION bool isNodalDefined (const Variable &var) const
 Get whether the a variable is defined on the current node. More...
 
KOKKOS_FUNCTION const Real33J (const unsigned int qp)
 Get the inverse of Jacobian matrix | dxi/dx deta/dx dzeta/dx | | dxi/dy deta/dy dzeta/dy | | dxi/dz deta/dz dzeta/dz |. More...
 
KOKKOS_FUNCTION Real JxW (const unsigned int qp)
 Get the transformed Jacobian weight. More...
 
KOKKOS_FUNCTION Real3 q_point (const unsigned int qp)
 Get the physical quadrature point coordinate. More...
 
KOKKOS_FUNCTION Real3 normals (const unsigned int qp)
 Get the normal vector on surface. More...
 
KOKKOS_FUNCTION void set_local_parallel (const unsigned int local_thread_id, const unsigned int num_local_threads)
 Set local parallelization option. More...
 
KOKKOS_FUNCTION unsigned int local_thread_id () const
 Get the current local thread ID. More...
 
KOKKOS_FUNCTION unsigned int num_local_threads () const
 Get the number of local threads. More...
 

Protected Attributes

const Assembly_assembly
 Reference of the Kokkos assembly. More...
 
const Array< System > & _systems
 Reference of the Kokkos systems. More...
 
const Mesh_mesh
 Reference of the Kokkos mesh. More...
 
const ElementInfo _elem
 Current element information object. More...
 
const unsigned int _side = libMesh::invalid_uint
 Current side index. More...
 
const ContiguousNodeID _node = libMesh::DofObject::invalid_id
 Current contiguous node ID. More...
 
const ContiguousElementID _neighbor = libMesh::DofObject::invalid_id
 Current contiguous element ID of neighbor. More...
 
const unsigned int _n_qps = 1
 Number of local quadrature points. More...
 
const dof_id_type _qp_offset = libMesh::DofObject::invalid_id
 Starting offset into the global quadrature point index. More...
 
const dof_id_type _elem_property_idx = libMesh::DofObject::invalid_id
 Index for element-constant material properties. More...
 

Private Member Functions

KOKKOS_FUNCTION void reinitTransform (const unsigned int qp)
 Compute and cache the physical transformation data. More...
 

Private Attributes

unsigned int _cached_qp = libMesh::invalid_uint
 Cached quadrature point index for checking whether the physical transformation data should be recomputed. More...
 
unsigned int _local_thread_id = 0
 Thread ID for local parallelization. More...
 
unsigned int _num_local_threads = 1
 Number of threads for local parallelization. More...
 
Real33 _J
 Cached physical transformation data. More...
 
Real _JxW
 
Real3 _xyz
 
Real3 _normal
 

Detailed Description

The Kokkos object that holds thread-private data in the parallel operations of any Kokkos object.

Definition at line 23 of file KokkosDatum.h.

Constructor & Destructor Documentation

◆ Datum() [1/2]

KOKKOS_FUNCTION Moose::Kokkos::Datum::Datum ( const ContiguousElementID  elem,
const unsigned int  side,
const Assembly assembly,
const Array< System > &  systems 
)
inline

Constructor for element and side data.

Parameters
elemThe contiguous element ID of the current thread
sideThe side index of the current thread
assemblyThe Kokkos assembly
systemsThe Kokkos systems

Definition at line 34 of file KokkosDatum.h.

39  _systems(systems),
42  _side(side),
49  {
50  }
const dof_id_type _elem_property_idx
Index for element-constant material properties.
Definition: KokkosDatum.h:244
const Assembly & _assembly
Reference of the Kokkos assembly.
Definition: KokkosDatum.h:208
KOKKOS_FUNCTION dof_id_type getQpOffset(ElementInfo info) const
Get the starting offset of quadrature points of an element into the global quadrature point index...
KOKKOS_FUNCTION dof_id_type getStartingContiguousElementID(ContiguousSubdomainID subdomain) const
Get the starting contiguous element ID of a subdomain.
Definition: KokkosMesh.h:239
const unsigned int _side
Current side index.
Definition: KokkosDatum.h:224
const unsigned int _n_qps
Number of local quadrature points.
Definition: KokkosDatum.h:236
KOKKOS_FUNCTION bool isSide() const
Get whether the current datum is on a side.
Definition: KokkosDatum.h:141
const ElementInfo _elem
Current element information object.
Definition: KokkosDatum.h:220
const Mesh & _mesh
Reference of the Kokkos mesh.
Definition: KokkosDatum.h:216
KOKKOS_FUNCTION unsigned int side() const
Get the side index.
Definition: KokkosDatum.h:108
static constexpr dof_id_type invalid_id
KOKKOS_FUNCTION ContiguousElementID getNeighbor(ContiguousElementID elem, unsigned int side) const
Get the neighbor contiguous element ID.
Definition: KokkosMesh.h:190
KOKKOS_FUNCTION const Assembly & assembly() const
Get the Kokkos assembly.
Definition: KokkosDatum.h:67
KOKKOS_FUNCTION const auto & getElementInfo(ContiguousElementID elem) const
Get the element information object.
Definition: KokkosMesh.h:180
KOKKOS_FUNCTION dof_id_type getNumFaceQps(ContiguousSubdomainID subdomain) const
Get the total number of facial quadrature points in a subdomain NOTE: This number does not represent ...
KOKKOS_FUNCTION const Mesh & kokkosMesh() const
Get the const reference of the Kokkos mesh.
Definition: KokkosMesh.h:452
ContiguousSubdomainID subdomain
Contiguous subdomain ID.
Definition: KokkosMesh.h:46
const dof_id_type _qp_offset
Starting offset into the global quadrature point index.
Definition: KokkosDatum.h:240
KOKKOS_FUNCTION dof_id_type getQpFaceOffset(ElementInfo info, unsigned int side) const
Get the starting offset of quadrature points of a side of an element into the global quadrature point...
KOKKOS_FUNCTION const ElementInfo & elem() const
Get the element information object.
Definition: KokkosDatum.h:84
KOKKOS_FUNCTION dof_id_type getNumQps(ContiguousSubdomainID subdomain) const
Get the total number of elemental quadrature points in a subdomain.
const ContiguousElementID _neighbor
Current contiguous element ID of neighbor.
Definition: KokkosDatum.h:232
KOKKOS_FUNCTION dof_id_type getElemFacePropertyIndex(ElementInfo info, unsigned int side) const
Get the index of a side of an element into the element-constant face material property data...
const Array< System > & _systems
Reference of the Kokkos systems.
Definition: KokkosDatum.h:212
ContiguousElementID id
Contiguous element ID.
Definition: KokkosMesh.h:42

◆ Datum() [2/2]

KOKKOS_FUNCTION Moose::Kokkos::Datum::Datum ( const ContiguousNodeID  node,
const Assembly assembly,
const Array< System > &  systems 
)
inline

Constructor for node data.

Parameters
nodeThe contiguous node ID of the current thread
assemblyThe Kokkos assembly
systemsThe Kokkos systems

Definition at line 58 of file KokkosDatum.h.

60  {
61  }
const Assembly & _assembly
Reference of the Kokkos assembly.
Definition: KokkosDatum.h:208
const Mesh & _mesh
Reference of the Kokkos mesh.
Definition: KokkosDatum.h:216
KOKKOS_FUNCTION const Assembly & assembly() const
Get the Kokkos assembly.
Definition: KokkosDatum.h:67
KOKKOS_FUNCTION const Mesh & kokkosMesh() const
Get the const reference of the Kokkos mesh.
Definition: KokkosMesh.h:452
KOKKOS_FUNCTION ContiguousNodeID node() const
Get the contiguous node ID.
Definition: KokkosDatum.h:113
const Array< System > & _systems
Reference of the Kokkos systems.
Definition: KokkosDatum.h:212
const ContiguousNodeID _node
Current contiguous node ID.
Definition: KokkosDatum.h:228

Member Function Documentation

◆ assembly()

KOKKOS_FUNCTION const Assembly& Moose::Kokkos::Datum::assembly ( ) const
inline

Get the Kokkos assembly.

Returns
The Kokkos assembly

Definition at line 67 of file KokkosDatum.h.

Referenced by Moose::Kokkos::VariablePhiValue::operator()(), Moose::Kokkos::VariablePhiGradient::operator()(), Moose::Kokkos::VariableTestValue::operator()(), and Moose::Kokkos::VariableTestGradient::operator()().

67 { return _assembly; }
const Assembly & _assembly
Reference of the Kokkos assembly.
Definition: KokkosDatum.h:208

◆ elem()

KOKKOS_FUNCTION const ElementInfo& Moose::Kokkos::Datum::elem ( ) const
inline

◆ elemID()

KOKKOS_FUNCTION ContiguousElementID Moose::Kokkos::Datum::elemID ( ) const
inline

Get the contiguous element ID.

Returns
The contiguous element ID

Definition at line 89 of file KokkosDatum.h.

Referenced by KokkosExtraIDIntegralVectorPostprocessor::execute(), and KokkosExtraIDIntegralVectorPostprocessor::reduce().

89 { return _elem.id; }
const ElementInfo _elem
Current element information object.
Definition: KokkosDatum.h:220
ContiguousElementID id
Contiguous element ID.
Definition: KokkosMesh.h:42

◆ extraElemID()

KOKKOS_FUNCTION dof_id_type Moose::Kokkos::Datum::extraElemID ( unsigned int  index) const
inline

Get the extra element ID.

Parameters
indexThe extra element ID index
Returns
The extra element ID

Definition at line 95 of file KokkosDatum.h.

Referenced by KokkosExtraElementIDAux::computeValue().

96  {
98  }
const ElementInfo _elem
Current element information object.
Definition: KokkosDatum.h:220
const Mesh & _mesh
Reference of the Kokkos mesh.
Definition: KokkosDatum.h:216
static constexpr dof_id_type invalid_id
KOKKOS_FUNCTION dof_id_type getExtraElementID(ContiguousElementID elem, unsigned int index) const
Get the extra element ID of an element.
Definition: KokkosMesh.h:228
KOKKOS_FUNCTION bool isNodal() const
Get whether the current datum is on a node.
Definition: KokkosDatum.h:146
ContiguousElementID id
Contiguous element ID.
Definition: KokkosMesh.h:42

◆ hasNeighbor()

KOKKOS_FUNCTION bool Moose::Kokkos::Datum::hasNeighbor ( ) const
inline

Get whether the current side has a neighbor.

Returns
Whether the current side has a neighbor

Definition at line 136 of file KokkosDatum.h.

static constexpr dof_id_type invalid_id
const ContiguousElementID _neighbor
Current contiguous element ID of neighbor.
Definition: KokkosDatum.h:232

◆ isNodal()

KOKKOS_FUNCTION bool Moose::Kokkos::Datum::isNodal ( ) const
inline

Get whether the current datum is on a node.

Returns
Whether the current datum is on a node

Definition at line 146 of file KokkosDatum.h.

Referenced by extraElemID(), Moose::Kokkos::VariableValueTempl< is_ad >::get(), Moose::Kokkos::VariableGradientTempl< is_ad >::get(), isNodalDefined(), J(), JxW(), and q_point().

static constexpr dof_id_type invalid_id
const ContiguousNodeID _node
Current contiguous node ID.
Definition: KokkosDatum.h:228

◆ isNodalDefined()

KOKKOS_FUNCTION bool Moose::Kokkos::Datum::isNodalDefined ( const Variable var) const
inline

Get whether the a variable is defined on the current node.

Parameters
varThe variable
Returns
Whether the variable is defined on the current node

Definition at line 291 of file KokkosDatum.h.

Referenced by KokkosNodalExtremeValue::reduce(), KokkosNodalMaxValueId::reduce(), and KokkosNodalSum::reduce().

292 {
293  if (!isNodal() || !var.nodal())
294  return false;
295 
296  return _systems[var.sys()].isNodalDefined(_node, var.var());
297 }
KOKKOS_FUNCTION bool isNodal() const
Get whether the current datum is on a node.
Definition: KokkosDatum.h:146
const Array< System > & _systems
Reference of the Kokkos systems.
Definition: KokkosDatum.h:212
const ContiguousNodeID _node
Current contiguous node ID.
Definition: KokkosDatum.h:228

◆ isSide()

KOKKOS_FUNCTION bool Moose::Kokkos::Datum::isSide ( ) const
inline

Get whether the current datum is on a side.

Returns
Whether the current datum is on a side

Definition at line 141 of file KokkosDatum.h.

Referenced by normals(), and reinitTransform().

141 { return _side != libMesh::invalid_uint; }
const unsigned int invalid_uint
const unsigned int _side
Current side index.
Definition: KokkosDatum.h:224

◆ J()

KOKKOS_FUNCTION const Real33 & Moose::Kokkos::Datum::J ( const unsigned int  qp)
inline

Get the inverse of Jacobian matrix | dxi/dx deta/dx dzeta/dx | | dxi/dy deta/dy dzeta/dy | | dxi/dz deta/dz dzeta/dz |.

Parameters
qpThe local quadrature point index
Returns
The Jacobian matrix

Definition at line 300 of file KokkosDatum.h.

Referenced by Moose::Kokkos::VariableGradientTempl< is_ad >::get(), Moose::Kokkos::VariablePhiGradient::operator()(), and Moose::Kokkos::VariableTestGradient::operator()().

301 {
302  if (!isNodal())
303  reinitTransform(qp);
304  else
306 
307  return _J;
308 }
const Assembly & _assembly
Reference of the Kokkos assembly.
Definition: KokkosDatum.h:208
KOKKOS_INLINE_FUNCTION void identity(const unsigned int dim=3)
Definition: KokkosTypes.h:352
KOKKOS_FUNCTION unsigned int getDimension() const
Get the mesh dimension.
KOKKOS_FUNCTION void reinitTransform(const unsigned int qp)
Compute and cache the physical transformation data.
Definition: KokkosDatum.h:344
KOKKOS_FUNCTION bool isNodal() const
Get whether the current datum is on a node.
Definition: KokkosDatum.h:146
Real33 _J
Cached physical transformation data.
Definition: KokkosDatum.h:262

◆ JxW()

KOKKOS_FUNCTION Real Moose::Kokkos::Datum::JxW ( const unsigned int  qp)
inline

Get the transformed Jacobian weight.

Parameters
qpThe local quadrature point index
Returns
The transformed Jacobian weights

Definition at line 311 of file KokkosDatum.h.

Referenced by Moose::Kokkos::AuxKernel::computeElementInternal(), KokkosTimeDerivative::computeJacobianInternal(), Moose::Kokkos::KernelValue::computeJacobianInternal(), Moose::Kokkos::IntegratedBCValue::computeJacobianInternal(), Moose::Kokkos::KernelGrad::computeJacobianInternal(), Moose::Kokkos::IntegratedBC::computeJacobianInternal(), Moose::Kokkos::Kernel::computeJacobianInternal(), Moose::Kokkos::KernelValue::computeOffDiagJacobianInternal(), Moose::Kokkos::IntegratedBCValue::computeOffDiagJacobianInternal(), Moose::Kokkos::KernelGrad::computeOffDiagJacobianInternal(), Moose::Kokkos::IntegratedBC::computeOffDiagJacobianInternal(), Moose::Kokkos::Kernel::computeOffDiagJacobianInternal(), KokkosTimeDerivative::computeResidualInternal(), Moose::Kokkos::TimeKernel::computeResidualInternal(), Moose::Kokkos::ADKernel::computeResidualInternal(), Moose::Kokkos::ADIntegratedBC::computeResidualInternal(), Moose::Kokkos::KernelValue::computeResidualInternal(), Moose::Kokkos::KernelGrad::computeResidualInternal(), Moose::Kokkos::IntegratedBCValue::computeResidualInternal(), Moose::Kokkos::Kernel::computeResidualInternal(), Moose::Kokkos::IntegratedBC::computeResidualInternal(), KokkosElementVariableStatistics::computeValue(), KokkosExtraIDIntegralVectorPostprocessor::execute(), KokkosIntegralPostprocessor< Base >::reduce(), and KokkosExtraIDIntegralVectorPostprocessor::reduce().

312 {
313  if (!isNodal())
314  reinitTransform(qp);
315  else
316  _JxW = 1;
317 
318  return _JxW;
319 }
KOKKOS_FUNCTION void reinitTransform(const unsigned int qp)
Compute and cache the physical transformation data.
Definition: KokkosDatum.h:344
KOKKOS_FUNCTION bool isNodal() const
Get whether the current datum is on a node.
Definition: KokkosDatum.h:146

◆ local_thread_id()

KOKKOS_FUNCTION unsigned int Moose::Kokkos::Datum::local_thread_id ( ) const
inline

◆ mesh()

KOKKOS_FUNCTION const Mesh& Moose::Kokkos::Datum::mesh ( ) const
inline

Get the Kokkos mesh.

Returns
The Kokkos mesh

Definition at line 78 of file KokkosDatum.h.

78 { return _mesh; }
const Mesh & _mesh
Reference of the Kokkos mesh.
Definition: KokkosDatum.h:216

◆ n_qps()

KOKKOS_FUNCTION unsigned int Moose::Kokkos::Datum::n_qps ( ) const
inline

Get the number of local quadrature points.

Returns
The number of local quadrature points

Definition at line 118 of file KokkosDatum.h.

Referenced by Moose::Kokkos::AuxKernel::computeElementInternal(), KokkosTimeDerivative::computeJacobianInternal(), Moose::Kokkos::KernelValue::computeJacobianInternal(), Moose::Kokkos::IntegratedBCValue::computeJacobianInternal(), Moose::Kokkos::KernelGrad::computeJacobianInternal(), Moose::Kokkos::IntegratedBC::computeJacobianInternal(), Moose::Kokkos::Kernel::computeJacobianInternal(), Moose::Kokkos::KernelValue::computeOffDiagJacobianInternal(), Moose::Kokkos::IntegratedBCValue::computeOffDiagJacobianInternal(), Moose::Kokkos::KernelGrad::computeOffDiagJacobianInternal(), Moose::Kokkos::IntegratedBC::computeOffDiagJacobianInternal(), Moose::Kokkos::Kernel::computeOffDiagJacobianInternal(), KokkosTimeDerivative::computeResidualInternal(), Moose::Kokkos::TimeKernel::computeResidualInternal(), Moose::Kokkos::ADKernel::computeResidualInternal(), Moose::Kokkos::ADIntegratedBC::computeResidualInternal(), Moose::Kokkos::KernelValue::computeResidualInternal(), Moose::Kokkos::IntegratedBCValue::computeResidualInternal(), Moose::Kokkos::KernelGrad::computeResidualInternal(), Moose::Kokkos::IntegratedBC::computeResidualInternal(), Moose::Kokkos::Kernel::computeResidualInternal(), KokkosElementVariableStatistics::computeValue(), KokkosExtraIDIntegralVectorPostprocessor::execute(), Moose::Kokkos::Material::operator()(), KokkosElementExtremeValue::reduce(), KokkosSideExtremeValue::reduce(), KokkosIntegralPostprocessor< Base >::reduce(), and KokkosExtraIDIntegralVectorPostprocessor::reduce().

118 { return _n_qps; }
const unsigned int _n_qps
Number of local quadrature points.
Definition: KokkosDatum.h:236

◆ node()

KOKKOS_FUNCTION ContiguousNodeID Moose::Kokkos::Datum::node ( ) const
inline

◆ normals()

KOKKOS_FUNCTION Real3 Moose::Kokkos::Datum::normals ( const unsigned int  qp)
inline

Get the normal vector on surface.

Parameters
qpThe local quadrature point index
Returns
The normal vector

Definition at line 333 of file KokkosDatum.h.

Referenced by KokkosDirectionalNeumannBC::computeQpResidual().

334 {
335  KOKKOS_ASSERT(isSide());
336 
337  if (isSide())
338  reinitTransform(qp);
339 
340  return _normal;
341 }
KOKKOS_FUNCTION bool isSide() const
Get whether the current datum is on a side.
Definition: KokkosDatum.h:141
KOKKOS_FUNCTION void reinitTransform(const unsigned int qp)
Compute and cache the physical transformation data.
Definition: KokkosDatum.h:344

◆ num_local_threads()

KOKKOS_FUNCTION unsigned int Moose::Kokkos::Datum::num_local_threads ( ) const
inline

◆ propertyIdx()

KOKKOS_FUNCTION dof_id_type Moose::Kokkos::Datum::propertyIdx ( const PropertyConstantOption  constant_option,
const unsigned int  qp 
) const
inline

Get the index into the property data storage.

Parameters
constant_optionThe property constant option
qpThe local quadrature point index
Returns
The index

Definition at line 278 of file KokkosDatum.h.

279 {
280  dof_id_type idx = 0;
281 
282  if (constant_option == PropertyConstantOption::NONE)
283  idx = _qp_offset + qp;
284  else if (constant_option == PropertyConstantOption::ELEMENT)
286 
287  return idx;
288 }
const dof_id_type _elem_property_idx
Index for element-constant material properties.
Definition: KokkosDatum.h:244
const dof_id_type _qp_offset
Starting offset into the global quadrature point index.
Definition: KokkosDatum.h:240
unsigned int idx(const ElemType type, const unsigned int nx, const unsigned int i, const unsigned int j)
uint8_t dof_id_type

◆ q_point()

KOKKOS_FUNCTION Real3 Moose::Kokkos::Datum::q_point ( const unsigned int  qp)
inline

Get the physical quadrature point coordinate.

Parameters
qpThe local quadrature point index
Returns
The physical quadrature point coordinate

Definition at line 322 of file KokkosDatum.h.

Referenced by KokkosParsedMaterial::computeQpProperties(), KokkosFunctionAux::computeValue(), and KokkosParsedAux::computeValue().

323 {
324  if (!isNodal())
325  reinitTransform(qp);
326  else
328 
329  return _xyz;
330 }
const Assembly & _assembly
Reference of the Kokkos assembly.
Definition: KokkosDatum.h:208
KOKKOS_FUNCTION void reinitTransform(const unsigned int qp)
Compute and cache the physical transformation data.
Definition: KokkosDatum.h:344
KOKKOS_FUNCTION Real3 getNodePoint(ContiguousNodeID node) const
Get the coordinate of a node.
Definition: KokkosMesh.h:272
KOKKOS_FUNCTION const Mesh & kokkosMesh() const
Get the const reference of the Kokkos mesh.
Definition: KokkosMesh.h:452
KOKKOS_FUNCTION bool isNodal() const
Get whether the current datum is on a node.
Definition: KokkosDatum.h:146
const ContiguousNodeID _node
Current contiguous node ID.
Definition: KokkosDatum.h:228

◆ qpOffset()

KOKKOS_FUNCTION dof_id_type Moose::Kokkos::Datum::qpOffset ( ) const
inline

Get the starting offset into the global quadrature point index.

Returns
The starting offset

Definition at line 123 of file KokkosDatum.h.

Referenced by Moose::Kokkos::VariableValueTempl< is_ad >::get(), and Moose::Kokkos::VariableGradientTempl< is_ad >::get().

123 { return _qp_offset; }
const dof_id_type _qp_offset
Starting offset into the global quadrature point index.
Definition: KokkosDatum.h:240

◆ reinitTransform()

KOKKOS_FUNCTION void Moose::Kokkos::Datum::reinitTransform ( const unsigned int  qp)
inlineprivate

Compute and cache the physical transformation data.

Parameters
qpThe local quadrature point index

Definition at line 344 of file KokkosDatum.h.

Referenced by J(), JxW(), normals(), and q_point().

345 {
346  if (_cached_qp == qp)
347  return;
348 
349  if (!isSide())
350  {
351  _J = _assembly.getJacobian(_elem, qp);
352  _JxW = _assembly.getJxW(_elem, qp);
353  _xyz = _assembly.getQPoint(_elem, qp);
354  }
355  else
357 
358  _cached_qp = qp;
359 }
const Assembly & _assembly
Reference of the Kokkos assembly.
Definition: KokkosDatum.h:208
const unsigned int _side
Current side index.
Definition: KokkosDatum.h:224
KOKKOS_FUNCTION bool isSide() const
Get whether the current datum is on a side.
Definition: KokkosDatum.h:141
const ElementInfo _elem
Current element information object.
Definition: KokkosDatum.h:220
KOKKOS_FUNCTION Real getJxW(ElementInfo info, unsigned int qp) const
Get the transformed Jacobian weight of an element quadrature point.
unsigned int _cached_qp
Cached quadrature point index for checking whether the physical transformation data should be recompu...
Definition: KokkosDatum.h:257
KOKKOS_FUNCTION Real33 getJacobian(ElementInfo info, unsigned int qp) const
Get the inverse of Jacobian matrix of an element quadrature point.
Real33 _J
Cached physical transformation data.
Definition: KokkosDatum.h:262
KOKKOS_FUNCTION void computePhysicalMap(const ElementInfo info, const unsigned int qp, Real33 *const jacobian, Real *const JxW, Real3 *const q_points) const
Compute physical transformation data for an element.
KOKKOS_FUNCTION Real3 getQPoint(ElementInfo info, unsigned int qp) const
Get the coordinate of an element quadrature point.

◆ set_local_parallel()

KOKKOS_FUNCTION void Moose::Kokkos::Datum::set_local_parallel ( const unsigned int  local_thread_id,
const unsigned int  num_local_threads 
)
inline

Set local parallelization option.

Parameters
local_thread_idThe current local thread ID
num_local_threadsThe number of local threads

Definition at line 187 of file KokkosDatum.h.

Referenced by Moose::Kokkos::ADKernel::operator()(), Moose::Kokkos::ADIntegratedBC::operator()(), Moose::Kokkos::Kernel::operator()(), and Moose::Kokkos::IntegratedBC::operator()().

189  {
192  }
unsigned int _local_thread_id
Thread ID for local parallelization.
Definition: KokkosDatum.h:270
unsigned int _num_local_threads
Number of threads for local parallelization.
Definition: KokkosDatum.h:274
KOKKOS_FUNCTION unsigned int num_local_threads() const
Get the number of local threads.
Definition: KokkosDatum.h:202
KOKKOS_FUNCTION unsigned int local_thread_id() const
Get the current local thread ID.
Definition: KokkosDatum.h:197

◆ side()

KOKKOS_FUNCTION unsigned int Moose::Kokkos::Datum::side ( ) const
inline

◆ subdomain()

KOKKOS_FUNCTION ContiguousSubdomainID Moose::Kokkos::Datum::subdomain ( ) const
inline

Get the contiguous subdomain ID.

Returns
The contiguous subdomain ID

Definition at line 103 of file KokkosDatum.h.

Referenced by KokkosExtraIDIntegralVectorPostprocessor::execute(), and KokkosExtraIDIntegralVectorPostprocessor::reduce().

103 { return _elem.subdomain; }
const ElementInfo _elem
Current element information object.
Definition: KokkosDatum.h:220
ContiguousSubdomainID subdomain
Contiguous subdomain ID.
Definition: KokkosMesh.h:46

◆ system()

KOKKOS_FUNCTION const System& Moose::Kokkos::Datum::system ( unsigned int  sys) const
inline

Get the Kokkos system.

Parameters
sysThe system number
Returns
The Kokkos system

Definition at line 73 of file KokkosDatum.h.

Referenced by Moose::Kokkos::VariableValueTempl< is_ad >::get(), and Moose::Kokkos::VariableGradientTempl< is_ad >::get().

73 { return _systems[sys]; }
const Array< System > & _systems
Reference of the Kokkos systems.
Definition: KokkosDatum.h:212

Member Data Documentation

◆ _assembly

const Assembly& Moose::Kokkos::Datum::_assembly
protected

Reference of the Kokkos assembly.

Definition at line 208 of file KokkosDatum.h.

Referenced by assembly(), J(), q_point(), and reinitTransform().

◆ _cached_qp

unsigned int Moose::Kokkos::Datum::_cached_qp = libMesh::invalid_uint
private

Cached quadrature point index for checking whether the physical transformation data should be recomputed.

Definition at line 257 of file KokkosDatum.h.

Referenced by reinitTransform().

◆ _elem

const ElementInfo Moose::Kokkos::Datum::_elem
protected

Current element information object.

Definition at line 220 of file KokkosDatum.h.

Referenced by elem(), elemID(), extraElemID(), reinitTransform(), and subdomain().

◆ _elem_property_idx

const dof_id_type Moose::Kokkos::Datum::_elem_property_idx = libMesh::DofObject::invalid_id
protected

Index for element-constant material properties.

Definition at line 244 of file KokkosDatum.h.

Referenced by propertyIdx().

◆ _J

Real33 Moose::Kokkos::Datum::_J
private

Cached physical transformation data.

Definition at line 262 of file KokkosDatum.h.

Referenced by J(), and reinitTransform().

◆ _JxW

Real Moose::Kokkos::Datum::_JxW
private

Definition at line 263 of file KokkosDatum.h.

Referenced by JxW(), and reinitTransform().

◆ _local_thread_id

unsigned int Moose::Kokkos::Datum::_local_thread_id = 0
private

Thread ID for local parallelization.

Definition at line 270 of file KokkosDatum.h.

Referenced by local_thread_id(), and set_local_parallel().

◆ _mesh

const Mesh& Moose::Kokkos::Datum::_mesh
protected

Reference of the Kokkos mesh.

Definition at line 216 of file KokkosDatum.h.

Referenced by extraElemID(), and mesh().

◆ _n_qps

const unsigned int Moose::Kokkos::Datum::_n_qps = 1
protected

Number of local quadrature points.

Definition at line 236 of file KokkosDatum.h.

Referenced by n_qps().

◆ _neighbor

const ContiguousElementID Moose::Kokkos::Datum::_neighbor = libMesh::DofObject::invalid_id
protected

Current contiguous element ID of neighbor.

Definition at line 232 of file KokkosDatum.h.

Referenced by hasNeighbor().

◆ _node

const ContiguousNodeID Moose::Kokkos::Datum::_node = libMesh::DofObject::invalid_id
protected

Current contiguous node ID.

Definition at line 228 of file KokkosDatum.h.

Referenced by isNodal(), isNodalDefined(), node(), and q_point().

◆ _normal

Real3 Moose::Kokkos::Datum::_normal
private

Definition at line 265 of file KokkosDatum.h.

Referenced by normals(), and reinitTransform().

◆ _num_local_threads

unsigned int Moose::Kokkos::Datum::_num_local_threads = 1
private

Number of threads for local parallelization.

Definition at line 274 of file KokkosDatum.h.

Referenced by num_local_threads(), and set_local_parallel().

◆ _qp_offset

const dof_id_type Moose::Kokkos::Datum::_qp_offset = libMesh::DofObject::invalid_id
protected

Starting offset into the global quadrature point index.

Definition at line 240 of file KokkosDatum.h.

Referenced by propertyIdx(), and qpOffset().

◆ _side

const unsigned int Moose::Kokkos::Datum::_side = libMesh::invalid_uint
protected

Current side index.

Definition at line 224 of file KokkosDatum.h.

Referenced by isSide(), reinitTransform(), and side().

◆ _systems

const Array<System>& Moose::Kokkos::Datum::_systems
protected

Reference of the Kokkos systems.

Definition at line 212 of file KokkosDatum.h.

Referenced by isNodalDefined(), and system().

◆ _xyz

Real3 Moose::Kokkos::Datum::_xyz
private

Definition at line 264 of file KokkosDatum.h.

Referenced by q_point(), and reinitTransform().


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