12#ifdef MOOSE_KOKKOS_ENABLED
22#define usingBlockRestrictableMembers using BlockRestrictable::getBlockCoordSystem
27#ifdef MOOSE_KOKKOS_ENABLED
93#ifdef MOOSE_KOKKOS_ENABLED
114 const std::vector<SubdomainName> &
blocks()
const;
127 virtual const std::set<SubdomainID> &
blockIDs()
const;
139 bool hasBlocks(
const SubdomainName & name)
const;
146 bool hasBlocks(
const std::vector<SubdomainName> & names)
const;
153 bool hasBlocks(
const std::set<SubdomainName> & names)
const;
167 bool hasBlocks(
const std::vector<SubdomainID> & ids)
const;
175 bool hasBlocks(
const std::set<SubdomainID> & ids)
const;
193 bool isBlockSubset(
const std::vector<SubdomainID> & ids)
const;
207 template <
typename T,
bool is_ad = false>
246#ifdef MOOSE_KOKKOS_ENABLED
256#ifdef MOOSE_KOKKOS_SCOPE
341#ifdef MOOSE_KOKKOS_ENABLED
358template <
typename T,
bool is_ad>
dof_id_type ContiguousElementID
An interface that restricts an object to subdomains via the 'blocks' input parameter.
bool isBlockSubset(const std::set< SubdomainID > &ids) const
Test if the class block ids are a subset of the supplied objects.
bool hasBlocks(const SubdomainName &name) const
Test if the supplied block name is valid for this object.
unsigned int blocksMaxDimension() const
Return the largest mesh dimension of the elements in the blocks for this object.
const std::string & _blk_name
Name of the object.
KOKKOS_FUNCTION dof_id_type numKokkosBlockElements() const
Get the number of elements this Kokkos object is operating on.
BlockRestrictable(const BlockRestrictable &object, const Moose::Kokkos::FunctorCopy &key)
Special constructor used for Kokkos functor copy during parallel dispatch.
virtual const std::set< SubdomainID > & blockIDs() const
Return the block subdomain ids for this object Note, if this is not block restricted,...
const MaterialData * _blk_material_data
Pointer to the MaterialData class for this object.
bool hasBlockMaterialProperty(const std::string &prop_name)
Check if a material property is valid for all blocks of this object.
Moose::CoordinateSystemType getBlockCoordSystem()
Check if the blocks this object operates on all have the same coordinate system, and if so return it.
const std::set< SubdomainID > & meshBlockIDs() const
Return all of the SubdomainIDs for the mesh.
unsigned int _blk_dim
Largest mesh dimension of the elements in the blocks for this object.
unsigned int numBlocks() const
Return the number of blocks for this object.
Moose::Kokkos::Array< Moose::Kokkos::Pair< ContiguousElementID, unsigned int > > _kokkos_element_side_ids
List of contiguous local element ID - side index pairs this Kokkos object is operating on.
KOKKOS_FUNCTION ContiguousElementID kokkosBlockElementID(Moose::Kokkos::ThreadID tid) const
Get the contiguous element ID this Kokkos thread is operating on.
THREAD_ID _blk_tid
Thread id for this object.
Moose::Kokkos::Array< ContiguousNodeID > _kokkos_node_ids
List of contiguous node IDs this Kokkos object is operating on.
virtual ~BlockRestrictable()
Destructor: does nothing but needs to be marked as virtual since this class defines virtual functions...
Moose::Kokkos::Array< ContiguousElementID > _kokkos_element_ids
List of contiguous element IDs this Kokkos object is operating on.
virtual bool blockRestricted() const
Returns true if this object has been restricted to a block.
const std::vector< SubdomainName > & blocks() const
Return the block names for this object.
std::vector< SubdomainName > _blocks
Vector the block names supplied by the user via the input file.
virtual void checkVariable(const MooseVariableFieldBase &variable) const
Helper for checking that the ids for this object are in agreement with the variables on the supplied ...
void initializeBlockRestrictable(const MooseObject *moose_object)
An initialization routine needed for dual constructors.
KOKKOS_FUNCTION ContiguousElementID kokkosBlockNodeID(Moose::Kokkos::ThreadID tid) const
Get the contiguous node index this Kokkos thread is operating on.
KOKKOS_FUNCTION auto kokkosBlockElementSideID(Moose::Kokkos::ThreadID tid) const
Get the contiguous element ID - side index pair this Kokkos thread is operating on.
std::set< SubdomainID > _blk_ids
Set of block ids supplied by the user via the input file (for error checking)
const bool _blk_dual_restrictable
Flag for allowing dual restriction.
const MooseMesh * _blk_mesh
Pointer to Mesh.
std::vector< SubdomainID > _vec_ids
Vector of block ids supplied by the user via the input file (for error reporting)
KOKKOS_FUNCTION dof_id_type numKokkosBlockSides() const
Get the number of sides this Kokkos object is operating on.
static InputParameters validParams()
virtual bool hasBlockMaterialPropertyHelper(const std::string &prop_name)
A helper method to allow the Material object to specialize the behavior of hasBlockMaterialProperty.
KOKKOS_FUNCTION dof_id_type numKokkosBlockNodes() const
Get the number of nodes this Kokkos object is operating on.
FEProblemBase * _blk_feproblem
Pointer to FEProblemBase.
const MooseObject * _moose_object
Pointer to the MOOSE object.
void initializeKokkosBlockRestrictable()
const std::set< BoundaryID > & _boundary_ids
Reference to the boundary_ids, defaults to an empty set if not provided.
const std::set< BoundaryID > _empty_boundary_ids
An empty set for referencing when boundary_ids is not included.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Proxy for accessing MaterialPropertyStorage.
bool haveGenericProperty(const std::string &prop_name) const
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Every object that can be built by the factory should be derived from this class.
This class provides an interface for common operations on field variables of both FE and FV types wit...
KOKKOS_FUNCTION index_type size() const
Get the total array size.
void initialize(EquationSystems &es, const std::string &system_name)
MOOSE_KOKKOS_INDEX_TYPE ThreadID