https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
BoundaryRestrictableRequired Class Reference

A class for requiring an object to be boundary restricted. More...

#include <BoundaryRestrictableRequired.h>

Inheritance diagram for BoundaryRestrictableRequired:
[legend]

Public Types

enum  TEST_TYPE { ALL , ANY }
 A flag changing the behavior of hasBoundary. More...
 

Public Member Functions

 BoundaryRestrictableRequired (const MooseObject *moose_object, bool nodal)
 
 BoundaryRestrictableRequired (const BoundaryRestrictableRequired &object, const Moose::Kokkos::FunctorCopy &key)
 Special constructor used for Kokkos functor copy during parallel dispatch.
 
virtual const std::set< BoundaryID > & boundaryIDs () const
 Return the boundary IDs for this object.
 
const std::vector< BoundaryName > & boundaryNames () const
 Return the boundary names for this object.
 
unsigned int numBoundaryIDs () const
 Return the number of boundaries for this object.
 
bool hasBoundary (const BoundaryName &name) const
 Test if the supplied boundary name is valid for this object.
 
bool hasBoundary (const std::vector< BoundaryName > &names) const
 Test if the supplied vector of boundary names are valid for this object.
 
bool hasBoundary (const BoundaryID &id) const
 Test if the supplied boundary ids are valid for this object.
 
bool hasBoundary (const std::vector< BoundaryID > &ids, TEST_TYPE type=ALL) const
 Test if the supplied vector boundary ids are valid for this object.
 
bool hasBoundary (const std::set< BoundaryID > &ids, TEST_TYPE type=ALL) const
 Test if the supplied set of boundary ids are valid for this object.
 
bool isBoundarySubset (const std::set< BoundaryID > &ids) const
 Test if the class boundary ids are a subset of the supplied objects.
 
bool isBoundarySubset (const std::vector< BoundaryID > &ids) const
 
template<typename T , bool is_ad = false>
bool hasBoundaryMaterialProperty (const std::string &prop_name) const
 Check if a material property is valid for all boundaries of this object.
 
virtual bool boundaryRestricted () const
 Returns true if this object has been restricted to a boundary.
 
const std::set< BoundaryID > & meshBoundaryIDs () const
 Returns the set of all boundary ids for the entire mesh.
 
virtual bool checkVariableBoundaryIntegrity () const
 Whether integrity/coverage checking should be conducted for moose variables used in this object.
 

Static Public Member Functions

static InputParameters validParams ()
 
static bool restricted (const std::set< BoundaryID > &ids)
 Helper for determining if the object is boundary restricted.
 

Protected Member Functions

bool hasBoundaryMaterialPropertyHelper (const std::string &prop_name) const
 A helper method to avoid circular #include problems.
 
KOKKOS_FUNCTION dof_id_type numKokkosBoundaryNodes () const
 Get the number of nodes this Kokkos object is operating on.
 
KOKKOS_FUNCTION dof_id_type numKokkosBoundarySides () const
 Get the number of sides this Kokkos object is operating on.
 
KOKKOS_FUNCTION ContiguousNodeID kokkosBoundaryNodeID (Moose::Kokkos::ThreadID tid) const
 Get the contiguous node ID this Kokkos thread is operating on.
 
KOKKOS_FUNCTION auto kokkosBoundaryElementSideID (Moose::Kokkos::ThreadID tid) const
 Get the contiguous element ID - side index pair this Kokkos thread is operating on.
 

Private Member Functions

void initializeBoundaryRestrictable ()
 An initialization routine needed for dual constructors.
 
void initializeKokkosBoundaryRestrictable ()
 

Private Attributes

FEProblemBase_bnd_feproblem
 Pointer to FEProblemBase.
 
MooseMesh_bnd_mesh
 Point to mesh.
 
std::set< BoundaryID_bnd_ids
 Set of the boundary ids.
 
std::vector< BoundaryID_vec_ids
 Vector of the boundary ids.
 
std::vector< BoundaryName > _boundary_names
 Vector the the boundary names.
 
const bool _bnd_dual_restrictable
 Flag for allowing dual restriction with BlockRestrictable.
 
const std::set< SubdomainID_empty_block_ids
 An empty set for referencing when block_ids is not included.
 
