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