const std::set< SubdomainID > & _block_ids
 Reference to the block_ids, defaults to an empty set if not provided.
 
THREAD_ID _bnd_tid
 Thread id for this object.
 
const MaterialData_bnd_material_data
 Pointer to MaterialData for boundary (.
 
bool _bnd_nodal
 Whether or not this object is restricted to nodesets.
 
const MooseObject_moose_object
 The moose object that this is an interface for.
 
Moose::Kokkos::Array< ContiguousNodeID_kokkos_node_ids
 List of contiguous node IDs this Kokkos object is operating on.
 
Moose::Kokkos::Array< Moose::Kokkos::Pair< ContiguousElementID, unsigned int > > _kokkos_element_side_ids
 List of contiguous element ID - side index pairs this Kokkos object is operating on.
 

Detailed Description

A class for requiring an object to be boundary restricted.

This class acts as a wrapper for BoundaryRestrictable, it allows an additional validParams that adds the 'boundary' parameter as required.

Definition at line 21 of file BoundaryRestrictableRequired.h.

Member Enumeration Documentation

◆ TEST_TYPE

A flag changing the behavior of hasBoundary.

Enumerator
ALL 
ANY 

Definition at line 33 of file BoundaryRestrictable.h.

Constructor & Destructor Documentation

◆ BoundaryRestrictableRequired() [1/2]

BoundaryRestrictableRequired::BoundaryRestrictableRequired ( const MooseObject moose_object,
bool  nodal 
)

Definition at line 31 of file BoundaryRestrictableRequired.C.

33 : BoundaryRestrictable(moose_object, nodal)
34{
35}
/class BoundaryRestrictable /brief Provides functionality for limiting the object to certain boundary...

◆ BoundaryRestrictableRequired() [2/2]

BoundaryRestrictableRequired::BoundaryRestrictableRequired ( const BoundaryRestrictableRequired object,
const Moose::Kokkos::FunctorCopy key 
)

Special constructor used for Kokkos functor copy during parallel dispatch.

Definition at line 38 of file BoundaryRestrictableRequired.C.

40 : BoundaryRestrictable(object, key)
41{
42}

Member Function Documentation

◆ boundaryIDs()

const std::set< BoundaryID > & BoundaryRestrictable::boundaryIDs ( ) const
virtualinherited

◆ boundaryNames()

const std::vector< BoundaryName > & BoundaryRestrictable::boundaryNames ( ) const
inherited

Return the boundary names for this object.

Returns
A set of all boundary names for which the object is restricted

Definition at line 230 of file BoundaryRestrictable.C.

231{
232 return _boundary_names;
233}
std::vector< BoundaryName > _boundary_names
Vector the the boundary names.

Referenced by MaterialOutputAction::getParams(), NearestNodeDistanceAux::NearestNodeDistanceAux(), and NearestNodeValueAux::NearestNodeValueAux().

◆ boundaryRestricted()

bool BoundaryRestrictable::boundaryRestricted ( ) const
virtualinherited

Returns true if this object has been restricted to a boundary.

See also
MooseObject

Definition at line 242 of file BoundaryRestrictable.C.

243{
245}
static bool restricted(const std::set< BoundaryID > &ids)
Helper for determining if the object is boundary restricted.

Referenced by Moose::Kokkos::Material::checkMaterialProperty(), Material::checkMaterialProperty(), MaterialOutputAction::getParams(), DerivativeMaterialInterface< T >::haveMaterialProperty(), and NodePositions::initialize().

◆ checkVariableBoundaryIntegrity()

virtual bool BoundaryRestrictable::checkVariableBoundaryIntegrity ( ) const
inlinevirtualinherited

Whether integrity/coverage checking should be conducted for moose variables used in this object.

This should return true if variables are only evaluated locally, e.g. on the current node or element. This should return false if evaluation of this object entails non-local variable evaluations

Definition at line 190 of file BoundaryRestrictable.h.

190{ return true; }

◆ hasBoundary() [1/5]

bool BoundaryRestrictable::hasBoundary ( const BoundaryID id) const
inherited

Test if the supplied boundary ids are valid for this object.

Parameters
idA BoundaryID to check
Returns
True if the given id is valid for this object

Definition at line 268 of file BoundaryRestrictable.C.

269{
270 if (_bnd_ids.empty() || _bnd_ids.find(Moose::ANY_BOUNDARY_ID) != _bnd_ids.end())
271 return true;
272 else
273 return _bnd_ids.find(id) != _bnd_ids.end();
274}
const BoundaryID ANY_BOUNDARY_ID
Definition MooseTypes.C:21

◆ hasBoundary() [2/5]

bool BoundaryRestrictable::hasBoundary ( const BoundaryName &  name) const
inherited

Test if the supplied boundary name is valid for this object.

Parameters
nameA BoundaryName to check
Returns
True if the given id is valid for this object

Definition at line 254 of file BoundaryRestrictable.C.

255{
256 // Create a vector and utilize the getBoundaryIDs function, which
257 // handles the ANY_BOUNDARY_ID (getBoundaryID does not)
258 return hasBoundary(_bnd_mesh->getBoundaryIDs({name}));
259}
MooseMesh * _bnd_mesh
Point to mesh.
bool hasBoundary(const BoundaryName &name) const
Test if the supplied boundary name is valid for this object.
std::vector< BoundaryID > getBoundaryIDs(const Elem *const elem, const unsigned short int side) const
Returns a vector of boundary IDs for the requested element on the requested side.
Definition MooseMesh.C:3027

Referenced by BoundaryRestrictable::hasBoundary(), BoundaryRestrictable::hasBoundary(), BoundaryRestrictable::hasBoundary(), BoundaryRestrictable::hasBoundary(), BoundaryRestrictable::hasBoundaryMaterialPropertyHelper(), NodePositions::initialize(), and AuxKernelBase::initialSetup().

◆ hasBoundary() [3/5]

bool BoundaryRestrictable::hasBoundary ( const std::set< BoundaryID > &  ids,
TEST_TYPE  type = ALL 
) const
inherited

Test if the supplied set of boundary ids are valid for this object.

Parameters
idsA std::set of BoundaryIDs to check
typeA flag for the type of matching to perform: ALL requires that all supplied ids must match those of the object; ANY requires that any one of the supplied ids must match those of the object
Returns
True if the all of the given ids are found within the ids for this object
See also
isSubset

Definition at line 284 of file BoundaryRestrictable.C.

285{
286 // An empty input is assumed to be ANY_BOUNDARY_ID
287 if (ids.empty() || ids.find(Moose::ANY_BOUNDARY_ID) != ids.end())
288 return true;
289
290 // All supplied IDs must match those of the object
291 else if (type == ALL)
292 {
293 if (_bnd_ids.find(Moose::ANY_BOUNDARY_ID) != _bnd_ids.end())
294 return true;
295 else
296 return std::includes(_bnd_ids.begin(), _bnd_ids.end(), ids.begin(), ids.end());
297 }
298 // Any of the supplied IDs must match those of the object
299 else
300 {
301 // Loop through the supplied ids
302 for (const auto & id : ids)
303 {
304 // Test the current supplied id
305 bool test = hasBoundary(id);
306
307 // If the id exists in the stored ids, then return true, otherwise
308 if (test)
309 return true;
310 }
311 return false;
312 }
313}

◆ hasBoundary() [4/5]

bool BoundaryRestrictable::hasBoundary ( const std::vector< BoundaryID > &  ids,
TEST_TYPE  type = ALL 
) const
inherited

Test if the supplied vector boundary ids are valid for this object.

Parameters
idsA vector of BoundaryIDs ids to check
typeA flag for the type of matching to perform: ALL requires that all supplied ids must match those of the object; ANY requires that any one of the supplied ids must match those of the object
Returns
True if the all of the given ids are found within the ids for this object

Definition at line 277 of file BoundaryRestrictable.C.

278{
279 std::set<BoundaryID> ids_set(ids.begin(), ids.end());
280 return hasBoundary(ids_set, type);
281}

◆ hasBoundary() [5/5]

bool BoundaryRestrictable::hasBoundary ( const std::vector< BoundaryName > &  names) const
inherited

Test if the supplied vector of boundary names are valid for this object.

Parameters
namesA vector of BoundaryNames to check
Returns
True if the given ids are valid for this object

Definition at line 262 of file BoundaryRestrictable.C.

263{
264 return hasBoundary(_bnd_mesh->getBoundaryIDs(names));
265}

◆ hasBoundaryMaterialProperty()

template<typename T , bool is_ad>
bool BoundaryRestrictable::hasBoundaryMaterialProperty ( const std::string &  prop_name) const
inherited

Check if a material property is valid for all boundaries of this object.

This method returns true if the supplied property name has been declared in a Material object on the boundary ids for this object.

Template Parameters
TThe type of material property
Parameters
prop_namethe name of the property to query
Returns
true if the property exists for all boundary ids of the object, otherwise false

Definition at line 295 of file BoundaryRestrictable.h.

296{
297 // If you get here the supplied property is defined on all boundaries, but is still subject
298 // existence in the MateialData class
299 return hasBoundaryMaterialPropertyHelper(prop_name) &&
300 _bnd_material_data.haveGenericProperty<T, is_ad>(prop_name);
301}
bool hasBoundaryMaterialPropertyHelper(const std::string &prop_name) const
A helper method to avoid circular #include problems.
const MaterialData & _bnd_material_data
Pointer to MaterialData for boundary (.
bool haveGenericProperty(const std::string &prop_name) const

◆ hasBoundaryMaterialPropertyHelper()

bool BoundaryRestrictable::hasBoundaryMaterialPropertyHelper ( const std::string &  prop_name) const
protectedinherited

A helper method to avoid circular #include problems.

See also
hasBoundaryMaterialProperty

Definition at line 345 of file BoundaryRestrictable.C.

346{
347 // Reference to MaterialWarehouse for testing and retrieving boundary ids
349
350 // Complete set of BoundaryIDs that this object is defined
351 const std::set<BoundaryID> & ids =
353
354 // Loop over each BoundaryID for this object
355 for (const auto & id : ids)
356 {
357 // Storage of material properties that have been DECLARED on this BoundaryID
358 std::set<std::string> declared_props;
359
360 // If boundary materials exist, populated the set of properties that were declared
361 if (warehouse.hasActiveBoundaryObjects(id))
362 {
363 const std::vector<std::shared_ptr<MaterialBase>> & mats =
364 warehouse.getActiveBoundaryObjects(id);
365 for (const auto & mat : mats)
366 {
367 const std::set<std::string> & mat_props = mat->getSuppliedItems();
368 declared_props.insert(mat_props.begin(), mat_props.end());
369 }
370 }
371
372 // If the supplied property is not in the list of properties on the current id, return false
373 if (declared_props.find(prop_name) == declared_props.end())
374 return false;
375 }
376
377 // If you get here the supplied property is defined on all boundaries
378 return true;
379}
FEProblemBase * _bnd_feproblem
Pointer to FEProblemBase.
const std::set< BoundaryID > & meshBoundaryIDs() const
Returns the set of all boundary ids for the entire mesh.
virtual const std::set< BoundaryID > & boundaryIDs() const
Return the boundary IDs for this object.
const MaterialWarehouse & getMaterialWarehouse() const
MaterialBase objects are special in that they have additional objects created automatically (see FEPr...
const std::map< BoundaryID, std::vector< std::shared_ptr< T > > > & getActiveBoundaryObjects(THREAD_ID tid=0) const
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const

Referenced by BoundaryRestrictable::hasBoundaryMaterialProperty().

◆ initializeBoundaryRestrictable()

void BoundaryRestrictable::initializeBoundaryRestrictable ( )
privateinherited

An initialization routine needed for dual constructors.

Definition at line 84 of file BoundaryRestrictable.C.

85{
86 // The name and id of the object
87 const std::string & name = _moose_object.name();
88
89 // If the mesh pointer is not defined, but FEProblemBase is, get it from there
90 if (_bnd_feproblem != NULL && _bnd_mesh == NULL)
92
93 // Check that the mesh pointer was defined, it is required for this class to operate
94 if (_bnd_mesh == NULL)
95 mooseError("The input parameters must contain a pointer to FEProblemBase via '_fe_problem' or "
96 "a pointer to the MooseMesh via '_mesh'");
97
98 // If the user supplies boundary IDs
99 if (_moose_object.isParamValid("boundary"))
100 {
101 // Extract the blocks from the input
102 _boundary_names = _moose_object.getParam<std::vector<BoundaryName>>("boundary");
103
104 // Get the IDs from the supplied names
106
107 // Store the IDs, handling ANY_BOUNDARY_ID if supplied
108 if (std::find(_boundary_names.begin(), _boundary_names.end(), "ANY_BOUNDARY_ID") !=
109 _boundary_names.end())
111 else
112 _bnd_ids.insert(_vec_ids.begin(), _vec_ids.end());
113 }
114
115 // Produce error if the object is not allowed to be both block and boundary restricted
116 if (!_bnd_dual_restrictable && !_bnd_ids.empty() && !_block_ids.empty())
117 if (!_block_ids.empty() && _block_ids.find(Moose::ANY_BLOCK_ID) == _block_ids.end())
118 _moose_object.paramError("boundary",
119 "Attempted to restrict the object '",
120 name,
121 "' to a boundary, but the object is already restricted by block(s)");
122
123 // Store ANY_BOUNDARY_ID if empty
124 if (_bnd_ids.empty())
125 {
127 _boundary_names = {"ANY_BOUNDARY_ID"};
128 }
129
130 // If this object is block restricted, check that defined blocks exist on the mesh
131 if (_bnd_ids.find(Moose::ANY_BOUNDARY_ID) == _bnd_ids.end())
132 {
133 const std::set<BoundaryID> * valid_ids;
134 const char * message_ptr = nullptr;
135
136 if (_bnd_nodal)
137 {
138 valid_ids = &_bnd_mesh->meshNodesetIds();
139 message_ptr = "node sets";
140 }
141 else
142 {
143 valid_ids = &_bnd_mesh->meshSidesetIds();
144 message_ptr = "side sets";
145 }
146
147 std::vector<BoundaryID> diff;
148
149 std::set_difference(_bnd_ids.begin(),
150 _bnd_ids.end(),
151 valid_ids->begin(),
152 valid_ids->end(),
153 std::back_inserter(diff));
154
155 if (!diff.empty())
156 {
157 std::ostringstream msg;
158 auto sep = " ";
159 msg << "the following " << message_ptr << " (ids) do not exist on the mesh:";
160 for (const auto & id : diff)
161 {
162 if (_boundary_names.size() > 0)
163 {
164 auto & name = _boundary_names.at(std::find(_vec_ids.begin(), _vec_ids.end(), id) -
165 _vec_ids.begin());
166 if (std::to_string(id) != name)
167 msg << sep << name << " (" << id << ")";
168 else
169 msg << sep << id;
170 }
171 else
172 msg << sep << id;
173 sep = ", ";
174 }
175
176 const auto & other_ids =
178 std::vector<BoundaryID> other_boundary_ids;
179 std::set_intersection(diff.begin(),
180 diff.end(),
181 other_ids.begin(),
182 other_ids.end(),
183 std::back_inserter(other_boundary_ids));
184 if (!other_boundary_ids.empty())
185 {
186 msg << "\n\nThe following boundary ";
187 if (other_boundary_ids.size() == 1)
188 msg << "id exists";
189 else
190 msg << "ids exist";
191 if (other_boundary_ids.size() == 1)
192 msg << " as " << (_bnd_nodal ? "a side set" : "a node set")
193 << " but is being requested as " << (_bnd_nodal ? "a node set" : "a side set") << ":";
194 else
195 msg << " as " << (_bnd_nodal ? "side sets" : "node sets")
196 << " but are being requested as " << (_bnd_nodal ? "node sets" : "side sets") << ":";
197
198 sep = " ";
199 for (const auto id : other_boundary_ids)
200 {
201 msg << sep << id;
202 sep = ", ";
203 }
204
205 if (!_bnd_nodal)
206 msg << "\n\nTry setting Mesh/construct_side_list_from_node_list=true if you want side "
207 "sets constructed from node sets.";
208 }
209
210 _moose_object.paramError("boundary", msg.str());
211 }
212 }
213
214#ifdef MOOSE_KOKKOS_ENABLED
218#endif
219}
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311
const bool _bnd_dual_restrictable
Flag for allowing dual restriction with BlockRestrictable.
void initializeKokkosBoundaryRestrictable()
const std::set< SubdomainID > & _block_ids
Reference to the block_ids, defaults to an empty set if not provided.
bool _bnd_nodal
Whether or not this object is restricted to nodesets.
const MooseObject & _moose_object
The moose object that this is an interface for.
std::vector< BoundaryID > _vec_ids
Vector of the boundary ids.
void addKokkosMeshInitializationHook(std::function< void()> function)
Add a function hook that needs to be called after Kokkos mesh initialization.
virtual MooseMesh & mesh() override
const std::string & name() const
Get the name of the class.
Definition MooseBase.h:103
void paramError(const std::string &param, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Definition MooseBase.h:457
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition MooseBase.h:406
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition MooseBase.h:199
const std::set< BoundaryID > & meshNodesetIds() const
Returns a read-only reference to the set of nodesets currently present in the Mesh.
Definition MooseMesh.C:3290
const std::set< BoundaryID > & meshSidesetIds() const
Returns a read-only reference to the set of sidesets currently present in the Mesh.
Definition MooseMesh.C:3284
bool isKokkosObject() const
Get whether this object is a Kokkos functor The parameter MooseBase::kokkos_object_param is set by th...
Definition MooseObject.h:63
const SubdomainID ANY_BLOCK_ID
Definition MooseTypes.C:19
std::string name(const ElemQuality q)

Referenced by BoundaryRestrictable::BoundaryRestrictable(), and BoundaryRestrictable::BoundaryRestrictable().

◆ initializeKokkosBoundaryRestrictable()

void BoundaryRestrictable::initializeKokkosBoundaryRestrictable ( )
privateinherited

◆ isBoundarySubset() [1/2]

bool BoundaryRestrictable::isBoundarySubset ( const std::set< BoundaryID > &  ids) const
inherited

Test if the class boundary ids are a subset of the supplied objects.

Parameters
idsA std::set of boundaries to check
Returns
True if all of the boundary ids for this class are found within the given ids (opposite of hasBoundary)
See also
hasBoundary

Definition at line 316 of file BoundaryRestrictable.C.

317{
318 // An empty input is assumed to be ANY_BOUNDARY_ID
319 if (ids.empty() || ids.find(Moose::ANY_BOUNDARY_ID) != ids.end())
320 return true;
321
322 if (_bnd_ids.find(Moose::ANY_BOUNDARY_ID) != _bnd_ids.end())
323 return std::includes(ids.begin(),
324 ids.end(),
325 _bnd_mesh->meshBoundaryIds().begin(),
326 _bnd_mesh->meshBoundaryIds().end());
327 else
328 return std::includes(ids.begin(), ids.end(), _bnd_ids.begin(), _bnd_ids.end());
329}
const std::set< BoundaryID > & meshBoundaryIds() const
Returns a read-only reference to the set of boundary IDs currently present in the Mesh.
Definition MooseMesh.C:3278

Referenced by BoundaryRestrictable::isBoundarySubset().

◆ isBoundarySubset() [2/2]

bool BoundaryRestrictable::isBoundarySubset ( const std::vector< BoundaryID > &  ids) const
inherited

Definition at line 332 of file BoundaryRestrictable.C.

333{
334 std::set<BoundaryID> ids_set(ids.begin(), ids.end());
335 return isBoundarySubset(ids_set);
336}
bool isBoundarySubset(const std::set< BoundaryID > &ids) const
Test if the class boundary ids are a subset of the supplied objects.

◆ kokkosBoundaryElementSideID()

KOKKOS_FUNCTION auto BoundaryRestrictable::kokkosBoundaryElementSideID ( Moose::Kokkos::ThreadID  tid) const
inlineprotectedinherited

Get the contiguous element ID - side index pair this Kokkos thread is operating on.

Parameters
tidThe thread ID
Returns
The contiguous element ID - side index pair

Definition at line 273 of file BoundaryRestrictable.h.

274 {
275 return _kokkos_element_side_ids[tid];
276 }
Moose::Kokkos::Array< Moose::Kokkos::Pair< ContiguousElementID, unsigned int > > _kokkos_element_side_ids
List of contiguous element ID - side index pairs this Kokkos object is operating on.

Referenced by Moose::Kokkos::LinearFVBoundaryCondition::operator()(), Moose::Kokkos::LinearFVBoundaryCondition::operator()(), Moose::Kokkos::SideUserObject::operator()(), Moose::Kokkos::IntegratedBC::operator()(), Moose::Kokkos::VectorIntegratedBC::operator()(), Moose::Kokkos::IntegratedBC::operator()(), Moose::Kokkos::VectorIntegratedBC::operator()(), Moose::Kokkos::SideReducer::operator()(), Moose::Kokkos::ADIntegratedBC::operator()(), Moose::Kokkos::IntegratedBC::operator()(), and Moose::Kokkos::VectorIntegratedBC::operator()().

◆ kokkosBoundaryNodeID()

KOKKOS_FUNCTION ContiguousNodeID BoundaryRestrictable::kokkosBoundaryNodeID ( Moose::Kokkos::ThreadID  tid) const
inlineprotectedinherited

◆ meshBoundaryIDs()

const std::set< BoundaryID > & BoundaryRestrictable::meshBoundaryIDs ( ) const
inherited

Returns the set of all boundary ids for the entire mesh.

Returns
A const reference the the boundary ids for the entire mesh

Definition at line 339 of file BoundaryRestrictable.C.

340{
341 return _bnd_mesh->getBoundaryIDs();
342}

Referenced by BoundaryRestrictable::hasBoundaryMaterialPropertyHelper().

◆ numBoundaryIDs()

unsigned int BoundaryRestrictable::numBoundaryIDs ( ) const
inherited

Return the number of boundaries for this object.

Returns
The number of boundary ids

Definition at line 236 of file BoundaryRestrictable.C.

237{
238 return (unsigned int)_bnd_ids.size();
239}

Referenced by SidesetInfoVectorPostprocessor::initialize().

◆ numKokkosBoundaryNodes()

KOKKOS_FUNCTION dof_id_type BoundaryRestrictable::numKokkosBoundaryNodes ( ) const
inlineprotectedinherited

Get the number of nodes this Kokkos object is operating on.

Returns
The number of nodes local to this process

Definition at line 250 of file BoundaryRestrictable.h.

250{ return _kokkos_node_ids.size(); }
KOKKOS_FUNCTION index_type size() const
Get the total array size.

Referenced by Moose::Kokkos::NodalReducer::numReducerThreads(), and Moose::Kokkos::NodalUserObject::numUserObjectThreads().

◆ numKokkosBoundarySides()

KOKKOS_FUNCTION dof_id_type BoundaryRestrictable::numKokkosBoundarySides ( ) const
inlineprotectedinherited

Get the number of sides this Kokkos object is operating on.

Returns
The number of sides local to this process

Definition at line 255 of file BoundaryRestrictable.h.

256 {
258 }

Referenced by Moose::Kokkos::SideReducer::numReducerThreads(), and Moose::Kokkos::SideUserObject::numUserObjectThreads().

◆ restricted()

bool BoundaryRestrictable::restricted ( const std::set< BoundaryID > &  ids)
staticinherited

Helper for determining if the object is boundary restricted.

This is needed for the MaterialPropertyInterface.

Definition at line 248 of file BoundaryRestrictable.C.

249{
250 return ids.find(Moose::ANY_BOUNDARY_ID) == ids.end();
251}

Referenced by BoundaryRestrictable::boundaryRestricted(), and moose::internal::boundaryRestricted().

◆ validParams()

InputParameters BoundaryRestrictableRequired::validParams ( )
static

Definition at line 14 of file BoundaryRestrictableRequired.C.

15{
16 // Create instance of InputParameters
18
19 // Create user-facing 'boundary' input for restricting inheriting object to boundaries
20 params.addRequiredParam<std::vector<BoundaryName>>(
21 "boundary", "The list of boundary IDs from the mesh where this object applies");
22
23 // A parameter for disabling error message for objects restrictable by boundary and block,
24 // if the parameter is valid it was already set so don't do anything
25 if (!params.isParamValid("_dual_restrictable"))
26 params.addPrivateParam<bool>("_dual_restrictable", false);
27
28 return params;
29}
InputParameters emptyInputParameters()
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void addRequiredParam(const std::string &name, const std::string &doc_string)
This method adds a parameter and documentation string to the InputParameters object that will be extr...
void addPrivateParam(const std::string &name, const T &value)
These method add a parameter to the InputParameters object which can be retrieved like any other para...
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another,...

Referenced by BoundaryCondition::validParams(), FVBoundaryCondition::validParams(), FVInterfaceKernel::validParams(), LinearFVBoundaryCondition::validParams(), InterfaceUserObjectBase::validParams(), and SideUserObject::validParams().

Member Data Documentation

◆ _block_ids

const std::set<SubdomainID>& BoundaryRestrictable::_block_ids
privateinherited

Reference to the block_ids, defaults to an empty set if not provided.

Definition at line 215 of file BoundaryRestrictable.h.

Referenced by BoundaryRestrictable::initializeBoundaryRestrictable().

◆ _bnd_dual_restrictable

const bool BoundaryRestrictable::_bnd_dual_restrictable
privateinherited

Flag for allowing dual restriction with BlockRestrictable.

Definition at line 209 of file BoundaryRestrictable.h.

Referenced by BoundaryRestrictable::initializeBoundaryRestrictable().

◆ _bnd_feproblem

FEProblemBase* BoundaryRestrictable::_bnd_feproblem
privateinherited

◆ _bnd_ids

std::set<BoundaryID> BoundaryRestrictable::_bnd_ids
privateinherited

◆ _bnd_material_data

const MaterialData& BoundaryRestrictable::_bnd_material_data
privateinherited

Pointer to MaterialData for boundary (.

See also
hasBoundaryMaterialProperty)

Definition at line 221 of file BoundaryRestrictable.h.

Referenced by BoundaryRestrictable::hasBoundaryMaterialProperty().

◆ _bnd_mesh

MooseMesh* BoundaryRestrictable::_bnd_mesh
privateinherited

◆ _bnd_nodal

bool BoundaryRestrictable::_bnd_nodal
privateinherited

Whether or not this object is restricted to nodesets.

Definition at line 224 of file BoundaryRestrictable.h.

Referenced by BoundaryRestrictable::initializeBoundaryRestrictable().

◆ _bnd_tid

THREAD_ID BoundaryRestrictable::_bnd_tid
privateinherited

Thread id for this object.

Definition at line 218 of file BoundaryRestrictable.h.

◆ _boundary_names

std::vector<BoundaryName> BoundaryRestrictable::_boundary_names
privateinherited

Vector the the boundary names.

Definition at line 206 of file BoundaryRestrictable.h.

Referenced by BoundaryRestrictable::boundaryNames(), and BoundaryRestrictable::initializeBoundaryRestrictable().

◆ _empty_block_ids

const std::set<SubdomainID> BoundaryRestrictable::_empty_block_ids
privateinherited

An empty set for referencing when block_ids is not included.

Definition at line 212 of file BoundaryRestrictable.h.

◆ _kokkos_element_side_ids

Moose::Kokkos::Array<Moose::Kokkos::Pair<ContiguousElementID, unsigned int> > BoundaryRestrictable::_kokkos_element_side_ids
privateinherited

List of contiguous element ID - side index pairs this Kokkos object is operating on.

Definition at line 289 of file BoundaryRestrictable.h.

Referenced by BoundaryRestrictable::kokkosBoundaryElementSideID(), and BoundaryRestrictable::numKokkosBoundarySides().

◆ _kokkos_node_ids

Moose::Kokkos::Array<ContiguousNodeID> BoundaryRestrictable::_kokkos_node_ids
privateinherited

List of contiguous node IDs this Kokkos object is operating on.

Definition at line 284 of file BoundaryRestrictable.h.

Referenced by BoundaryRestrictable::kokkosBoundaryNodeID(), and BoundaryRestrictable::numKokkosBoundaryNodes().

◆ _moose_object

const MooseObject& BoundaryRestrictable::_moose_object
privateinherited

The moose object that this is an interface for.

Definition at line 227 of file BoundaryRestrictable.h.

Referenced by BoundaryRestrictable::initializeBoundaryRestrictable().

◆ _vec_ids

std::vector<BoundaryID> BoundaryRestrictable::_vec_ids
privateinherited

Vector of the boundary ids.

Definition at line 203 of file BoundaryRestrictable.h.

Referenced by BoundaryRestrictable::initializeBoundaryRestrictable().


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