https://mooseframework.inl.gov
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
MooseMesh Class Referenceabstract

MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and storing more state. More...

#include <MooseMesh.h>

Inheritance diagram for MooseMesh:
[legend]

Classes

struct  bnd_elem_iterator
 The definition of the bnd_elem_iterator struct. More...
 
struct  bnd_node_iterator
 The definition of the bnd_node_iterator struct. More...
 
struct  const_bnd_elem_iterator
 The definition of the const_bnd_elem_iterator struct. More...
 
struct  const_bnd_node_iterator
 The definition of the const_bnd_node_iterator struct. More...
 
struct  const_elem_info_iterator
 The definition of the const_elem_info_iterator struct. More...
 
struct  const_face_info_iterator
 The definition of the const_face_info_iterator struct. More...
 
struct  elem_info_iterator
 The definition of the elem_info_iterator struct. More...
 
struct  face_info_iterator
 The definition of the face_info_iterator struct. More...
 
struct  MeshType
 
struct  MeshType< libMesh::DistributedMesh >
 
struct  MeshType< libMesh::ReplicatedMesh >
 
struct  SubdomainData
 

Public Types

enum  ParallelType { ParallelType::DEFAULT, ParallelType::REPLICATED, ParallelType::DISTRIBUTED }
 
using PeriodicNodeInfo = std::pair< const Node *, BoundaryID >
 Helper type for building periodic node maps. More...
 
using DataFileParameterType = DataFileName
 The parameter type this interface expects for a data file name. More...
 

Public Member Functions

 MooseMesh (const InputParameters &parameters)
 
 MooseMesh (const MooseMesh &other_mesh)
 
 MooseMesh ()=delete
 
MooseMeshoperator= (const MooseMesh &other_mesh)=delete
 
virtual ~MooseMesh ()
 
virtual MooseMeshclone () const
 Clone method. More...
 
virtual std::unique_ptr< MooseMeshsafeClone () const =0
 A safer version of the clone() method that hands back an allocated object wrapped in a smart pointer. More...
 
void determineUseDistributedMesh ()
 Determine whether to use a distributed mesh. More...
 
std::unique_ptr< MeshBasebuildMeshBaseObject (unsigned int dim=libMesh::invalid_uint)
 Method to construct a libMesh::MeshBase object that is normally set and used by the MooseMesh object during the "init()" phase. More...
 
template<typename T >
std::unique_ptr< T > buildTypedMesh (unsigned int dim=libMesh::invalid_uint)
 Shortcut method to construct a unique pointer to a libMesh mesh instance. More...
 
void setMeshBase (std::unique_ptr< MeshBase > mesh_base)
 Method to set the mesh_base object. More...
 
virtual void init ()
 Initialize the Mesh object. More...
 
virtual void buildMesh ()=0
 Must be overridden by child classes. More...
 
virtual unsigned int dimension () const
 Returns MeshBase::mesh_dimension(), (not MeshBase::spatial_dimension()!) of the underlying libMesh mesh object. More...
 
virtual unsigned int spatialDimension () const
 Returns MeshBase::spatial_dimension. More...
 
virtual unsigned int effectiveSpatialDimension () const
 Returns the effective spatial dimension determined by the coordinates actually used by the mesh. More...
 
unsigned int getBlocksMaxDimension (const std::vector< SubdomainName > &blocks) const
 Returns the maximum element dimension on the given blocks. More...
 
std::vector< BoundaryIDgetBoundaryIDs (const Elem *const elem, const unsigned short int side) const
 Returns a vector of boundary IDs for the requested element on the requested side. More...
 
const ElemgetLowerDElem (const Elem *, unsigned short int) const
 Returns a const pointer to a lower dimensional element that corresponds to a side of a higher dimensional element. More...
 
unsigned int getHigherDSide (const Elem *elem) const
 Returns the local side ID of the interior parent aligned with the lower dimensional element. More...
 
const std::set< BoundaryID > & getBoundaryIDs () const
 Returns a const reference to a set of all user-specified boundary IDs. More...
 
void buildNodeList ()
 Calls BoundaryInfo::build_node_list()/build_side_list() and makes separate copies of Nodes/Elems in those lists. More...
 
void buildBndElemList ()
 
const std::map< dof_id_type, std::vector< dof_id_type > > & nodeToElemMap ()
 If not already created, creates a map from every node to all elements to which they are connected. More...
 
const std::map< dof_id_type, std::vector< dof_id_type > > & nodeToActiveSemilocalElemMap ()
 If not already created, creates a map from every node to all active semilocal elements to which they are connected. More...
 
virtual bnd_node_iterator bndNodesBegin ()
 Return iterators to the beginning/end of the boundary nodes list. More...
 
virtual bnd_node_iterator bndNodesEnd ()
 
virtual bnd_elem_iterator bndElemsBegin ()
 Return iterators to the beginning/end of the boundary elements list. More...
 
virtual bnd_elem_iterator bndElemsEnd ()
 
void buildNodeListFromSideList ()
 Calls BoundaryInfo::build_node_list_from_side_list(). More...
 
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > buildSideList ()
 Calls BoundaryInfo::build_side_list(), returns a std::vector of (elem-id, side-id, bc-id) tuples. More...
 
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > buildActiveSideList () const
 Calls BoundaryInfo::build_active_side_list. More...
 
unsigned int sideWithBoundaryID (const Elem *const elem, const BoundaryID boundary_id) const
 Calls BoundaryInfo::side_with_boundary_id(). More...
 
MeshBase::node_iterator localNodesBegin ()
 Calls local_nodes_begin/end() on the underlying libMesh mesh object. More...
 
MeshBase::node_iterator localNodesEnd ()
 
MeshBase::const_node_iterator localNodesBegin () const
 
MeshBase::const_node_iterator localNodesEnd () const
 
MeshBase::element_iterator activeLocalElementsBegin ()
 Calls active_local_nodes_begin/end() on the underlying libMesh mesh object. More...
 
const MeshBase::element_iterator activeLocalElementsEnd ()
 
MeshBase::const_element_iterator activeLocalElementsBegin () const
 
const MeshBase::const_element_iterator activeLocalElementsEnd () const
 
virtual dof_id_type nNodes () const
 Calls n_nodes/elem() on the underlying libMesh mesh object. More...
 
virtual dof_id_type nElem () const
 
virtual dof_id_type nLocalNodes () const
 
virtual dof_id_type nActiveElem () const
 
virtual dof_id_type nActiveLocalElem () const
 
virtual SubdomainID nSubdomains () const
 
virtual unsigned int nPartitions () const
 
virtual bool skipPartitioning () const
 
virtual bool skipNoncriticalPartitioning () const
 
virtual dof_id_type maxNodeId () const
 Calls max_node/elem_id() on the underlying libMesh mesh object. More...
 
virtual dof_id_type maxElemId () const
 
virtual const Nodenode (const dof_id_type i) const
 Various accessors (pointers/references) for Node "i". More...
 
virtual Nodenode (const dof_id_type i)
 
virtual const NodenodeRef (const dof_id_type i) const
 
virtual NodenodeRef (const dof_id_type i)
 
virtual const NodenodePtr (const dof_id_type i) const
 
virtual NodenodePtr (const dof_id_type i)
 
virtual const NodequeryNodePtr (const dof_id_type i) const
 
virtual NodequeryNodePtr (const dof_id_type i)
 
virtual Elemelem (const dof_id_type i)
 Various accessors (pointers/references) for Elem "i". More...
 
virtual const Elemelem (const dof_id_type i) const
 
virtual ElemelemPtr (const dof_id_type i)
 
virtual const ElemelemPtr (const dof_id_type i) const
 
virtual ElemqueryElemPtr (const dof_id_type i)
 
virtual const ElemqueryElemPtr (const dof_id_type i) const
 
bool prepared () const
 Setter/getter for whether the mesh is prepared. More...
 
virtual void prepared (bool state)
 
void needsPrepareForUse ()
 If this method is called, we will call libMesh's prepare_for_use method when we call Moose's prepare method. More...
 
void meshChanged ()
 Declares that the MooseMesh has changed, invalidates cached data and rebuilds caches. More...
 
virtual void onMeshChanged ()
 Declares a callback function that is executed at the conclusion of meshChanged(). More...
 
void cacheChangedLists ()
 Cache information about what elements were refined and coarsened in the previous step. More...
 
ConstElemPointerRangerefinedElementRange () const
 Return a range that is suitable for threaded execution over elements that were just refined. More...
 
ConstElemPointerRangecoarsenedElementRange () const
 Return a range that is suitable for threaded execution over elements that were just coarsened. More...
 
const std::vector< const Elem * > & coarsenedElementChildren (const Elem *elem) const
 Get the newly removed children element ids for an element that was just coarsened. More...
 
void updateActiveSemiLocalNodeRange (std::set< dof_id_type > &ghosted_elems)
 Clears the "semi-local" node list and rebuilds it. More...
 
bool isSemiLocal (Node *const node) const
 Returns true if the node is semi-local. More...
 
const std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > & getBoundariesToElems () const
 Returns a map of boundaries to ids of elements on the boundary. More...
 
const std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > & getBoundariesToActiveSemiLocalElemIds () const
 Returns a map of boundaries to ids of elements on the boundary. More...
 
std::unordered_set< dof_id_typegetBoundaryActiveSemiLocalElemIds (BoundaryID bid) const
 Return all ids of elements which have a side which is part of a sideset. More...
 
std::unordered_set< dof_id_typegetBoundaryActiveNeighborElemIds (BoundaryID bid) const
 Return all ids of neighbors of elements which have a side which is part of a sideset. More...
 
bool isBoundaryFullyExternalToSubdomains (BoundaryID bid, const std::set< SubdomainID > &blk_group) const
 Returns whether a boundary (given by its id) is not crossing through a group of blocks, by which we mean that elements on both sides of the boundary are in those blocks. More...
 
const std::set< SubdomainID > & meshSubdomains () const
 Returns a read-only reference to the set of subdomains currently present in the Mesh. More...
 
const std::set< BoundaryID > & meshBoundaryIds () const
 Returns a read-only reference to the set of boundary IDs currently present in the Mesh. More...
 
const std::set< BoundaryID > & meshSidesetIds () const
 Returns a read-only reference to the set of sidesets currently present in the Mesh. More...
 
const std::set< BoundaryID > & meshNodesetIds () const
 Returns a read-only reference to the set of nodesets currently present in the Mesh. More...
 
void setBoundaryToNormalMap (std::unique_ptr< std::map< BoundaryID, RealVectorValue >> boundary_map)
 Sets the mapping between BoundaryID and normal vector Is called by AddAllSideSetsByNormals. More...
 
void setBoundaryToNormalMap (std::map< BoundaryID, RealVectorValue > *boundary_map)
 
void setMeshBoundaryIDs (std::set< BoundaryID > boundary_IDs)
 Sets the set of BoundaryIDs Is called by AddAllSideSetsByNormals. More...
 
const RealVectorValuegetNormalByBoundaryID (BoundaryID id) const
 Returns the normal vector associated with a given BoundaryID. More...
 
bool prepare (const MeshBase *mesh_to_clone)
 Calls prepare_for_use() if the underlying MeshBase object isn't prepared, then communicates various boundary information on parallel meshes. More...
 
void update ()
 Calls buildNodeListFromSideList(), buildNodeList(), and buildBndElemList(). More...
 
unsigned int uniformRefineLevel () const
 Returns the level of uniform refinement requested (zero if AMR is disabled). More...
 
void setUniformRefineLevel (unsigned int, bool deletion=true)
 Set uniform refinement level. More...
 
bool skipDeletionRepartitionAfterRefine () const
 Return a flag indicating whether or not we should skip remote deletion and repartition after uniform refinements. More...
 
bool skipRefineWhenUseSplit () const
 Whether or not skip uniform refinements when using a pre-split mesh. More...
 
void addGhostedBoundary (BoundaryID boundary_id)
 This will add the boundary ids to be ghosted to this processor. More...
 
void setGhostedBoundaryInflation (const std::vector< Real > &inflation)
 This sets the inflation amount for the bounding box for each partition for use in ghosting boundaries. More...
 
const std::set< unsigned int > & getGhostedBoundaries () const
 Return a writable reference to the set of ghosted boundary IDs. More...
 
const std::vector< Real > & getGhostedBoundaryInflation () const
 Return a writable reference to the _ghosted_boundaries_inflation vector. More...
 
void ghostGhostedBoundaries ()
 Actually do the ghosting of boundaries that need to be ghosted to this processor. More...
 
void needGhostGhostedBoundaries (bool needghost)
 Whether or not we want to ghost ghosted boundaries. More...
 
unsigned int getPatchSize () const
 Getter for the patch_size parameter. More...
 
unsigned int getGhostingPatchSize () const
 Getter for the ghosting_patch_size parameter. More...
 
unsigned int getMaxLeafSize () const
 Getter for the maximum leaf size parameter. More...
 
void setPatchUpdateStrategy (Moose::PatchUpdateType patch_update_strategy)
 Set the patch size update strategy. More...
 
const Moose::PatchUpdateTypegetPatchUpdateStrategy () const
 Get the current patch update strategy. More...
 
libMesh::BoundingBox getInflatedProcessorBoundingBox (Real inflation_multiplier=0.01) const
 Get a (slightly inflated) processor bounding box. More...
 
 operator libMesh::MeshBase & ()
 Implicit conversion operator from MooseMesh -> libMesh::MeshBase. More...
 
 operator const libMesh::MeshBase & () const
 
MeshBasegetMesh ()
 Accessor for the underlying libMesh Mesh object. More...
 
MeshBase & getMesh (const std::string &name)
 
const MeshBasegetMesh () const
 
const MeshBase & getMesh (const std::string &name) const
 
const MeshBasegetMeshPtr () const
 
const Moose::Kokkos::MeshgetKokkosMesh () const
 Accessor for Kokkos mesh object. More...
 
void printInfo (std::ostream &os=libMesh::out, const unsigned int verbosity=0) const
 Calls print_info() on the underlying Mesh. More...
 
const std::set< SubdomainID > & getNodeBlockIds (const Node &node) const
 Return list of blocks to which the given node belongs. More...
 
const std::vector< dof_id_type > & getNodeList (boundary_id_type nodeset_id) const
 Return a writable reference to a vector of node IDs that belong to nodeset_id. More...
 
const NodeaddUniqueNode (const Point &p, Real tol=1e-6)
 Add a new node to the mesh. More...
 
NodeaddQuadratureNode (const Elem *elem, const unsigned short int side, const unsigned int qp, BoundaryID bid, const Point &point)
 Adds a fictitious "QuadratureNode". More...
 
NodegetQuadratureNode (const Elem *elem, const unsigned short int side, const unsigned int qp)
 Get a specified quadrature node. More...
 
void clearQuadratureNodes ()
 Clear out any existing quadrature nodes. More...
 
BoundaryID getBoundaryID (const BoundaryName &boundary_name) const
 Get the associated BoundaryID for the boundary name. More...
 
std::vector< BoundaryIDgetBoundaryIDs (const std::vector< BoundaryName > &boundary_name, bool generate_unknown=false) const
 Get the associated BoundaryID for the boundary names that are passed in. More...
 
SubdomainID getSubdomainID (const SubdomainName &subdomain_name) const
 Get the associated subdomain ID for the subdomain name. More...
 
std::vector< SubdomainIDgetSubdomainIDs (const std::vector< SubdomainName > &subdomain_names) const
 Get the associated subdomainIDs for the subdomain names that are passed in. More...
 
std::set< SubdomainIDgetSubdomainIDs (const std::set< SubdomainName > &subdomain_names) const
 
void setSubdomainName (SubdomainID subdomain_id, const SubdomainName &name)
 This method sets the name for subdomain_id to name. More...
 
const std::string & getSubdomainName (SubdomainID subdomain_id) const
 Return the name of a block given an id. More...
 
std::vector< SubdomainName > getSubdomainNames (const std::vector< SubdomainID > &subdomain_ids) const
 Get the associated subdomainNames for the subdomain ids that are passed in. More...
 
void setBoundaryName (BoundaryID boundary_id, BoundaryName name)
 This method sets the boundary name of the boundary based on the id parameter. More...
 
const std::string & getBoundaryName (BoundaryID boundary_id) const
 Return the name of the boundary given the id. More...
 
void buildPeriodicNodeMap (std::multimap< dof_id_type, dof_id_type > &periodic_node_map, unsigned int var_number, libMesh::PeriodicBoundaries *pbs) const
 This routine builds a multimap of boundary ids to matching boundary ids across all periodic boundaries in the system. More...
 
void buildPeriodicNodeSets (std::map< BoundaryID, std::set< dof_id_type >> &periodic_node_sets, unsigned int var_number, libMesh::PeriodicBoundaries *pbs) const
 This routine builds a datastructure of node ids organized by periodic boundary ids. More...
 
Real dimensionWidth (unsigned int component) const
 Returns the width of the requested dimension. More...
 
bool detectOrthogonalDimRanges (Real tol=1e-6)
 This routine determines whether the Mesh is a regular orthogonal mesh (i.e. More...
 
void addPeriodicVariable (unsigned int var_num, BoundaryID primary, BoundaryID secondary)
 For "regular orthogonal" meshes, determine if variable var_num is periodic with respect to the primary and secondary BoundaryIDs, record this fact in the _periodic_dim data structure. More...
 
bool isTranslatedPeriodic (unsigned int nonlinear_var_num, unsigned int component) const
 Returns whether this generated mesh is periodic in the given dimension for the given variable. More...
 
RealVectorValue minPeriodicVector (unsigned int nonlinear_var_num, Point p, Point q) const
 This function returns the minimum vector between two points on the mesh taking into account periodicity for the given variable number. More...
 
Real minPeriodicDistance (unsigned int nonlinear_var_num, Point p, Point q) const
 This function returns the distance between two points on the mesh taking into account periodicity for the given variable number. More...
 
const std::pair< BoundaryID, BoundaryID > * getPairedBoundaryMapping (unsigned int component)
 This function attempts to return the paired boundary ids for the given component. More...
 
void buildRefinementAndCoarseningMaps (Assembly *assembly)
 Create the refinement and coarsening maps necessary for projection of stateful material properties when using adaptivity. More...
 
const std::vector< std::vector< QpMap > > & getRefinementMap (const Elem &elem, int parent_side, int child, int child_side)
 Get the refinement map for a given element type. More...
 
const std::vector< std::pair< unsigned int, QpMap > > & getCoarseningMap (const Elem &elem, int input_side)
 Get the coarsening map for a given element type. More...
 
void changeBoundaryId (const boundary_id_type old_id, const boundary_id_type new_id, bool delete_prev)
 Change all the boundary IDs for a given side from old_id to new_id. More...
 
const std::set< BoundaryID > & getSubdomainBoundaryIds (const SubdomainID subdomain_id) const
 Get the list of boundary ids associated with the given subdomain id. More...
 
std::set< BoundaryIDgetSubdomainInterfaceBoundaryIds (const SubdomainID subdomain_id) const
 Get the list of boundaries that contact the given subdomain. More...
 
std::set< SubdomainIDgetBoundaryConnectedBlocks (const BoundaryID bid) const
 Get the list of subdomains associated with the given boundary. More...
 
std::set< SubdomainIDgetBoundaryConnectedSecondaryBlocks (const BoundaryID bid) const
 Get the list of subdomains associated with the given boundary of its secondary side. More...
 
std::set< SubdomainIDgetInterfaceConnectedBlocks (const BoundaryID bid) const
 Get the list of subdomains contacting the given boundary. More...
 
const std::set< SubdomainID > & getBlockConnectedBlocks (const SubdomainID subdomain_id) const
 Get the list of subdomains neighboring a given subdomain. More...
 
bool isBoundaryNode (dof_id_type node_id) const
 Returns true if the requested node is in the list of boundary nodes, false otherwise. More...
 
bool isBoundaryNode (dof_id_type node_id, BoundaryID bnd_id) const
 Returns true if the requested node is in the list of boundary nodes for the specified boundary, false otherwise. More...
 
bool isBoundaryElem (dof_id_type elem_id) const
 Returns true if the requested element is in the list of boundary elements, false otherwise. More...
 
bool isBoundaryElem (dof_id_type elem_id, BoundaryID bnd_id) const
 Returns true if the requested element is in the list of boundary elements for the specified boundary, false otherwise. More...
 
void errorIfDistributedMesh (std::string name) const
 Generate a unified error message if the underlying libMesh mesh is a DistributedMesh. More...
 
virtual bool isDistributedMesh () const
 Returns the final Mesh distribution type. More...
 
bool isParallelTypeForced () const
 Tell the user if the distribution was overriden for any reason. More...
 
void setParallelType (ParallelType parallel_type)
 Allow to change parallel type. More...
 
ParallelType getParallelType () const
 
const MooseEnumpartitionerName () const
 
bool isPartitionerForced () const
 Tell the user if the partitioner was overriden for any reason. More...
 
void allowRecovery (bool allow)
 Set whether or not this mesh is allowed to read a recovery file. More...
 
void setCustomPartitioner (libMesh::Partitioner *partitioner)
 Setter for custom partitioner. More...
 
bool isRegularOrthogonal ()
 Getter to query if the mesh was detected to be regular and orthogonal. More...
 
bool hasSecondOrderElements ()
 check if the mesh has SECOND order elements More...
 
virtual std::unique_ptr< libMesh::PointLocatorBasegetPointLocator () const
 Proxy function to get a (sub)PointLocator from either the underlying libMesh mesh (default), or to allow derived meshes to return a custom point locator. More...
 
virtual std::string getFileName () const
 Returns the name of the mesh file read to produce this mesh if any or an empty string otherwise. More...
 
void needsRemoteElemDeletion (bool need_delete)
 Set whether we need to delete remote elements. More...
 
bool needsRemoteElemDeletion () const
 Whether we need to delete remote elements. More...
 
void allowRemoteElementRemoval (bool allow_removal)
 Set whether to allow remote element removal. More...
 
bool allowRemoteElementRemoval () const
 Whether we are allow remote element removal. More...
 
void deleteRemoteElements ()
 Delete remote elements. More...
 
bool hasMeshBase () const
 Whether mesh base object was constructed or not. More...
 
bool hasElementID (const std::string &id_name) const
 Whether mesh has an extra element integer with a given name. More...
 
unsigned int getElementIDIndex (const std::string &id_name) const
 Return the accessing integer for an extra element integer with its name. More...
 
dof_id_type maxElementID (unsigned int elem_id_index) const
 Return the maximum element ID for an extra element integer with its accessing index. More...
 
dof_id_type minElementID (unsigned int elem_id_index) const
 Return the minimum element ID for an extra element integer with its accessing index. More...
 
bool areElemIDsIdentical (const std::string &id_name1, const std::string &id_name2) const
 Whether or not two extra element integers are identical. More...
 
std::set< dof_id_typegetAllElemIDs (unsigned int elem_id_index) const
 Return all the unique element IDs for an extra element integer with its index. More...
 
std::set< dof_id_typegetElemIDsOnBlocks (unsigned int elem_id_index, const std::set< SubdomainID > &blks) const
 Return all the unique element IDs for an extra element integer with its index on a set of subdomains. More...
 
unsigned int getMaxSidesPerElem () const
 Get the maximum number of sides per element. More...
 
unsigned int getMaxNodesPerElem () const
 Get the maximum number of nodes per element. More...
 
unsigned int getMaxNodesPerSide () const
 Get the maximum number of nodes per side. More...
 
std::unordered_map< dof_id_type, std::set< dof_id_type > > getElemIDMapping (const std::string &from_id_name, const std::string &to_id_name) const
 
void cacheFaceInfoVariableOwnership () const
 Cache if variables live on the elements connected by the FaceInfo objects. More...
 
void cacheFVElementalDoFs () const
 Cache the DoF indices for FV variables on each element. More...
 
void computeFiniteVolumeCoords () const
 Compute the face coordinate value for all FaceInfo and ElemInfo objects. More...
 
void isDisplaced (bool is_displaced)
 Set whether this mesh is a displaced mesh. More...
 
bool isDisplaced () const
 whether this mesh is a displaced mesh More...
 
const std::map< boundary_id_type, std::vector< dof_id_type > > & nodeSetNodes () const
 
Moose::CoordinateSystemType getCoordSystem (SubdomainID sid) const
 Get the coordinate system type, e.g. More...
 
Moose::CoordinateSystemType getUniqueCoordSystem () const
 Get the coordinate system from the mesh, it must be the same in all subdomains otherwise this will error. More...
 
const std::map< SubdomainID, Moose::CoordinateSystemType > & getCoordSystem () const
 Get the map from subdomain ID to coordinate system type, e.g. More...
 
void setCoordSystem (const std::vector< SubdomainName > &blocks, const MultiMooseEnum &coord_sys)
 Set the coordinate system for the provided blocks to coord_sys. More...
 
void setAxisymmetricCoordAxis (const MooseEnum &rz_coord_axis)
 For axisymmetric simulations, set the symmetry coordinate axis. More...
 
void setGeneralAxisymmetricCoordAxes (const std::vector< SubdomainName > &blocks, const std::vector< std::pair< Point, RealVectorValue >> &axes)
 Sets the general coordinate axes for axisymmetric blocks. More...
 
const std::pair< Point, RealVectorValue > & getGeneralAxisymmetricCoordAxis (SubdomainID subdomain_id) const
 Gets the general axisymmetric coordinate axis for a block. More...
 
bool usingGeneralAxisymmetricCoordAxes () const
 Returns true if general axisymmetric coordinate axes are being used. More...
 
unsigned int getAxisymmetricRadialCoord () const
 Returns the desired radial direction for RZ coordinate transformation. More...
 
void checkCoordinateSystems ()
 Performs a sanity check for every element in the mesh. More...
 
void setCoordData (const MooseMesh &other_mesh)
 Set the coordinate system data to that of other_mesh. More...
 
void markFiniteVolumeInfoDirty ()
 Mark the finite volume information as dirty. More...
 
bool isFiniteVolumeInfoDirty () const
 
MooseAppCoordTransformcoordTransform ()
 
const MooseUnitslengthUnit () const
 
const std::unordered_map< std::pair< const Elem *, unsigned short int >, const Elem * > & getLowerDElemMap () const
 This function attempts to return the map from a high-order element side to its corresponding lower-d element. More...
 
bool isSplit () const
 
void buildFiniteVolumeInfo () const
 Builds the face and elem info vectors that store meta-data needed for looping over and doing calculations based on mesh faces and elements in a finite volume setting. More...
 
void setupFiniteVolumeMeshData () const
 Sets up the additional data needed for finite volume computations. More...
 
void doingPRefinement (bool doing_p_refinement)
 Indicate whether the kind of adaptivity we're doing is p-refinement. More...
 
bool doingPRefinement () const
 Query whether we have p-refinement. More...
 
unsigned int maxPLevel () const
 Returns the maximum p-refinement level of all elements. More...
 
unsigned int maxHLevel () const
 Returns the maximum h-refinement level of all elements. More...
 
const std::vector< QpMap > & getPRefinementMap (const Elem &elem) const
 Get the map describing for each volumetric quadrature point (qp) on the refined level which qp on the previous coarser level the fine qp is closest to. More...
 
const std::vector< QpMap > & getPRefinementSideMap (const Elem &elem) const
 Get the map describing for each side quadrature point (qp) on the refined level which qp on the previous coarser level the fine qp is closest to. More...
 
const std::vector< QpMap > & getPCoarseningMap (const Elem &elem) const
 Get the map describing for each volumetric quadrature point (qp) on the coarse level which qp on the previous finer level the coarse qp is closest to. More...
 
const std::vector< QpMap > & getPCoarseningSideMap (const Elem &elem) const
 Get the map describing for each side quadrature point (qp) on the coarse level which qp on the previous finer level the coarse qp is closest to. More...
 
void buildPRefinementAndCoarseningMaps (Assembly *assembly)
 
bool isLowerD (const SubdomainID subdomain_id) const
 
bool hasLowerD () const
 
const std::set< SubdomainID > & interiorLowerDBlocks () const
 
const std::set< SubdomainID > & boundaryLowerDBlocks () const
 
bool getConstructNodeListFromSideList ()
 Return construct node list from side list boolean. More...
 
bool getDisplaceNodeListBySideList ()
 Return displace node list by side list boolean. More...
 
virtual bool enabled () const
 Return the enabled status of the object. More...
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 Get another shared pointer to this object that has the same ownership group. More...
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
bool isKokkosObject () const
 Get whether this object is a Kokkos functor The parameter is set by the Kokkos base classes: More...
 
MooseAppgetMooseApp () const
 Get the MooseApp this class is associated with. More...
 
const std::string & type () const
 Get the type of this class. More...
 
const std::string & name () const
 Get the name of the class. More...
 
std::string typeAndName () const
 Get the class's combined type and name; useful in error handling. More...
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParametersparameters () const
 Get the parameters of the object. More...
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
template<typename T >
const T & getParam (const std::string &name) const
 Retrieve a parameter for the object. More...
 
template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 Retrieve two parameters and provide pair of parameters for the object. More...
 
template<typename T >
const T * queryParam (const std::string &name) const
 Query a parameter for the object. More...
 
template<typename T >
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 Retrieve a renamed parameter for the object. More...
 
template<typename T >
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 Verifies that the requested parameter exists and is not NULL and returns it to the caller. More...
 
bool isParamValid (const std::string &name) const
 Test if the supplied parameter is valid. More...
 
bool isParamSetByUser (const std::string &name) const
 Test if the supplied parameter is set by a user, as opposed to not set or set to default. More...
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 Connect controllable parameter of this action with the controllable parameters of the objects added by this action. More...
 
template<typename... Args>
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 with the full parameter path+name followed by the given args as the message. More...
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 Emits a warning prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message. More...
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 
template<typename... Args>
void paramInfo (const std::string &param, Args... args) const
 Emits an informational message prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message. More...
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 Deprecated message prefix; the error type is no longer used. More...
 
template<typename... Args>
void mooseError (Args &&... args) const
 Emits an error prefixed with object name and type and optionally a file path to the top-level block parameter if available. More...
 
template<typename... Args>
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
template<typename... Args>
void mooseErrorNonPrefixed (Args &&... args) const
 Emits an error without the prefixing included in mooseError(). More...
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 Emits a warning prefixed with object name and type. More...
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 Emits a warning without the prefixing included in mooseWarning(). More...
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 
template<typename... Args>
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr) const
 External method for calling moose error with added object context. More...
 
const Parallel::Communicatorcomm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 
std::string getDataFileName (const std::string &param) const
 Deprecated method. More...
 
std::string getDataFileNameByName (const std::string &relative_path) const
 Deprecated method. More...
 
std::string getDataFilePath (const std::string &relative_path) const
 Returns the path of a data file for a given relative file path. More...
 
PerfGraphperfGraph ()
 Get the PerfGraph. More...
 
libMesh::ConstElemRangegetActiveLocalElementRange ()
 Return pointers to range objects for various types of ranges (local nodes, boundary elems, etc.). More...
 
libMesh::NodeRangegetActiveNodeRange ()
 
SemiLocalNodeRangegetActiveSemiLocalNodeRange () const
 
libMesh::ConstNodeRangegetLocalNodeRange ()
 
libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > * getBoundaryNodeRange ()
 
libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > * getBoundaryElementRange ()
 
virtual Real getMinInDimension (unsigned int component) const
 Returns the min or max of the requested dimension respectively. More...
 
virtual Real getMaxInDimension (unsigned int component) const
 
bool isCustomPartitionerRequested () const
 Setter and getter for _custom_partitioner_requested. More...
 
void setIsCustomPartitionerRequested (bool cpr)
 
unsigned int nFace () const
 accessors for the FaceInfo objects More...
 
const std::vector< const FaceInfo * > & faceInfo () const
 Accessor for local FaceInfo objects. More...
 
face_info_iterator ownedFaceInfoBegin ()
 Iterators to owned faceInfo objects. More...
 
face_info_iterator ownedFaceInfoEnd ()
 
elem_info_iterator ownedElemInfoBegin ()
 Iterators to owned faceInfo objects. More...
 
elem_info_iterator ownedElemInfoEnd ()
 
const FaceInfofaceInfo (const Elem *elem, unsigned int side) const
 Accessor for the local FaceInfo object on the side of one element. Returns null if ghosted. More...
 
const ElemInfoelemInfo (const dof_id_type id) const
 Accessor for the elemInfo object for a given element ID. More...
 
const std::vector< const ElemInfo * > & elemInfoVector () const
 Accessor for the element info objects owned by this process. More...
 
const std::vector< FaceInfo > & allFaceInfo () const
 Accessor for all FaceInfo objects. More...
 

Static Public Member Functions

static InputParameters validParams ()
 Typical "Moose-style" constructor and copy constructor. More...
 
static MooseEnum partitioning ()
 returns MooseMesh partitioning options so other classes can use it More...
 
static MooseEnum elemTypes ()
 returns MooseMesh element type options More...
 
static void setSubdomainName (MeshBase &mesh, SubdomainID subdomain_id, const SubdomainName &name)
 This method sets the name for subdomain_id on the provided mesh to name. More...
 
static void changeBoundaryId (MeshBase &mesh, const boundary_id_type old_id, const boundary_id_type new_id, bool delete_prev)
 Change all the boundary IDs for a given side from old_id to new_id for the given mesh. More...
 
static void setPartitioner (MeshBase &mesh_base, MooseEnum &partitioner, bool use_distributed_mesh, const InputParameters &params, MooseObject &context_obj)
 Method for setting the partitioner on the passed in mesh_base object. More...
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node)
 External method for calling moose error with added object context. More...
 

Public Attributes

 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 An instance of helper class to write streams to the Console objects. More...
 

Static Public Attributes

static const std::string type_param = "_type"
 The name of the parameter that contains the object type. More...
 
static const std::string name_param = "_object_name"
 The name of the parameter that contains the object name. More...
 
static const std::string unique_name_param = "_unique_name"
 The name of the parameter that contains the unique object name. More...
 
static const std::string app_param = "_moose_app"
 The name of the parameter that contains the MooseApp. More...
 
static const std::string moose_base_param = "_moose_base"
 The name of the parameter that contains the moose system base. More...
 
static const std::string kokkos_object_param = "_kokkos_object"
 The name of the parameter that indicates an object is a Kokkos functor. More...
 

Protected Types

enum  { X = 0, Y, Z }
 Convenience enums. More...
 
enum  { MIN = 0, MAX }
 
typedef std::vector< BndNode * >::iterator bnd_node_iterator_imp
 
typedef std::vector< BndNode * >::const_iterator const_bnd_node_iterator_imp
 
typedef std::vector< BndElement * >::iterator bnd_elem_iterator_imp
 
typedef std::vector< BndElement * >::const_iterator const_bnd_elem_iterator_imp
 

Protected Member Functions

void cacheInfo ()
 
void freeBndNodes ()
 
void freeBndElems ()
 
void setPartitionerHelper (MeshBase *mesh=nullptr)
 
template<bool warning>
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 Set solution invalid mark for the given solution ID. More...
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
template<typename T , typename... Args>
T & declareRestartableData (const std::string &data_name, Args &&... args)
 Declare a piece of data as "restartable" and initialize it. More...
 
template<typename T , typename... Args>
ManagedValue< T > declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 Declares a piece of "managed" restartable data and initialize it. More...
 
template<typename T , typename... Args>
const T & getRestartableData (const std::string &data_name) const
 Declare a piece of data as "restartable" and initialize it Similar to declareRestartableData but returns a const reference to the object. More...
 
template<typename T , typename... Args>
T & declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 Declare a piece of data as "restartable" and initialize it. More...
 
template<typename T , typename... Args>
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 Declare a piece of data as "recoverable" and initialize it. More...
 
template<typename T , typename... Args>
T & declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 Declare a piece of data as "restartable". More...
 
template<typename T , typename... Args>
T & declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args)
 Declare a piece of data as "restartable". More...
 
std::string restartableName (const std::string &data_name) const
 Gets the name of a piece of restartable data given a data name, adding the system name and object name prefix. More...
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 Call to register a named section for timing. More...
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 Call to register a named section for timing. More...
 
std::string timedSectionName (const std::string &section_name) const
 

Protected Attributes

std::vector< std::unique_ptr< libMesh::GhostingFunctor > > _ghosting_functors
 Deprecated (DO NOT USE) More...
 
std::vector< std::shared_ptr< RelationshipManager > > _relationship_managers
 The list of active geometric relationship managers (bound to the underlying MeshBase object). More...
 
bool _built_from_other_mesh = false
 Whether or not this mesh was built from another mesh. More...
 
ParallelType _parallel_type
 Can be set to DISTRIBUTED, REPLICATED, or DEFAULT. More...
 
bool _use_distributed_mesh
 False by default. More...
 
bool _distribution_overridden
 
bool _parallel_type_overridden
 
std::unique_ptr< libMesh::MeshBase_mesh
 Pointer to underlying libMesh mesh object. More...
 
std::unique_ptr< Moose::Kokkos::Mesh_kokkos_mesh
 Pointer to Kokkos mesh object. More...
 
MooseEnum _partitioner_name
 The partitioner used on this mesh. More...
 
bool _partitioner_overridden
 
std::unique_ptr< libMesh::Partitioner_custom_partitioner
 The custom partitioner. More...
 
bool _custom_partitioner_requested
 
unsigned int _uniform_refine_level
 The level of uniform refinement requested (set to zero if AMR is disabled) More...
 
bool _skip_refine_when_use_split
 Whether or not to skip uniform refinements when using a pre-split mesh. More...
 
bool _skip_deletion_repartition_after_refine
 Whether or not skip remote deletion and repartition after uniform refinements. More...
 
bool _is_changed
 true if mesh is changed (i.e. after adaptivity step) More...
 
bool _is_nemesis
 True if a Nemesis Mesh was read in. More...
 
bool _moose_mesh_prepared = false
 True if prepare has been called on the mesh. More...
 
std::unique_ptr< ConstElemPointerRange_refined_elements
 The elements that were just refined. More...
 
std::unique_ptr< ConstElemPointerRange_coarsened_elements
 The elements that were just coarsened. More...
 
std::map< const Elem *, std::vector< const Elem * > > _coarsened_element_children
 Map of Parent elements to child elements for elements that were just coarsened. More...
 
std::set< Node * > _semilocal_node_list
 Used for generating the semilocal node range. More...
 
std::unique_ptr< libMesh::ConstElemRange_active_local_elem_range
 A range for use with threading. More...
 
std::unique_ptr< SemiLocalNodeRange_active_semilocal_node_range
 
std::unique_ptr< libMesh::NodeRange_active_node_range
 
std::unique_ptr< libMesh::ConstNodeRange_local_node_range
 
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > > _bnd_node_range
 
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > > _bnd_elem_range
 
std::map< dof_id_type, std::vector< dof_id_type > > _node_to_elem_map
 A map of all of the current nodes to the elements that they are connected to. More...
 
bool _node_to_elem_map_built
 
std::map< dof_id_type, std::vector< dof_id_type > > _node_to_active_semilocal_elem_map
 A map of all of the current nodes to the active elements that they are connected to. More...
 
bool _node_to_active_semilocal_elem_map_built
 
std::set< SubdomainID_mesh_subdomains
 A set of subdomain IDs currently present in the mesh. More...
 
std::unique_ptr< std::map< BoundaryID, RealVectorValue > > _boundary_to_normal_map
 The boundary to normal map - valid only when AddAllSideSetsByNormals is active. More...
 
std::vector< BndNode * > _bnd_nodes
 array of boundary nodes More...
 
std::map< boundary_id_type, std::set< dof_id_type > > _bnd_node_ids
 Map of sets of node IDs in each boundary. More...
 
std::vector< BndElement * > _bnd_elems
 array of boundary elems More...
 
std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > _bnd_elem_ids
 Map of set of elem IDs connected to each boundary. More...
 
std::map< dof_id_type, Node * > _quadrature_nodes
 
std::map< dof_id_type, std::map< unsigned int, std::map< dof_id_type, Node * > > > _elem_to_side_to_qp_to_quadrature_nodes
 
std::vector< BndNode_extra_bnd_nodes
 
std::map< dof_id_type, std::set< SubdomainID > > _block_node_list
 list of nodes that belongs to a specified block (domain) More...
 
std::map< boundary_id_type, std::vector< dof_id_type > > _node_set_nodes
 list of nodes that belongs to a specified nodeset: indexing [nodeset_id] -> [array of node ids] More...
 
std::set< unsigned int_ghosted_boundaries
 
std::vector< Real_ghosted_boundaries_inflation
 
unsigned int _patch_size
 The number of nodes to consider in the NearestNode neighborhood. More...
 
unsigned int _ghosting_patch_size
 The number of nearest neighbors to consider for ghosting purposes when iteration patch update strategy is used. More...
 
unsigned int _max_leaf_size
 
Moose::PatchUpdateType _patch_update_strategy
 The patch update strategy. More...
 
std::vector< Node * > _node_map
 Vector of all the Nodes in the mesh for determining when to add a new point. More...
 
bool _regular_orthogonal_mesh
 Boolean indicating whether this mesh was detected to be regular and orthogonal. More...
 
std::vector< std::vector< Real > > _bounds
 The bounds in each dimension of the mesh for regular orthogonal meshes. More...
 
std::vector< std::pair< BoundaryID, BoundaryID > > _paired_boundary
 A vector holding the paired boundaries for a regular orthogonal mesh. More...
 
const bool _is_split
 Whether or not we are using a (pre-)split mesh (automatically DistributedMesh) More...
 
const bool & _enabled
 Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects. More...
 
MooseApp_app
 The MOOSE application this is associated with. More...
 
Factory_factory
 The Factory associated with the MooseApp. More...
 
ActionFactory_action_factory
 Builds Actions. More...
 
const std::string & _type
 The type of this class. More...
 
const std::string & _name
 The name of this class. More...
 
const InputParameters_pars
 The object's parameters. More...
 
const Parallel::Communicator_communicator
 
MooseApp_restartable_app
 Reference to the application. More...
 
const std::string _restartable_system_name
 The system name this object is in. More...
 
const THREAD_ID _restartable_tid
 The thread ID for this object. More...
 
const bool _restartable_read_only
 Flag for toggling read only status (see ReporterData) More...
 
MooseApp_pg_moose_app
 The MooseApp that owns the PerfGraph. More...
 
const std::string _prefix
 A prefix to use for all sections. More...
 
std::set< BoundaryID_mesh_boundary_ids
 A set of boundary IDs currently present in the mesh. More...
 
std::set< BoundaryID_mesh_sideset_ids
 
std::set< BoundaryID_mesh_nodeset_ids
 

Private Member Functions

void detectPairedSidesets ()
 This routine detects paired sidesets of a regular orthogonal mesh (.i.e. More...
 
void buildRefinementMap (const Elem &elem, libMesh::QBase &qrule, libMesh::QBase &qrule_face, int parent_side, int child, int child_side)
 Build the refinement map for a given element type. More...
 
void buildCoarseningMap (const Elem &elem, libMesh::QBase &qrule, libMesh::QBase &qrule_face, int input_side)
 Build the coarsening map for a given element type. More...
 
void mapPoints (const std::vector< Point > &from, const std::vector< Point > &to, std::vector< QpMap > &qp_map)
 Find the closest points that map "from" to "to" and fill up "qp_map". More...
 
void findAdaptivityQpMaps (const Elem *template_elem, libMesh::QBase &qrule, libMesh::QBase &qrule_face, std::vector< std::vector< QpMap >> &refinement_map, std::vector< std::pair< unsigned int, QpMap >> &coarsen_map, int parent_side, int child, int child_side)
 Given an elem type, get maps that tell us what qp's are closest to each other between a parent and it's children. More...
 
void buildHRefinementAndCoarseningMaps (Assembly *assembly)
 
const std::vector< QpMap > & getPRefinementMapHelper (const Elem &elem, const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap >> &) const
 
const std::vector< QpMap > & getPCoarseningMapHelper (const Elem &elem, const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap >> &) const
 
void updateCoordTransform ()
 Update the coordinate transformation object based on our coordinate system data. More...
 
void checkDuplicateSubdomainNames ()
 Loop through all subdomain IDs and check if there is name duplication used for the subdomains with same ID. More...
 
void computeMaxPerElemAndSide ()
 Compute the maximum numbers per element and side. More...
 
void buildElemIDInfo ()
 Build extra data for faster access to the information of extra element integers. More...
 
void buildLowerDMesh ()
 Build lower-d mesh for all sides. More...
 

Private Attributes

std::unordered_map< dof_id_type, ElemInfo_elem_to_elem_info
 Map connecting elems with their corresponding ElemInfo, we use the element ID as the key. More...
 
std::vector< const ElemInfo * > _elem_info
 Holds only those ElemInfo objects that have processor_id equal to this process's id, e.g. More...
 
std::vector< FaceInfo_all_face_info
 FaceInfo object storing information for face based loops. More...
 
std::vector< const FaceInfo * > _face_info
 Holds only those FaceInfo objects that have processor_id equal to this process's id, e.g. More...
 
std::unordered_map< std::pair< const Elem *, unsigned int >, FaceInfo * > _elem_side_to_face_info
 Map from elem-side pair to FaceInfo. More...
 
bool _finite_volume_info_dirty = true
 
bool _linear_finite_volume_dofs_cached = false
 
std::map< unsigned int, std::vector< bool > > _periodic_dim
 A map of vectors indicating which dimensions are periodic in a regular orthogonal mesh for the specified variable numbers. More...
 
RealVectorValue _half_range
 A convenience vector used to hold values in each dimension representing half of the range. More...
 
std::vector< Node * > _extreme_nodes
 A vector containing the nodes at the corners of a regular orthogonal mesh. More...
 
std::map< std::pair< int, libMesh::ElemType >, std::vector< std::vector< QpMap > > > _elem_type_to_refinement_map
 Holds mappings for volume to volume and parent side to child side Map key: More...
 
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_refinement_map
 
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_refinement_side_map
 
std::map< libMesh::ElemType, std::map< std::pair< int, int >, std::vector< std::vector< QpMap > > > > _elem_type_to_child_side_refinement_map
 Holds mappings for "internal" child sides to parent volume. The second key is (child, child_side). More...
 
std::map< std::pair< int, libMesh::ElemType >, std::vector< std::pair< unsigned int, QpMap > > > _elem_type_to_coarsening_map
 Holds mappings for volume to volume and parent side to child side Map key: More...
 
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_coarsening_map
 
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_coarsening_side_map
 
std::unordered_map< SubdomainID, SubdomainData_sub_to_data
 Holds a map from subdomain ids to associated data. More...
 
std::unordered_map< SubdomainID, std::set< BoundaryID > > _neighbor_subdomain_boundary_ids
 Holds a map from neighbor subomdain ids to the boundary ids that are attached to it. More...
 
std::set< SubdomainID_lower_d_interior_blocks
 Mesh blocks for interior lower-d elements in different types. More...
 
std::set< SubdomainID_lower_d_boundary_blocks
 Mesh blocks for boundary lower-d elements in different types. More...
 
std::unordered_map< std::pair< const Elem *, unsigned short int >, const Elem * > _higher_d_elem_side_to_lower_d_elem
 Holds a map from a high-order element side to its corresponding lower-d element. More...
 
std::unordered_map< const Elem *, unsigned short int_lower_d_elem_to_higher_d_elem_side
 
bool _has_lower_d
 Whether there are any lower-dimensional blocks that are manifolds of higher-dimensional block faces. More...
 
bool _allow_recovery
 Whether or not this Mesh is allowed to read a recovery file. More...
 
bool _construct_node_list_from_side_list
 Whether or not to allow generation of nodesets from sidesets. More...
 
bool _displace_node_list_by_side_list
 Whether or not to displace unrelated nodesets by nodesets constructed from sidesets. More...
 
bool _need_delete
 Whether we need to delete remote elements after init'ing the EquationSystems. More...
 
bool _allow_remote_element_removal
 Whether to allow removal of remote elements. More...
 
std::set< Elem * > _ghost_elems_from_ghost_boundaries
 Set of elements ghosted by ghostGhostedBoundaries. More...
 
bool _need_ghost_ghosted_boundaries
 A parallel mesh generator such as DistributedRectilinearMeshGenerator already make everything ready. More...
 
std::vector< std::unordered_map< SubdomainID, std::set< dof_id_type > > > _block_id_mapping
 Unique element integer IDs for each subdomain and each extra element integers. More...
 
std::vector< dof_id_type_max_ids
 Maximum integer ID for each extra element integer. More...
 
std::vector< dof_id_type_min_ids
 Minimum integer ID for each extra element integer. More...
 
std::vector< std::vector< bool > > _id_identical_flag
 Flags to indicate whether or not any two extra element integers are the same. More...
 
unsigned int _max_sides_per_elem
 The maximum number of sides per element. More...
 
unsigned int _max_nodes_per_elem
 The maximum number of nodes per element. More...
 
unsigned int _max_nodes_per_side
 The maximum number of nodes per side. More...
 
bool _is_displaced
 Whether this mesh is displaced. More...
 
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
 Type of coordinate system per subdomain. More...
 
unsigned int _rz_coord_axis
 Storage for RZ axis selection. More...
 
std::unordered_map< SubdomainID, std::pair< Point, RealVectorValue > > _subdomain_id_to_rz_coord_axis
 Map of subdomain ID to general axisymmetric axis. More...
 
std::unique_ptr< MooseAppCoordTransform_coord_transform
 A coordinate transformation object that describes how to transform this problem's coordinate system into the canonical/reference coordinate system. More...
 
bool _coord_system_set
 Whether the coordinate system has been set. More...
 
std::vector< SubdomainName > _provided_coord_blocks
 Set for holding user-provided coordinate system type block names. More...
 
bool _doing_p_refinement
 Whether we have p-refinement (as opposed to h-refinement) More...
 
unsigned int _max_p_level
 Maximum p-refinement level of all elements. More...
 
unsigned int _max_h_level
 Maximum h-refinement level of all elements. More...
 

Detailed Description

MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and storing more state.

Definition at line 92 of file MooseMesh.h.

Member Typedef Documentation

◆ bnd_elem_iterator_imp

typedef std::vector<BndElement *>::iterator MooseMesh::bnd_elem_iterator_imp
protected

Definition at line 1568 of file MooseMesh.h.

◆ bnd_node_iterator_imp

typedef std::vector<BndNode *>::iterator MooseMesh::bnd_node_iterator_imp
protected

Definition at line 1561 of file MooseMesh.h.

◆ const_bnd_elem_iterator_imp

typedef std::vector<BndElement *>::const_iterator MooseMesh::const_bnd_elem_iterator_imp
protected

Definition at line 1569 of file MooseMesh.h.

◆ const_bnd_node_iterator_imp

typedef std::vector<BndNode *>::const_iterator MooseMesh::const_bnd_node_iterator_imp
protected

Definition at line 1562 of file MooseMesh.h.

◆ DataFileParameterType

using DataFileInterface::DataFileParameterType = DataFileName
inherited

The parameter type this interface expects for a data file name.

Definition at line 27 of file DataFileInterface.h.

◆ PeriodicNodeInfo

using MooseMesh::PeriodicNodeInfo = std::pair<const Node *, BoundaryID>

Helper type for building periodic node maps.

Definition at line 1077 of file MooseMesh.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected

Convenience enums.

Enumerator

Definition at line 1471 of file MooseMesh.h.

1472  {
1473  X = 0,
1474  Y,
1475  Z
1476  };

◆ anonymous enum

anonymous enum
protected
Enumerator
MIN 
MAX 

Definition at line 1477 of file MooseMesh.h.

1478  {
1479  MIN = 0,
1480  MAX
1481  };

◆ ParallelType

Enumerator
DEFAULT 
REPLICATED 
DISTRIBUTED 

Definition at line 108 of file MooseMesh.h.

109  {
110  DEFAULT,
111  REPLICATED,
112  DISTRIBUTED
113  };

Constructor & Destructor Documentation

◆ MooseMesh() [1/3]

MooseMesh::MooseMesh ( const InputParameters parameters)

Definition at line 232 of file MooseMesh.C.

234  Restartable(this, "Mesh"),
235  PerfGraphInterface(this),
236  _parallel_type(getParam<MooseEnum>("parallel_type").getEnum<MooseMesh::ParallelType>()),
237  _use_distributed_mesh(false),
240  _mesh(nullptr),
241  _partitioner_name(getParam<MooseEnum>("partitioner")),
245  _skip_refine_when_use_split(getParam<bool>("skip_refine_when_use_split")),
247  _is_nemesis(getParam<bool>("nemesis")),
250  _patch_size(getParam<unsigned int>("patch_size")),
251  _ghosting_patch_size(isParamValid("ghosting_patch_size")
252  ? getParam<unsigned int>("ghosting_patch_size")
253  : 5 * _patch_size),
254  _max_leaf_size(getParam<unsigned int>("max_leaf_size")),
256  getParam<MooseEnum>("patch_update_strategy").getEnum<Moose::PatchUpdateType>()),
258  _is_split(getParam<bool>("_is_split")),
259  _has_lower_d(false),
260  _allow_recovery(true),
261  _construct_node_list_from_side_list(getParam<bool>("construct_node_list_from_side_list")),
262  _displace_node_list_by_side_list(getParam<bool>("displace_node_list_by_side_list")),
263  _need_delete(false),
266  _is_displaced(false),
267  _coord_sys(
268  declareRestartableData<std::map<SubdomainID, Moose::CoordinateSystemType>>("coord_sys")),
269  _rz_coord_axis(getParam<MooseEnum>("rz_coord_axis")),
270  _coord_system_set(false),
271  _doing_p_refinement(false)
272 {
273  if (isParamValid("ghosting_patch_size") && (_patch_update_strategy != Moose::Iteration))
274  mooseError("Ghosting patch size parameter has to be set in the mesh block "
275  "only when 'iteration' patch update strategy is used.");
276 
278  paramError("displace_node_list_by_side_list",
279  "'Mesh/displace_node_list_by_side_list' is true, but unused when "
280  "'Mesh/construct_node_list_from_side_list' is false");
281 
282  if (isParamValid("coord_block"))
283  {
284  if (isParamValid("block"))
285  paramWarning("block",
286  "You set both 'Mesh/block' and 'Mesh/coord_block'. The value of "
287  "'Mesh/coord_block' will be used.");
288 
289  _provided_coord_blocks = getParam<std::vector<SubdomainName>>("coord_block");
290  }
291  else if (isParamValid("block"))
292  _provided_coord_blocks = getParam<std::vector<SubdomainName>>("block");
293 
294  if (getParam<bool>("build_all_side_lowerd_mesh"))
295  // Do not initially allow removal of remote elements
297 
299 
300 #ifdef MOOSE_KOKKOS_ENABLED
301  if (_app.isKokkosAvailable())
302  _kokkos_mesh = std::make_unique<Moose::Kokkos::Mesh>(*this);
303 #endif
304 }
ParallelType _parallel_type
Can be set to DISTRIBUTED, REPLICATED, or DEFAULT.
Definition: MooseMesh.h:1445
bool _node_to_elem_map_built
Definition: MooseMesh.h:1533
bool allowRemoteElementRemoval() const
Whether we are allow remote element removal.
Definition: MooseMesh.h:1097
bool _is_nemesis
True if a Nemesis Mesh was read in.
Definition: MooseMesh.h:1496
std::vector< SubdomainName > _provided_coord_blocks
Set for holding user-provided coordinate system type block names.
Definition: MooseMesh.h:1917
bool _need_ghost_ghosted_boundaries
A parallel mesh generator such as DistributedRectilinearMeshGenerator already make everything ready...
Definition: MooseMesh.h:1868
unsigned int _uniform_refine_level
The level of uniform refinement requested (set to zero if AMR is disabled)
Definition: MooseMesh.h:1484
unsigned int _max_leaf_size
Definition: MooseMesh.h:1595
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:439
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition: MooseBase.h:388
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
Definition: MooseMesh.h:1901
bool _custom_partitioner_requested
Definition: MooseMesh.h:1468
const InputParameters & parameters() const
Get the parameters of the object.
Definition: MooseBase.h:131
bool _doing_p_refinement
Whether we have p-refinement (as opposed to h-refinement)
Definition: MooseMesh.h:1920
void determineUseDistributedMesh()
Determine whether to use a distributed mesh.
Definition: MooseMesh.C:2878
MooseObject(const InputParameters &parameters)
Definition: MooseObject.C:45
bool _has_lower_d
Whether there are any lower-dimensional blocks that are manifolds of higher-dimensional block faces...
Definition: MooseMesh.h:1843
T & declareRestartableData(const std::string &data_name, Args &&... args)
Declare a piece of data as "restartable" and initialize it.
Definition: Restartable.h:276
MooseEnum _partitioner_name
The partitioner used on this mesh.
Definition: MooseMesh.h:1463
bool _node_to_active_semilocal_elem_map_built
Definition: MooseMesh.h:1537
bool _skip_refine_when_use_split
Whether or not to skip uniform refinements when using a pre-split mesh.
Definition: MooseMesh.h:1487
bool _allow_recovery
Whether or not this Mesh is allowed to read a recovery file.
Definition: MooseMesh.h:1846
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450
std::unique_ptr< Moose::Kokkos::Mesh > _kokkos_mesh
Pointer to Kokkos mesh object.
Definition: MooseMesh.h:1459
bool _allow_remote_element_removal
Whether to allow removal of remote elements.
Definition: MooseMesh.h:1859
bool _construct_node_list_from_side_list
Whether or not to allow generation of nodesets from sidesets.
Definition: MooseMesh.h:1849
bool isKokkosAvailable() const
Get whether Kokkos is available.
Definition: MooseApp.h:1101
const bool _is_split
Whether or not we are using a (pre-)split mesh (automatically DistributedMesh)
Definition: MooseMesh.h:1613
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357
bool _coord_system_set
Whether the coordinate system has been set.
Definition: MooseMesh.h:1914
bool _parallel_type_overridden
Definition: MooseMesh.h:1452
bool _displace_node_list_by_side_list
Whether or not to displace unrelated nodesets by nodesets constructed from sidesets.
Definition: MooseMesh.h:1853
Restartable(const MooseObject *moose_object, const std::string &system_name)
Class constructor.
Definition: Restartable.C:18
Moose::PatchUpdateType _patch_update_strategy
The patch update strategy.
Definition: MooseMesh.h:1598
bool _partitioner_overridden
Definition: MooseMesh.h:1464
bool _is_displaced
Whether this mesh is displaced.
Definition: MooseMesh.h:1892
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
bool _skip_deletion_repartition_after_refine
Whether or not skip remote deletion and repartition after uniform refinements.
Definition: MooseMesh.h:1490
bool _need_delete
Whether we need to delete remote elements after init&#39;ing the EquationSystems.
Definition: MooseMesh.h:1856
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
unsigned int _patch_size
The number of nodes to consider in the NearestNode neighborhood.
Definition: MooseMesh.h:1589
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:199
PerfGraphInterface(const MooseObject *moose_object)
For objects that are MooseObjects with a default prefix of type()
void paramWarning(const std::string &param, Args... args) const
unsigned int _rz_coord_axis
Storage for RZ axis selection.
Definition: MooseMesh.h:1904
bool _distribution_overridden
Definition: MooseMesh.h:1451
unsigned int _ghosting_patch_size
The number of nearest neighbors to consider for ghosting purposes when iteration patch update strateg...
Definition: MooseMesh.h:1592
bool _regular_orthogonal_mesh
Boolean indicating whether this mesh was detected to be regular and orthogonal.
Definition: MooseMesh.h:1604

◆ MooseMesh() [2/3]

MooseMesh::MooseMesh ( const MooseMesh other_mesh)

Definition at line 306 of file MooseMesh.C.

307  : MooseObject(other_mesh._pars),
308  Restartable(this, "Mesh"),
309  PerfGraphInterface(this, "CopiedMesh"),
311  _parallel_type(other_mesh._parallel_type),
315  _mesh(other_mesh.getMesh().clone()),
322  _is_nemesis(false),
325  _patch_size(other_mesh._patch_size),
327  _max_leaf_size(other_mesh._max_leaf_size),
330  _is_split(other_mesh._is_split),
333  _has_lower_d(other_mesh._has_lower_d),
334  _allow_recovery(other_mesh._allow_recovery),
337  _need_delete(other_mesh._need_delete),
340  _coord_sys(other_mesh._coord_sys),
341  _rz_coord_axis(other_mesh._rz_coord_axis),
346 {
347  // Note: this calls BoundaryInfo::operator= without changing the
348  // ownership semantics of either Mesh's BoundaryInfo object.
349  getMesh().get_boundary_info() = other_mesh.getMesh().get_boundary_info();
350 
351  const std::set<SubdomainID> & subdomains = other_mesh.meshSubdomains();
352  for (const auto & sbd_id : subdomains)
353  setSubdomainName(sbd_id, other_mesh.getMesh().subdomain_name(sbd_id));
354 
355  // Get references to BoundaryInfo objects to make the code below cleaner...
356  const BoundaryInfo & other_boundary_info = other_mesh.getMesh().get_boundary_info();
357  BoundaryInfo & boundary_info = getMesh().get_boundary_info();
358 
359  // Use the other BoundaryInfo object to build the list of side boundary ids
360  std::vector<BoundaryID> side_boundaries;
361  other_boundary_info.build_side_boundary_ids(side_boundaries);
362 
363  // Assign those boundary ids in our BoundaryInfo object
364  for (const auto & side_bnd_id : side_boundaries)
365  boundary_info.sideset_name(side_bnd_id) = other_boundary_info.get_sideset_name(side_bnd_id);
366 
367  // Do the same thing for node boundary ids
368  std::vector<BoundaryID> node_boundaries;
369  other_boundary_info.build_node_boundary_ids(node_boundaries);
370 
371  for (const auto & node_bnd_id : node_boundaries)
372  boundary_info.nodeset_name(node_bnd_id) = other_boundary_info.get_nodeset_name(node_bnd_id);
373 
374  _bounds.resize(other_mesh._bounds.size());
375  for (std::size_t i = 0; i < _bounds.size(); ++i)
376  {
377  _bounds[i].resize(other_mesh._bounds[i].size());
378  for (std::size_t j = 0; j < _bounds[i].size(); ++j)
379  _bounds[i][j] = other_mesh._bounds[i][j];
380  }
381 
383 
384 #ifdef MOOSE_KOKKOS_ENABLED
385  if (_app.isKokkosAvailable())
386  _kokkos_mesh = std::make_unique<Moose::Kokkos::Mesh>(*this);
387 #endif
388 }
ParallelType _parallel_type
Can be set to DISTRIBUTED, REPLICATED, or DEFAULT.
Definition: MooseMesh.h:1445
std::vector< std::vector< Real > > _bounds
The bounds in each dimension of the mesh for regular orthogonal meshes.
Definition: MooseMesh.h:1607
bool _node_to_elem_map_built
Definition: MooseMesh.h:1533
bool _is_nemesis
True if a Nemesis Mesh was read in.
Definition: MooseMesh.h:1496
std::vector< SubdomainName > _provided_coord_blocks
Set for holding user-provided coordinate system type block names.
Definition: MooseMesh.h:1917
bool _need_ghost_ghosted_boundaries
A parallel mesh generator such as DistributedRectilinearMeshGenerator already make everything ready...
Definition: MooseMesh.h:1868
unsigned int _uniform_refine_level
The level of uniform refinement requested (set to zero if AMR is disabled)
Definition: MooseMesh.h:1484
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
std::string & nodeset_name(boundary_id_type id)
unsigned int _max_leaf_size
Definition: MooseMesh.h:1595
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
Definition: MooseMesh.h:1901
bool _custom_partitioner_requested
Definition: MooseMesh.h:1468
bool _doing_p_refinement
Whether we have p-refinement (as opposed to h-refinement)
Definition: MooseMesh.h:1920
MooseObject(const InputParameters &parameters)
Definition: MooseObject.C:45
bool _has_lower_d
Whether there are any lower-dimensional blocks that are manifolds of higher-dimensional block faces...
Definition: MooseMesh.h:1843
MooseEnum _partitioner_name
The partitioner used on this mesh.
Definition: MooseMesh.h:1463
bool _node_to_active_semilocal_elem_map_built
Definition: MooseMesh.h:1537
void build_side_boundary_ids(std::vector< boundary_id_type > &b_ids) const
bool _skip_refine_when_use_split
Whether or not to skip uniform refinements when using a pre-split mesh.
Definition: MooseMesh.h:1487
std::set< SubdomainID > _lower_d_boundary_blocks
Mesh blocks for boundary lower-d elements in different types.
Definition: MooseMesh.h:1835
const BoundaryInfo & get_boundary_info() const
virtual std::unique_ptr< MeshBase > clone() const=0
bool _allow_recovery
Whether or not this Mesh is allowed to read a recovery file.
Definition: MooseMesh.h:1846
std::set< SubdomainID > _lower_d_interior_blocks
Mesh blocks for interior lower-d elements in different types.
Definition: MooseMesh.h:1833
void updateCoordTransform()
Update the coordinate transformation object based on our coordinate system data.
Definition: MooseMesh.C:4365
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450
bool _built_from_other_mesh
Whether or not this mesh was built from another mesh.
Definition: MooseMesh.h:1441
std::unique_ptr< Moose::Kokkos::Mesh > _kokkos_mesh
Pointer to Kokkos mesh object.
Definition: MooseMesh.h:1459
bool _allow_remote_element_removal
Whether to allow removal of remote elements.
Definition: MooseMesh.h:1859
void setSubdomainName(SubdomainID subdomain_id, const SubdomainName &name)
This method sets the name for subdomain_id to name.
Definition: MooseMesh.C:1799
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
bool _construct_node_list_from_side_list
Whether or not to allow generation of nodesets from sidesets.
Definition: MooseMesh.h:1849
bool isKokkosAvailable() const
Get whether Kokkos is available.
Definition: MooseApp.h:1101
std::string & subdomain_name(subdomain_id_type id)
const bool _is_split
Whether or not we are using a (pre-)split mesh (automatically DistributedMesh)
Definition: MooseMesh.h:1613
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357
unsigned int uniformRefineLevel() const
Returns the level of uniform refinement requested (zero if AMR is disabled).
Definition: MooseMesh.C:3296
bool _coord_system_set
Whether the coordinate system has been set.
Definition: MooseMesh.h:1914
bool _parallel_type_overridden
Definition: MooseMesh.h:1452
bool _displace_node_list_by_side_list
Whether or not to displace unrelated nodesets by nodesets constructed from sidesets.
Definition: MooseMesh.h:1853
Restartable(const MooseObject *moose_object, const std::string &system_name)
Class constructor.
Definition: Restartable.C:18
std::string & sideset_name(boundary_id_type id)
Moose::PatchUpdateType _patch_update_strategy
The patch update strategy.
Definition: MooseMesh.h:1598
bool _partitioner_overridden
Definition: MooseMesh.h:1464
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
bool _skip_deletion_repartition_after_refine
Whether or not skip remote deletion and repartition after uniform refinements.
Definition: MooseMesh.h:1490
bool _need_delete
Whether we need to delete remote elements after init&#39;ing the EquationSystems.
Definition: MooseMesh.h:1856
unsigned int _patch_size
The number of nodes to consider in the NearestNode neighborhood.
Definition: MooseMesh.h:1589
PerfGraphInterface(const MooseObject *moose_object)
For objects that are MooseObjects with a default prefix of type()
std::unordered_map< SubdomainID, std::pair< Point, RealVectorValue > > _subdomain_id_to_rz_coord_axis
Map of subdomain ID to general axisymmetric axis.
Definition: MooseMesh.h:1907
unsigned int _rz_coord_axis
Storage for RZ axis selection.
Definition: MooseMesh.h:1904
bool _distribution_overridden
Definition: MooseMesh.h:1451
unsigned int _ghosting_patch_size
The number of nearest neighbors to consider for ghosting purposes when iteration patch update strateg...
Definition: MooseMesh.h:1592
bool _regular_orthogonal_mesh
Boolean indicating whether this mesh was detected to be regular and orthogonal.
Definition: MooseMesh.h:1604
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition: MooseMesh.C:3251

◆ MooseMesh() [3/3]

MooseMesh::MooseMesh ( )
delete

◆ ~MooseMesh()

MooseMesh::~MooseMesh ( )
virtual

Definition at line 390 of file MooseMesh.C.

391 {
392  freeBndNodes();
393  freeBndElems();
395 }
void freeBndElems()
Definition: MooseMesh.C:417
void clearQuadratureNodes()
Clear out any existing quadrature nodes.
Definition: MooseMesh.C:1730
void freeBndNodes()
Definition: MooseMesh.C:398

Member Function Documentation

◆ activeLocalElementsBegin() [1/2]

MeshBase::element_iterator MooseMesh::activeLocalElementsBegin ( )

Calls active_local_nodes_begin/end() on the underlying libMesh mesh object.

Definition at line 3131 of file MooseMesh.C.

Referenced by FEProblemBase::checkDisplacementOrders(), and hasSecondOrderElements().

3132 {
3133  return getMesh().active_local_elements_begin();
3134 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ activeLocalElementsBegin() [2/2]

MeshBase::const_element_iterator MooseMesh::activeLocalElementsBegin ( ) const

Definition at line 3143 of file MooseMesh.C.

3144 {
3145  return getMesh().active_local_elements_begin();
3146 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ activeLocalElementsEnd() [1/2]

const MeshBase::element_iterator MooseMesh::activeLocalElementsEnd ( )

Definition at line 3137 of file MooseMesh.C.

Referenced by FEProblemBase::checkDisplacementOrders(), and hasSecondOrderElements().

3138 {
3139  return getMesh().active_local_elements_end();
3140 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ activeLocalElementsEnd() [2/2]

const MeshBase::const_element_iterator MooseMesh::activeLocalElementsEnd ( ) const

Definition at line 3149 of file MooseMesh.C.

3150 {
3151  return getMesh().active_local_elements_end();
3152 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ addGhostedBoundary()

void MooseMesh::addGhostedBoundary ( BoundaryID  boundary_id)

This will add the boundary ids to be ghosted to this processor.

Definition at line 3309 of file MooseMesh.C.

Referenced by FEProblemBase::addGhostedBoundary().

3310 {
3311  _ghosted_boundaries.insert(boundary_id);
3312 }
std::set< unsigned int > _ghosted_boundaries
Definition: MooseMesh.h:1585

◆ addPeriodicVariable()

void MooseMesh::addPeriodicVariable ( unsigned int  var_num,
BoundaryID  primary,
BoundaryID  secondary 
)

For "regular orthogonal" meshes, determine if variable var_num is periodic with respect to the primary and secondary BoundaryIDs, record this fact in the _periodic_dim data structure.

Definition at line 2267 of file MooseMesh.C.

Referenced by AddPeriodicBCAction::setPeriodicVars().

2268 {
2270  return;
2271 
2272  _periodic_dim[var_num].resize(dimension());
2273 
2274  _half_range = Point(dimensionWidth(0) / 2.0, dimensionWidth(1) / 2.0, dimensionWidth(2) / 2.0);
2275 
2276  bool component_found = false;
2277  for (unsigned int component = 0; component < dimension(); ++component)
2278  {
2279  const std::pair<BoundaryID, BoundaryID> * boundary_ids = getPairedBoundaryMapping(component);
2280 
2281  if (boundary_ids != nullptr &&
2282  ((boundary_ids->first == primary && boundary_ids->second == secondary) ||
2283  (boundary_ids->first == secondary && boundary_ids->second == primary)))
2284  {
2285  _periodic_dim[var_num][component] = true;
2286  component_found = true;
2287  }
2288  }
2289  if (!component_found)
2290  mooseWarning("Could not find a match between boundary '",
2291  getBoundaryName(primary),
2292  "' and '",
2293  getBoundaryName(secondary),
2294  "' to set periodic boundary conditions for variable (index:",
2295  var_num,
2296  ") in either the X, Y or Z direction. The periodic dimension of the mesh for this "
2297  "variable will not be stored.");
2298 }
const std::string & getBoundaryName(BoundaryID boundary_id) const
Return the name of the boundary given the id.
Definition: MooseMesh.C:1842
RealVectorValue _half_range
A convenience vector used to hold values in each dimension representing half of the range...
Definition: MooseMesh.h:1658
void mooseWarning(Args &&... args) const
virtual unsigned int dimension() const
Returns MeshBase::mesh_dimension(), (not MeshBase::spatial_dimension()!) of the underlying libMesh me...
Definition: MooseMesh.C:2980
const std::pair< BoundaryID, BoundaryID > * getPairedBoundaryMapping(unsigned int component)
This function attempts to return the paired boundary ids for the given component. ...
Definition: MooseMesh.C:2343
Real dimensionWidth(unsigned int component) const
Returns the width of the requested dimension.
Definition: MooseMesh.C:2243
std::map< unsigned int, std::vector< bool > > _periodic_dim
A map of vectors indicating which dimensions are periodic in a regular orthogonal mesh for the specif...
Definition: MooseMesh.h:1653
bool _regular_orthogonal_mesh
Boolean indicating whether this mesh was detected to be regular and orthogonal.
Definition: MooseMesh.h:1604

◆ addQuadratureNode()

Node * MooseMesh::addQuadratureNode ( const Elem elem,
const unsigned short int  side,
const unsigned int  qp,
BoundaryID  bid,
const Point point 
)

Adds a fictitious "QuadratureNode".

This doesn't actually add it to the libMesh mesh... we just keep track of these here in MooseMesh.

QuadratureNodes are fictitious "Nodes" that are located at quadrature points. This is useful for using the geometric search system to do searches based on quadrature point locations....

Parameters
elemThe element
sideThe side number on which we want to add a quadrature node
qpThe number of the quadrature point
bidThe boundary ID for the point to be added with
pointThe physical location of the point

Definition at line 1660 of file MooseMesh.C.

Referenced by GeometricSearchData::generateQuadratureNodes().

1665 {
1666  Node * qnode;
1667 
1668  if (_elem_to_side_to_qp_to_quadrature_nodes[elem->id()][side].find(qp) ==
1670  {
1671  // Create a new node id starting from the max node id and counting down. This will be the least
1672  // likely to collide with an existing node id.
1673  // Note that we are using numeric_limits<unsigned>::max even
1674  // though max_id is stored as a dof_id_type. I tried this with
1675  // numeric_limits<dof_id_type>::max and it broke several tests in
1676  // MOOSE. So, this is some kind of a magic number that we will
1677  // just continue to use...
1679  dof_id_type new_id = max_id - _quadrature_nodes.size();
1680 
1681  if (new_id <= getMesh().max_node_id())
1682  mooseError("Quadrature node id collides with existing node id!");
1683 
1684  qnode = new Node(point, new_id);
1685 
1686  // Keep track of this new node in two different ways for easy lookup
1687  _quadrature_nodes[new_id] = qnode;
1688  _elem_to_side_to_qp_to_quadrature_nodes[elem->id()][side][qp] = qnode;
1689 
1690  if (elem->active())
1691  {
1692  _node_to_elem_map[new_id].push_back(elem->id());
1693  _node_to_active_semilocal_elem_map[new_id].push_back(elem->id());
1694  }
1695  }
1696  else
1697  qnode = _elem_to_side_to_qp_to_quadrature_nodes[elem->id()][side][qp];
1698 
1699  BndNode * bnode = new BndNode(qnode, bid);
1700  _bnd_nodes.push_back(bnode);
1701  _bnd_node_ids[bid].insert(qnode->id());
1702 
1703  _extra_bnd_nodes.push_back(*bnode);
1704 
1705  // Do this so the range will be regenerated next time it is accessed
1706  _bnd_node_range.reset();
1707 
1708  return qnode;
1709 }
std::map< dof_id_type, Node * > _quadrature_nodes
Definition: MooseMesh.h:1574
std::map< dof_id_type, std::vector< dof_id_type > > _node_to_elem_map
A map of all of the current nodes to the elements that they are connected to.
Definition: MooseMesh.h:1532
std::map< boundary_id_type, std::set< dof_id_type > > _bnd_node_ids
Map of sets of node IDs in each boundary.
Definition: MooseMesh.h:1564
auto max(const L &left, const R &right)
dof_id_type id() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::vector< BndNode * > _bnd_nodes
array of boundary nodes
Definition: MooseMesh.h:1560
std::vector< BndNode > _extra_bnd_nodes
Definition: MooseMesh.h:1577
std::map< dof_id_type, std::map< unsigned int, std::map< dof_id_type, Node * > > > _elem_to_side_to_qp_to_quadrature_nodes
Definition: MooseMesh.h:1576
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
bool active() const
std::map< dof_id_type, std::vector< dof_id_type > > _node_to_active_semilocal_elem_map
A map of all of the current nodes to the active elements that they are connected to.
Definition: MooseMesh.h:1536
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > > _bnd_node_range
Definition: MooseMesh.h:1527
uint8_t dof_id_type

◆ addUniqueNode()

const Node * MooseMesh::addUniqueNode ( const Point p,
Real  tol = 1e-6 
)

Add a new node to the mesh.

If there is already a node located at the point passed then the node will not be added. In either case a reference to the node at that location will be returned

Looping through the mesh nodes each time we add a point is very slow. To speed things up we keep a local data structure

Definition at line 1626 of file MooseMesh.C.

1627 {
1632  if (getMesh().n_nodes() != _node_map.size())
1633  {
1634  _node_map.clear();
1635  _node_map.reserve(getMesh().n_nodes());
1636  for (const auto & node : getMesh().node_ptr_range())
1637  _node_map.push_back(node);
1638  }
1639 
1640  Node * node = nullptr;
1641  for (unsigned int i = 0; i < _node_map.size(); ++i)
1642  {
1643  if (p.relative_fuzzy_equals(*_node_map[i], tol))
1644  {
1645  node = _node_map[i];
1646  break;
1647  }
1648  }
1649  if (node == nullptr)
1650  {
1651  node = getMesh().add_node(new Node(p));
1652  _node_map.push_back(node);
1653  }
1654 
1655  mooseAssert(node != nullptr, "Node is NULL");
1656  return node;
1657 }
const dof_id_type n_nodes
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::vector< Node * > _node_map
Vector of all the Nodes in the mesh for determining when to add a new point.
Definition: MooseMesh.h:1601
virtual Node * add_node(Node *n)=0
virtual const Node & node(const dof_id_type i) const
Various accessors (pointers/references) for Node "i".
Definition: MooseMesh.C:847
bool relative_fuzzy_equals(const TypeVector< Real > &rhs, Real tol=TOLERANCE) const

◆ allFaceInfo()

const std::vector< FaceInfo > & MooseMesh::allFaceInfo ( ) const
inline

Accessor for all FaceInfo objects.

Definition at line 2222 of file MooseMesh.h.

2223 {
2224  return _all_face_info;
2225 }
std::vector< FaceInfo > _all_face_info
FaceInfo object storing information for face based loops.
Definition: MooseMesh.h:1631

◆ allowRecovery()

void MooseMesh::allowRecovery ( bool  allow)
inline

Set whether or not this mesh is allowed to read a recovery file.

Definition at line 1034 of file MooseMesh.h.

1034 { _allow_recovery = allow; }
bool _allow_recovery
Whether or not this Mesh is allowed to read a recovery file.
Definition: MooseMesh.h:1846

◆ allowRemoteElementRemoval() [1/2]

void MooseMesh::allowRemoteElementRemoval ( bool  allow_removal)

Set whether to allow remote element removal.

Definition at line 3995 of file MooseMesh.C.

3996 {
3997  _allow_remote_element_removal = allow_remote_element_removal;
3998  if (_mesh)
3999  _mesh->allow_remote_element_removal(allow_remote_element_removal);
4000 
4001  if (!allow_remote_element_removal)
4002  // If we're not allowing remote element removal now, then we will need deletion later after
4003  // late geoemetric ghosting functors have been added (late geometric ghosting functor addition
4004  // happens when algebraic ghosting functors are added)
4005  _need_delete = true;
4006 }
bool _allow_remote_element_removal
Whether to allow removal of remote elements.
Definition: MooseMesh.h:1859
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
bool _need_delete
Whether we need to delete remote elements after init&#39;ing the EquationSystems.
Definition: MooseMesh.h:1856

◆ allowRemoteElementRemoval() [2/2]

bool MooseMesh::allowRemoteElementRemoval ( ) const
inline

Whether we are allow remote element removal.

Definition at line 1097 of file MooseMesh.h.

Referenced by MooseMesh().

bool _allow_remote_element_removal
Whether to allow removal of remote elements.
Definition: MooseMesh.h:1859

◆ areElemIDsIdentical()

bool MooseMesh::areElemIDsIdentical ( const std::string &  id_name1,
const std::string &  id_name2 
) const
inline

Whether or not two extra element integers are identical.

Definition at line 2208 of file MooseMesh.h.

2209 {
2210  auto id1 = getElementIDIndex(id_name1);
2211  auto id2 = getElementIDIndex(id_name2);
2212  return _id_identical_flag[id1][id2];
2213 }
std::vector< std::vector< bool > > _id_identical_flag
Flags to indicate whether or not any two extra element integers are the same.
Definition: MooseMesh.h:1877
unsigned int getElementIDIndex(const std::string &id_name) const
Return the accessing integer for an extra element integer with its name.
Definition: MooseMesh.h:2200

◆ bndElemsBegin()

MooseMesh::bnd_elem_iterator MooseMesh::bndElemsBegin ( )
virtual

Return iterators to the beginning/end of the boundary elements list.

Definition at line 1611 of file MooseMesh.C.

Referenced by getBoundaryElementRange(), and MeshInfo::possiblyAddSidesetInfo().

1612 {
1614  return bnd_elem_iterator(_bnd_elems.begin(), _bnd_elems.end(), p);
1615 }
std::vector< BndElement * > _bnd_elems
array of boundary elems
Definition: MooseMesh.h:1567

◆ bndElemsEnd()

MooseMesh::bnd_elem_iterator MooseMesh::bndElemsEnd ( )
virtual

Definition at line 1619 of file MooseMesh.C.

Referenced by getBoundaryElementRange(), and MeshInfo::possiblyAddSidesetInfo().

1620 {
1622  return bnd_elem_iterator(_bnd_elems.end(), _bnd_elems.end(), p);
1623 }
std::vector< BndElement * > _bnd_elems
array of boundary elems
Definition: MooseMesh.h:1567

◆ bndNodesBegin()

MooseMesh::bnd_node_iterator MooseMesh::bndNodesBegin ( )
virtual

Return iterators to the beginning/end of the boundary nodes list.

Definition at line 1595 of file MooseMesh.C.

Referenced by getBoundaryNodeRange().

1596 {
1598  return bnd_node_iterator(_bnd_nodes.begin(), _bnd_nodes.end(), p);
1599 }
std::vector< BndNode * > _bnd_nodes
array of boundary nodes
Definition: MooseMesh.h:1560

◆ bndNodesEnd()

MooseMesh::bnd_node_iterator MooseMesh::bndNodesEnd ( )
virtual

Definition at line 1603 of file MooseMesh.C.

Referenced by getBoundaryNodeRange().

1604 {
1606  return bnd_node_iterator(_bnd_nodes.end(), _bnd_nodes.end(), p);
1607 }
std::vector< BndNode * > _bnd_nodes
array of boundary nodes
Definition: MooseMesh.h:1560

◆ boundaryLowerDBlocks()

const std::set<SubdomainID>& MooseMesh::boundaryLowerDBlocks ( ) const
inline
Returns
The set of lower-dimensional blocks for boundary sides

Definition at line 1425 of file MooseMesh.h.

Referenced by FEProblemBase::adaptMesh(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayLowerDIntegratedBC::ArrayLowerDIntegratedBC(), NonlinearSystemBase::checkKernelCoverage(), HFEMDirichletBC::HFEMDirichletBC(), FEProblemBase::initialAdaptMesh(), and LowerDIntegratedBC::LowerDIntegratedBC().

1425 { return _lower_d_boundary_blocks; }
std::set< SubdomainID > _lower_d_boundary_blocks
Mesh blocks for boundary lower-d elements in different types.
Definition: MooseMesh.h:1835

◆ buildActiveSideList()

std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > MooseMesh::buildActiveSideList ( ) const

Calls BoundaryInfo::build_active_side_list.

Returns
A container of active (element, side, id) tuples.

Definition at line 3095 of file MooseMesh.C.

Referenced by buildFiniteVolumeInfo().

3096 {
3098 }
void build_active_side_list(std::vector< dof_id_type > &element_id_list, std::vector< unsigned short int > &side_list, std::vector< boundary_id_type > &bc_id_list) const
const BoundaryInfo & get_boundary_info() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ buildBndElemList()

void MooseMesh::buildBndElemList ( )

Definition at line 1205 of file MooseMesh.C.

Referenced by update().

1206 {
1207  TIME_SECTION("buildBndElemList", 5, "Building Boundary Elements List");
1208 
1209  freeBndElems();
1210 
1211  auto bc_tuples = getMesh().get_boundary_info().build_active_side_list();
1212 
1213  int n = bc_tuples.size();
1214  _bnd_elems.clear();
1215  _bnd_elems.reserve(n);
1216  for (const auto & t : bc_tuples)
1217  {
1218  auto elem_id = std::get<0>(t);
1219  auto side_id = std::get<1>(t);
1220  auto bc_id = std::get<2>(t);
1221 
1222  _bnd_elems.push_back(new BndElement(getMesh().elem_ptr(elem_id), side_id, bc_id));
1223  _bnd_elem_ids[bc_id].insert(elem_id);
1224  }
1225 }
void freeBndElems()
Definition: MooseMesh.C:417
std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > _bnd_elem_ids
Map of set of elem IDs connected to each boundary.
Definition: MooseMesh.h:1572
const boundary_id_type side_id
void build_active_side_list(std::vector< dof_id_type > &element_id_list, std::vector< unsigned short int > &side_list, std::vector< boundary_id_type > &bc_id_list) const
const BoundaryInfo & get_boundary_info() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::vector< BndElement * > _bnd_elems
array of boundary elems
Definition: MooseMesh.h:1567

◆ buildCoarseningMap()

void MooseMesh::buildCoarseningMap ( const Elem elem,
libMesh::QBase qrule,
libMesh::QBase qrule_face,
int  input_side 
)
private

Build the coarsening map for a given element type.

This will tell you what quadrature points to copy from and to for stateful material properties on newly created elements from Adaptivity.

Parameters
elemThe element that represents the element type you need the coarsening map for.
qruleThe quadrature rule in use.
qrule_faceThe current face quadrature rule
input_sideThe side to map

TODO: When running with parallel mesh + stateful adaptivty we will need to make sure that each processor has a complete map. This may require parallel communication. This is likely to happen when running on a mixed element mesh.

Definition at line 2601 of file MooseMesh.C.

Referenced by buildHRefinementAndCoarseningMaps().

2602 {
2603  TIME_SECTION("buildCoarseningMap", 5, "Building Coarsening Map");
2604 
2605  std::pair<int, ElemType> the_pair(input_side, elem.type());
2606 
2607  if (_elem_type_to_coarsening_map.find(the_pair) != _elem_type_to_coarsening_map.end())
2608  mooseError("Already built a qp coarsening map!");
2609 
2610  std::vector<std::vector<QpMap>> refinement_map;
2611  std::vector<std::pair<unsigned int, QpMap>> & coarsen_map =
2612  _elem_type_to_coarsening_map[the_pair];
2613 
2614  // The -1 here is for a specific child. We don't do that for coarsening maps
2615  // Also note that we're always mapping the same side to the same side (which is guaranteed by
2616  // libMesh).
2618  &elem, qrule, qrule_face, refinement_map, coarsen_map, input_side, -1, input_side);
2619 
2626 }
std::map< std::pair< int, libMesh::ElemType >, std::vector< std::pair< unsigned int, QpMap > > > _elem_type_to_coarsening_map
Holds mappings for volume to volume and parent side to child side Map key:
Definition: MooseMesh.h:1806
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
void findAdaptivityQpMaps(const Elem *template_elem, libMesh::QBase &qrule, libMesh::QBase &qrule_face, std::vector< std::vector< QpMap >> &refinement_map, std::vector< std::pair< unsigned int, QpMap >> &coarsen_map, int parent_side, int child, int child_side)
Given an elem type, get maps that tell us what qp&#39;s are closest to each other between a parent and it...
Definition: MooseMesh.C:2671
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
virtual ElemType type() const=0

◆ buildElemIDInfo()

void MooseMesh::buildElemIDInfo ( )
private

Build extra data for faster access to the information of extra element integers.

Definition at line 1109 of file MooseMesh.C.

Referenced by update().

1110 {
1111  unsigned int n = getMesh().n_elem_integers() + 1;
1112 
1113  _block_id_mapping.clear();
1114  _max_ids.clear();
1115  _min_ids.clear();
1116  _id_identical_flag.clear();
1117 
1118  _block_id_mapping.resize(n);
1121  _id_identical_flag.resize(n, std::vector<bool>(n, true));
1122  for (const auto & elem : getMesh().active_local_element_ptr_range())
1123  for (unsigned int i = 0; i < n; ++i)
1124  {
1125  auto id = (i == n - 1 ? elem->subdomain_id() : elem->get_extra_integer(i));
1126  _block_id_mapping[i][elem->subdomain_id()].insert(id);
1127  if (id > _max_ids[i])
1128  _max_ids[i] = id;
1129  if (id < _min_ids[i])
1130  _min_ids[i] = id;
1131  for (unsigned int j = 0; j < n; ++j)
1132  {
1133  auto idj = (j == n - 1 ? elem->subdomain_id() : elem->get_extra_integer(j));
1134  if (i != j && _id_identical_flag[i][j] && id != idj)
1135  _id_identical_flag[i][j] = false;
1136  }
1137  }
1138 
1139  for (unsigned int i = 0; i < n; ++i)
1140  {
1141  for (auto & blk : meshSubdomains())
1142  comm().set_union(_block_id_mapping[i][blk]);
1143  comm().min(_id_identical_flag[i]);
1144  }
1145  comm().max(_max_ids);
1146  comm().min(_min_ids);
1147 }
std::vector< dof_id_type > _min_ids
Minimum integer ID for each extra element integer.
Definition: MooseMesh.h:1875
unsigned int n_elem_integers() const
std::vector< std::vector< bool > > _id_identical_flag
Flags to indicate whether or not any two extra element integers are the same.
Definition: MooseMesh.h:1877
const Parallel::Communicator & comm() const
auto max(const L &left, const R &right)
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
void min(const T &r, T &o, Request &req) const
std::vector< dof_id_type > _max_ids
Maximum integer ID for each extra element integer.
Definition: MooseMesh.h:1873
subdomain_id_type subdomain_id() const
void max(const T &r, T &o, Request &req) const
std::vector< std::unordered_map< SubdomainID, std::set< dof_id_type > > > _block_id_mapping
Unique element integer IDs for each subdomain and each extra element integers.
Definition: MooseMesh.h:1871
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
auto min(const L &left, const R &right)
dof_id_type get_extra_integer(const unsigned int index) const
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition: MooseMesh.C:3251
void set_union(T &data, const unsigned int root_id) const

◆ buildFiniteVolumeInfo()

void MooseMesh::buildFiniteVolumeInfo ( ) const

Builds the face and elem info vectors that store meta-data needed for looping over and doing calculations based on mesh faces and elements in a finite volume setting.

This should only be called when finite volume variables are used in the problem or when the face and elem info objects are necessary for functor-based evaluations.

Definition at line 3819 of file MooseMesh.C.

Referenced by setupFiniteVolumeMeshData().

3820 {
3821  mooseAssert(!Threads::in_threads,
3822  "This routine has not been implemented for threads. Please query this routine before "
3823  "a threaded region or contact a MOOSE developer to discuss.");
3824  _finite_volume_info_dirty = false;
3825 
3826  using Keytype = std::pair<const Elem *, unsigned short int>;
3827 
3828  // create a map from elem/side --> boundary ids
3829  std::vector<std::tuple<dof_id_type, unsigned short int, boundary_id_type>> side_list =
3831  std::map<Keytype, std::set<boundary_id_type>> side_map;
3832  for (auto & [elem_id, side, bc_id] : side_list)
3833  {
3834  const Elem * elem = _mesh->elem_ptr(elem_id);
3835  Keytype key(elem, side);
3836  auto & bc_set = side_map[key];
3837  bc_set.insert(bc_id);
3838  }
3839 
3840  _face_info.clear();
3841  _all_face_info.clear();
3842  _elem_side_to_face_info.clear();
3843 
3844  _elem_to_elem_info.clear();
3845  _elem_info.clear();
3846 
3847  // by performing the element ID comparison check in the below loop, we are ensuring that we never
3848  // double count face contributions. If a face lies along a process boundary, the only process that
3849  // will contribute to both sides of the face residuals/Jacobians will be the process that owns the
3850  // element with the lower ID.
3851  auto begin = getMesh().active_elements_begin();
3852  auto end = getMesh().active_elements_end();
3853 
3854  // We prepare a map connecting the Elem* and the corresponding ElemInfo
3855  // for the active elements.
3856  for (const Elem * elem : as_range(begin, end))
3857  _elem_to_elem_info.emplace(elem->id(), elem);
3858 
3859  dof_id_type face_index = 0;
3860  for (const Elem * elem : as_range(begin, end))
3861  {
3862  for (unsigned int side = 0; side < elem->n_sides(); ++side)
3863  {
3864  // get the neighbor element
3865  const Elem * neighbor = elem->neighbor_ptr(side);
3866 
3867  // Check if the FaceInfo shall belong to the element. If yes,
3868  // create and initialize the FaceInfo. We need this to ensure that
3869  // we do not duplicate FaceInfo-s.
3870  if (Moose::FV::elemHasFaceInfo(*elem, neighbor))
3871  {
3872  mooseAssert(!neighbor || (neighbor->level() < elem->level() ? neighbor->active() : true),
3873  "If the neighbor is coarser than the element, we expect that the neighbor must "
3874  "be active.");
3875 
3876  // We construct the faceInfo using the elementinfo and side index
3877  _all_face_info.emplace_back(&_elem_to_elem_info[elem->id()], side, face_index++);
3878 
3879  auto & fi = _all_face_info.back();
3880 
3881  // get all the sidesets that this face is contained in and cache them
3882  // in the face info.
3883  std::set<boundary_id_type> & boundary_ids = fi.boundaryIDs();
3884  boundary_ids.clear();
3885 
3886  // We initialize the weights/other information in faceInfo. If the neighbor does not exist
3887  // or is remote (so when we are on some sort of mesh boundary), we initialize the ghost
3888  // cell and use it to compute the weights corresponding to the faceInfo.
3889  if (!neighbor || neighbor == libMesh::remote_elem)
3890  fi.computeBoundaryCoefficients();
3891  else
3892  fi.computeInternalCoefficients(&_elem_to_elem_info[neighbor->id()]);
3893 
3894  auto lit = side_map.find(Keytype(&fi.elem(), fi.elemSideID()));
3895  if (lit != side_map.end())
3896  boundary_ids.insert(lit->second.begin(), lit->second.end());
3897 
3898  if (fi.neighborPtr())
3899  {
3900  auto rit = side_map.find(Keytype(fi.neighborPtr(), fi.neighborSideID()));
3901  if (rit != side_map.end())
3902  boundary_ids.insert(rit->second.begin(), rit->second.end());
3903  }
3904  }
3905  }
3906  }
3907 
3908  // Build the local face info and elem_side to face info maps. We need to do this after
3909  // _all_face_info is finished being constructed because emplace_back invalidates all iterators and
3910  // references if ever the new size exceeds capacity
3911  for (auto & fi : _all_face_info)
3912  {
3913  const Elem * const elem = &fi.elem();
3914  const auto side = fi.elemSideID();
3915 
3916 #ifndef NDEBUG
3917  auto pair_it =
3918 #endif
3919  _elem_side_to_face_info.emplace(std::make_pair(elem, side), &fi);
3920  mooseAssert(pair_it.second, "We should be adding unique FaceInfo objects.");
3921 
3922  // We will add the faces on processor boundaries to the list of face infos on each
3923  // associated processor.
3924  if (fi.elem().processor_id() == this->processor_id() ||
3925  (fi.neighborPtr() && (fi.neighborPtr()->processor_id() == this->processor_id())))
3926  _face_info.push_back(&fi);
3927  }
3928 
3929  for (auto & ei : _elem_to_elem_info)
3930  if (ei.second.elem()->processor_id() == this->processor_id())
3931  _elem_info.push_back(&ei.second);
3932 }
std::vector< FaceInfo > _all_face_info
FaceInfo object storing information for face based loops.
Definition: MooseMesh.h:1631
std::vector< const FaceInfo * > _face_info
Holds only those FaceInfo objects that have processor_id equal to this process&#39;s id, e.g.
Definition: MooseMesh.h:1635
bool elemHasFaceInfo(const Elem &elem, const Elem *const neighbor)
This function infers based on elements if the faceinfo between them belongs to the element or not...
Definition: FVUtils.C:21
bool _finite_volume_info_dirty
Definition: MooseMesh.h:1642
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > buildActiveSideList() const
Calls BoundaryInfo::build_active_side_list.
Definition: MooseMesh.C:3095
std::vector< const ElemInfo * > _elem_info
Holds only those ElemInfo objects that have processor_id equal to this process&#39;s id, e.g.
Definition: MooseMesh.h:1627
std::unordered_map< std::pair< const Elem *, unsigned int >, FaceInfo * > _elem_side_to_face_info
Map from elem-side pair to FaceInfo.
Definition: MooseMesh.h:1639
dof_id_type id() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
std::unordered_map< dof_id_type, ElemInfo > _elem_to_elem_info
Map connecting elems with their corresponding ElemInfo, we use the element ID as the key...
Definition: MooseMesh.h:1623
virtual unsigned int n_sides() const=0
const Elem * neighbor_ptr(unsigned int i) const
unsigned int level() const
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
processor_id_type processor_id() const
bool active() const
uint8_t dof_id_type
const RemoteElem * remote_elem

◆ buildHRefinementAndCoarseningMaps()

void MooseMesh::buildHRefinementAndCoarseningMaps ( Assembly assembly)
private

Definition at line 2361 of file MooseMesh.C.

Referenced by buildRefinementAndCoarseningMaps().

2362 {
2363  std::map<ElemType, Elem *> canonical_elems;
2364 
2365  // First, loop over all elements and find a canonical element for each type
2366  // Doing it this way guarantees that this is going to work in parallel
2367  for (const auto & elem : getMesh().element_ptr_range()) // TODO: Thread this
2368  {
2369  ElemType type = elem->type();
2370 
2371  if (canonical_elems.find(type) ==
2372  canonical_elems.end()) // If we haven't seen this type of elem before save it
2373  canonical_elems[type] = elem;
2374  else
2375  {
2376  Elem * stored = canonical_elems[type];
2377  if (elem->id() < stored->id()) // Arbitrarily keep the one with a lower id
2378  canonical_elems[type] = elem;
2379  }
2380  }
2381  // Now build the maps using these templates
2382  // Note: This MUST be done NOT threaded!
2383  for (const auto & can_it : canonical_elems)
2384  {
2385  Elem * elem = can_it.second;
2386 
2387  // Need to do this just once to get the right qrules put in place
2388  assembly->setCurrentSubdomainID(elem->subdomain_id());
2389  assembly->reinit(elem);
2390  assembly->reinit(elem, 0);
2391  auto && qrule = assembly->writeableQRule();
2392  auto && qrule_face = assembly->writeableQRuleFace();
2393 
2394  // Volume to volume projection for refinement
2395  buildRefinementMap(*elem, *qrule, *qrule_face, -1, -1, -1);
2396 
2397  // Volume to volume projection for coarsening
2398  buildCoarseningMap(*elem, *qrule, *qrule_face, -1);
2399 
2400  // Map the sides of children
2401  for (unsigned int side = 0; side < elem->n_sides(); side++)
2402  {
2403  // Side to side for sides that match parent's sides
2404  buildRefinementMap(*elem, *qrule, *qrule_face, side, -1, side);
2405  buildCoarseningMap(*elem, *qrule, *qrule_face, side);
2406  }
2407 
2408  // Child side to parent volume mapping for "internal" child sides
2409  for (unsigned int child = 0; child < elem->n_children(); ++child)
2410  for (unsigned int side = 0; side < elem->n_sides();
2411  ++side) // Assume children have the same number of sides!
2412  if (!elem->is_child_on_side(child, side)) // Otherwise we already computed that map
2413  buildRefinementMap(*elem, *qrule, *qrule_face, -1, child, side);
2414  }
2415 }
ElemType
libMesh::QBase *const & writeableQRule()
Returns the reference to the current quadrature being used.
Definition: Assembly.h:241
virtual bool is_child_on_side(const unsigned int c, const unsigned int s) const=0
virtual unsigned int n_children() const=0
void reinit(const Elem *elem)
Reinitialize objects (JxW, q_points, ...) for an elements.
dof_id_type id() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:93
void buildRefinementMap(const Elem &elem, libMesh::QBase &qrule, libMesh::QBase &qrule_face, int parent_side, int child, int child_side)
Build the refinement map for a given element type.
Definition: MooseMesh.C:2522
void buildCoarseningMap(const Elem &elem, libMesh::QBase &qrule, libMesh::QBase &qrule_face, int input_side)
Build the coarsening map for a given element type.
Definition: MooseMesh.C:2601
virtual unsigned int n_sides() const=0
void setCurrentSubdomainID(SubdomainID i)
set the current subdomain ID
Definition: Assembly.h:424
subdomain_id_type subdomain_id() const
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
virtual ElemType type() const=0
libMesh::QBase *const & writeableQRuleFace()
Returns the reference to the current quadrature being used on a current face.
Definition: Assembly.h:328

◆ buildLowerDMesh()

void MooseMesh::buildLowerDMesh ( )
private

Build lower-d mesh for all sides.

Definition at line 685 of file MooseMesh.C.

Referenced by init().

686 {
687  auto & mesh = getMesh();
688 
689  if (!mesh.is_serial())
690  mooseError(
691  "Hybrid finite element method must use replicated mesh.\nCurrently lower-dimensional mesh "
692  "does not support mesh re-partitioning and a debug assertion being hit related with "
693  "neighbors of lower-dimensional element, with distributed mesh.");
694 
695  // Lower-D element build requires neighboring element information
696  if (!mesh.is_prepared())
698 
699  // maximum number of sides of all elements
700  unsigned int max_n_sides = 0;
701 
702  // remove existing lower-d element first
703  std::set<Elem *> deleteable_elems;
704  for (auto & elem : mesh.element_ptr_range())
707  deleteable_elems.insert(elem);
708  else if (elem->n_sides() > max_n_sides)
709  max_n_sides = elem->n_sides();
710 
711  for (auto & elem : deleteable_elems)
713  for (const auto & id : _lower_d_interior_blocks)
714  _mesh_subdomains.erase(id);
715  for (const auto & id : _lower_d_boundary_blocks)
716  _mesh_subdomains.erase(id);
717  _lower_d_interior_blocks.clear();
718  _lower_d_boundary_blocks.clear();
719 
720  mesh.comm().max(max_n_sides);
721 
722  deleteable_elems.clear();
723 
724  // get all side types
725  std::set<int> interior_side_types;
726  std::set<int> boundary_side_types;
727  for (const auto & elem : mesh.active_element_ptr_range())
728  for (const auto side : elem->side_index_range())
729  {
730  Elem * neig = elem->neighbor_ptr(side);
731  std::unique_ptr<Elem> side_elem(elem->build_side_ptr(side));
732  if (neig)
733  interior_side_types.insert(side_elem->type());
734  else
735  boundary_side_types.insert(side_elem->type());
736  }
737  mesh.comm().set_union(interior_side_types);
738  mesh.comm().set_union(boundary_side_types);
739 
740  // assign block ids for different side types
741  std::map<ElemType, SubdomainID> interior_block_ids;
742  std::map<ElemType, SubdomainID> boundary_block_ids;
743  // we assume this id is not used by the mesh
745  for (const auto & tpid : interior_side_types)
746  {
747  const auto type = ElemType(tpid);
748  mesh.subdomain_name(id) = "INTERNAL_SIDE_LOWERD_SUBDOMAIN_" + Utility::enum_to_string(type);
749  interior_block_ids[type] = id;
750  _lower_d_interior_blocks.insert(id);
751  if (_mesh_subdomains.count(id) > 0)
752  mooseError("Trying to add a mesh block with id ", id, " that has existed in the mesh");
753  _mesh_subdomains.insert(id);
754  --id;
755  }
756  for (const auto & tpid : boundary_side_types)
757  {
758  const auto type = ElemType(tpid);
759  mesh.subdomain_name(id) = "BOUNDARY_SIDE_LOWERD_SUBDOMAIN_" + Utility::enum_to_string(type);
760  boundary_block_ids[type] = id;
761  _lower_d_boundary_blocks.insert(id);
762  if (_mesh_subdomains.count(id) > 0)
763  mooseError("Trying to add a mesh block with id ", id, " that has existed in the mesh");
764  _mesh_subdomains.insert(id);
765  --id;
766  }
767 
768  dof_id_type max_elem_id = mesh.max_elem_id();
769  unique_id_type max_unique_id = mesh.parallel_max_unique_id();
770 
771  std::vector<Elem *> side_elems;
773  for (const auto & elem : mesh.active_element_ptr_range())
774  {
775  // skip existing lower-d elements
776  if (elem->interior_parent())
777  continue;
778 
779  for (const auto side : elem->side_index_range())
780  {
781  Elem * neig = elem->neighbor_ptr(side);
782 
783  bool build_side = false;
784  if (!neig)
785  build_side = true;
786  else
787  {
788  mooseAssert(!neig->is_remote(), "We error if the mesh is not serial");
789  if (!neig->active())
790  build_side = true;
791  else if (neig->level() == elem->level() && elem->id() < neig->id())
792  build_side = true;
793  }
794 
795  if (build_side)
796  {
797  std::unique_ptr<Elem> side_elem(elem->build_side_ptr(side));
798 
799  // The side will be added with the same processor id as the parent.
800  side_elem->processor_id() = elem->processor_id();
801 
802  // Add subdomain ID
803  if (neig)
804  side_elem->subdomain_id() = interior_block_ids.at(side_elem->type());
805  else
806  side_elem->subdomain_id() = boundary_block_ids.at(side_elem->type());
807 
808  // set ids consistently across processors (these ids will be temporary)
809  side_elem->set_id(max_elem_id + elem->id() * max_n_sides + side);
810  side_elem->set_unique_id(max_unique_id + elem->id() * max_n_sides + side);
811 
812  // Also assign the side's interior parent, so it is always
813  // easy to figure out the Elem we came from.
814  // Note: the interior parent could be a ghost element.
815  side_elem->set_interior_parent(elem);
816 
817  side_elems.push_back(side_elem.release());
818 
819  // add link between higher d element to lower d element
820  auto pair = std::make_pair(elem, side);
821  auto link = std::make_pair(pair, side_elems.back());
822  auto ilink = std::make_pair(side_elems.back(), side);
825  }
826  }
827  }
828 
829  // finally, add the lower-dimensional element to the mesh
830  // Note: lower-d interior element will exist on a processor if its associated interior
831  // parent exists on a processor whether or not being a ghost. Lower-d elements will
832  // get its interior parent's processor id.
833  for (auto & elem : side_elems)
834  mesh.add_elem(elem);
835 
836  // we do all the stuff in prepare_for_use such as renumber_nodes_and_elements(),
837  // update_parallel_id_counts(), cache_elem_dims(), etc. except partitioning here.
838  const bool skip_partitioning_old = mesh.skip_partitioning();
839  mesh.skip_partitioning(true);
840  // Finding neighbors is ambiguous for lower-dimensional elements on interior faces
841  mesh.allow_find_neighbors(false);
843  mesh.skip_partitioning(skip_partitioning_old);
844 }
ElemType
bool is_prepared() const
virtual unique_id_type parallel_max_unique_id() const=0
const Elem * interior_parent() const
IntRange< unsigned short > side_index_range() const
void skip_partitioning(bool skip)
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i)=0
std::unordered_map< const Elem *, unsigned short int > _lower_d_elem_to_higher_d_elem_side
Definition: MooseMesh.h:1839
void prepare_for_use(const bool skip_renumber_nodes_and_elements, const bool skip_find_neighbors)
MeshBase & mesh
std::unordered_map< std::pair< const Elem *, unsigned short int >, const Elem * > _higher_d_elem_side_to_lower_d_elem
Holds a map from a high-order element side to its corresponding lower-d element.
Definition: MooseMesh.h:1838
const Parallel::Communicator & comm() const
std::set< SubdomainID > _lower_d_boundary_blocks
Mesh blocks for boundary lower-d elements in different types.
Definition: MooseMesh.h:1835
std::set< SubdomainID > _lower_d_interior_blocks
Mesh blocks for interior lower-d elements in different types.
Definition: MooseMesh.h:1833
virtual bool is_serial() const
virtual void find_neighbors(const bool reset_remote_elements=false, const bool reset_current_list=true)=0
virtual void delete_elem(Elem *e)=0
dof_id_type id() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual Elem * add_elem(Elem *e)=0
virtual dof_id_type max_elem_id() const=0
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:93
virtual bool is_remote() const
std::string & subdomain_name(subdomain_id_type id)
void allow_find_neighbors(bool allow)
std::string enum_to_string(const T e)
virtual unsigned int n_sides() const=0
const Elem * neighbor_ptr(unsigned int i) const
unsigned int level() const
subdomain_id_type subdomain_id() const
void max(const T &r, T &o, Request &req) const
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
std::set< SubdomainID > _mesh_subdomains
A set of subdomain IDs currently present in the mesh.
Definition: MooseMesh.h:1543
static constexpr subdomain_id_type invalid_subdomain_id
bool active() const
processor_id_type processor_id() const
uint8_t unique_id_type
uint8_t dof_id_type
void set_union(T &data, const unsigned int root_id) const

◆ buildMesh()

virtual void MooseMesh::buildMesh ( )
pure virtual

Must be overridden by child classes.

This is where the Mesh object is actually created and filled in.

Implemented in MFEMMesh, PatternedMesh, StitchedMesh, MeshGeneratorMesh, AnnularMesh, ConcentricCircleMesh, GeneratedMesh, RinglebMesh, SpiralAnnularMesh, ImageMesh, FileMesh, and TiledMesh.

Referenced by init().

◆ buildMeshBaseObject()

std::unique_ptr< MeshBase > MooseMesh::buildMeshBaseObject ( unsigned int  dim = libMesh::invalid_uint)

Method to construct a libMesh::MeshBase object that is normally set and used by the MooseMesh object during the "init()" phase.

If the parameter dim is not provided, then its value will be taken from the input file mesh block.

Definition at line 2906 of file MooseMesh.C.

Referenced by MeshGenerator::buildMeshBaseObject(), and init().

2907 {
2908  std::unique_ptr<MeshBase> mesh;
2910  mesh = buildTypedMesh<DistributedMesh>(dim);
2911  else
2912  mesh = buildTypedMesh<ReplicatedMesh>(dim);
2913 
2914  return mesh;
2915 }
MeshBase & mesh
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:162
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450

◆ buildNodeList()

void MooseMesh::buildNodeList ( )

Calls BoundaryInfo::build_node_list()/build_side_list() and makes separate copies of Nodes/Elems in those lists.

Allocates memory which is cleaned up in the freeBndNodes()/freeBndElems() functions.

Definition at line 1052 of file MooseMesh.C.

Referenced by update().

1053 {
1054  TIME_SECTION("buildNodeList", 5, "Building Node List");
1055 
1056  freeBndNodes();
1057 
1058  auto bc_tuples = getMesh().get_boundary_info().build_node_list();
1059 
1060  int n = bc_tuples.size();
1061  _bnd_nodes.clear();
1062  _bnd_nodes.reserve(n);
1063  for (const auto & t : bc_tuples)
1064  {
1065  auto node_id = std::get<0>(t);
1066  auto bc_id = std::get<1>(t);
1067 
1068  _bnd_nodes.push_back(new BndNode(getMesh().node_ptr(node_id), bc_id));
1069  _node_set_nodes[bc_id].push_back(node_id);
1070  _bnd_node_ids[bc_id].insert(node_id);
1071  }
1072 
1073  _bnd_nodes.reserve(_bnd_nodes.size() + _extra_bnd_nodes.size());
1074  for (unsigned int i = 0; i < _extra_bnd_nodes.size(); i++)
1075  {
1076  BndNode * bnode = new BndNode(_extra_bnd_nodes[i]._node, _extra_bnd_nodes[i]._bnd_id);
1077  _bnd_nodes.push_back(bnode);
1078  _bnd_node_ids[std::get<1>(bc_tuples[i])].insert(_extra_bnd_nodes[i]._node->id());
1079  }
1080 
1081  // This sort is here so that boundary conditions are always applied in the same order
1082  std::sort(_bnd_nodes.begin(), _bnd_nodes.end(), BndNodeCompare());
1083 }
Helper class for sorting Boundary Nodes so that we always get the same order of application for bound...
Definition: MooseMesh.C:1028
std::map< boundary_id_type, std::set< dof_id_type > > _bnd_node_ids
Map of sets of node IDs in each boundary.
Definition: MooseMesh.h:1564
std::map< boundary_id_type, std::vector< dof_id_type > > _node_set_nodes
list of nodes that belongs to a specified nodeset: indexing [nodeset_id] -> [array of node ids] ...
Definition: MooseMesh.h:1583
const BoundaryInfo & get_boundary_info() const
void build_node_list(std::vector< dof_id_type > &node_id_list, std::vector< boundary_id_type > &bc_id_list) const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::vector< BndNode * > _bnd_nodes
array of boundary nodes
Definition: MooseMesh.h:1560
std::vector< BndNode > _extra_bnd_nodes
Definition: MooseMesh.h:1577
void freeBndNodes()
Definition: MooseMesh.C:398

◆ buildNodeListFromSideList()

void MooseMesh::buildNodeListFromSideList ( )

Calls BoundaryInfo::build_node_list_from_side_list().

Definition at line 3035 of file MooseMesh.C.

Referenced by prepare(), and update().

3036 {
3037  auto & boundary_info = getMesh().get_boundary_info();
3038 
3040  {
3041  const std::set<boundary_id_type> & side_bcids = boundary_info.get_side_boundary_ids();
3042 
3044  {
3045  // Don't want to use auto here - the rbegin trick relies on a
3046  // sorted set and we want the compiler to scream if libMesh ever
3047  // switches type
3048  const std::set<boundary_id_type> & node_bcids = boundary_info.get_node_boundary_ids();
3049 
3050  // If we've got a reasonable largest BC id, we can just use the
3051  // subsequent unused ones
3052  boundary_id_type next_bcid = 0;
3053  if (!node_bcids.empty())
3054  next_bcid = std::max(next_bcid, cast_int<boundary_id_type>(*node_bcids.rbegin() + 1));
3055  if (!side_bcids.empty())
3056  next_bcid = std::max(next_bcid, cast_int<boundary_id_type>(*side_bcids.rbegin() + 1));
3057 
3058  // If we've got an unreasonable largest BC id, we should
3059  // probably just search for unused ones with moderate values, so we
3060  // don't risk wrapping.
3061  if (next_bcid > 1000 || next_bcid <= 0)
3062  next_bcid = 1000;
3063 
3064  // If any side bcid is already a node bcid with a different name,
3065  // that's a different boundary condition that we need to reassign
3066  // rather than overwrite or merge to.
3067  for (auto bcid : side_bcids)
3068  if (node_bcids.count(bcid) &&
3069  (boundary_info.get_sideset_name(bcid) != boundary_info.get_nodeset_name(bcid)))
3070  {
3071  boundary_info.renumber_node_id(bcid, next_bcid);
3072  do
3073  {
3074  ++next_bcid;
3075  } while (node_bcids.count(next_bcid) || side_bcids.count(next_bcid));
3076  }
3077  }
3078 
3079  // If any side bcid isn't already a node bcid, we should make
3080  // sure that our new node bcid is given the same name.
3081  for (auto bcid : side_bcids)
3082  boundary_info.nodeset_name(bcid) = boundary_info.get_sideset_name(bcid);
3083 
3084  boundary_info.build_node_list_from_side_list();
3085  }
3086 }
const std::set< boundary_id_type > & get_side_boundary_ids() const
const BoundaryInfo & get_boundary_info() const
auto max(const L &left, const R &right)
int8_t boundary_id_type
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
bool _construct_node_list_from_side_list
Whether or not to allow generation of nodesets from sidesets.
Definition: MooseMesh.h:1849
bool _displace_node_list_by_side_list
Whether or not to displace unrelated nodesets by nodesets constructed from sidesets.
Definition: MooseMesh.h:1853

◆ buildPeriodicNodeMap()

void MooseMesh::buildPeriodicNodeMap ( std::multimap< dof_id_type, dof_id_type > &  periodic_node_map,
unsigned int  var_number,
libMesh::PeriodicBoundaries pbs 
) const

This routine builds a multimap of boundary ids to matching boundary ids across all periodic boundaries in the system.

Definition at line 1863 of file MooseMesh.C.

1866 {
1867  TIME_SECTION("buildPeriodicNodeMap", 5);
1868 
1869  // clear existing map
1870  periodic_node_map.clear();
1871 
1872  // get periodic nodes
1873  std::vector<PeriodicNodeInfo> periodic_nodes;
1874  for (const auto & t : getMesh().get_boundary_info().build_node_list())
1875  {
1876  // unfortunately libMesh does not give us a pointer, so we have to look it up ourselves
1877  auto node = _mesh->node_ptr(std::get<0>(t));
1878  mooseAssert(node != nullptr,
1879  "libMesh::BoundaryInfo::build_node_list() returned an ID for a non-existing node");
1880  auto bc_id = std::get<1>(t);
1881  periodic_nodes.emplace_back(node, bc_id);
1882  }
1883 
1884  // sort by boundary id
1885  std::sort(periodic_nodes.begin(),
1886  periodic_nodes.end(),
1887  [](const PeriodicNodeInfo & a, const PeriodicNodeInfo & b) -> bool
1888  { return a.second > b.second; });
1889 
1890  // build kd-tree
1891  using KDTreeType = nanoflann::KDTreeSingleIndexAdaptor<
1892  nanoflann::L2_Simple_Adaptor<Real, PointListAdaptor<PeriodicNodeInfo>, Real, std::size_t>,
1894  LIBMESH_DIM,
1895  std::size_t>;
1896  const unsigned int max_leaf_size = 20; // slightly affects runtime
1897  auto point_list =
1898  PointListAdaptor<PeriodicNodeInfo>(periodic_nodes.begin(), periodic_nodes.end());
1899  auto kd_tree = std::make_unique<KDTreeType>(
1900  LIBMESH_DIM, point_list, nanoflann::KDTreeSingleIndexAdaptorParams(max_leaf_size));
1901  mooseAssert(kd_tree != nullptr, "KDTree was not properly initialized.");
1902  kd_tree->buildIndex();
1903 
1904  // data structures for kd-tree search
1905  nanoflann::SearchParameters search_params;
1906  std::vector<nanoflann::ResultItem<std::size_t, Real>> ret_matches;
1907 
1908  // iterate over periodic nodes (boundary ids are in contiguous blocks)
1909  libMesh::PeriodicBoundaryBase * periodic = nullptr;
1910  BoundaryID current_bc_id = BoundaryInfo::invalid_id;
1911  for (auto & pair : periodic_nodes)
1912  {
1913  // entering a new block of boundary IDs
1914  if (pair.second != current_bc_id)
1915  {
1916  current_bc_id = pair.second;
1917  periodic = pbs->boundary(current_bc_id);
1918  if (periodic && !periodic->is_my_variable(var_number))
1919  periodic = nullptr;
1920  }
1921 
1922  // variable is not periodic at this node, skip
1923  if (!periodic)
1924  continue;
1925 
1926  // clear result buffer
1927  ret_matches.clear();
1928 
1929  // id of the current node
1930  const auto id = pair.first->id();
1931 
1932  // position where we expect a periodic partner for the current node and boundary
1933  Point search_point = periodic->get_corresponding_pos(*pair.first);
1934 
1935  // search at the expected point
1936  kd_tree->radiusSearch(&(search_point)(0), libMesh::TOLERANCE, ret_matches, search_params);
1937  for (auto & match_pair : ret_matches)
1938  {
1939  const auto & match = periodic_nodes[match_pair.first];
1940  // add matched node if the boundary id is the corresponding id in the periodic pair
1941  if (match.second == periodic->pairedboundary)
1942  periodic_node_map.emplace(id, match.first->id());
1943  }
1944  }
1945 }
static constexpr Real TOLERANCE
boundary_id_type pairedboundary
PeriodicBoundaryBase * boundary(boundary_id_type id)
virtual Point get_corresponding_pos(const Point &pt) const=0
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::pair< const Node *, BoundaryID > PeriodicNodeInfo
Helper type for building periodic node maps.
Definition: MooseMesh.h:1077
boundary_id_type BoundaryID
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
bool is_my_variable(unsigned int var_num) const
virtual const Node & node(const dof_id_type i) const
Various accessors (pointers/references) for Node "i".
Definition: MooseMesh.C:847
SearchParams SearchParameters

◆ buildPeriodicNodeSets()

void MooseMesh::buildPeriodicNodeSets ( std::map< BoundaryID, std::set< dof_id_type >> &  periodic_node_sets,
unsigned int  var_number,
libMesh::PeriodicBoundaries pbs 
) const

This routine builds a datastructure of node ids organized by periodic boundary ids.

Definition at line 1948 of file MooseMesh.C.

1951 {
1952  TIME_SECTION("buildPeriodicNodeSets", 5);
1953 
1954  periodic_node_sets.clear();
1955 
1956  // Loop over all the boundary nodes adding the periodic nodes to the appropriate set
1957  for (const auto & t : getMesh().get_boundary_info().build_node_list())
1958  {
1959  auto node_id = std::get<0>(t);
1960  auto bc_id = std::get<1>(t);
1961 
1962  // Is this current node on a known periodic boundary?
1963  if (periodic_node_sets.find(bc_id) != periodic_node_sets.end())
1964  periodic_node_sets[bc_id].insert(node_id);
1965  else // This still might be a periodic node but we just haven't seen this boundary_id yet
1966  {
1967  const libMesh::PeriodicBoundaryBase * periodic = pbs->boundary(bc_id);
1968  if (periodic && periodic->is_my_variable(var_number))
1969  periodic_node_sets[bc_id].insert(node_id);
1970  }
1971  }
1972 }
PeriodicBoundaryBase * boundary(boundary_id_type id)
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
bool is_my_variable(unsigned int var_num) const

◆ buildPRefinementAndCoarseningMaps()

void MooseMesh::buildPRefinementAndCoarseningMaps ( Assembly assembly)

Definition at line 2418 of file MooseMesh.C.

Referenced by buildRefinementAndCoarseningMaps(), and FEProblemBase::meshChanged().

2419 {
2424 
2425  std::map<ElemType, std::pair<Elem *, unsigned int>> elems_and_max_p_level;
2426 
2427  for (const auto & elem : getMesh().active_element_ptr_range())
2428  {
2429  const auto type = elem->type();
2430  auto & [picked_elem, max_p_level] = elems_and_max_p_level[type];
2431  if (!picked_elem)
2432  picked_elem = elem;
2433  max_p_level = std::max(max_p_level, elem->p_level());
2434  }
2435 
2436  // The only requirement on the FEType is that it can be arbitrarily p-refined
2437  const FEType p_refinable_fe_type(CONSTANT, libMesh::MONOMIAL);
2438  std::vector<Point> volume_ref_points_coarse, volume_ref_points_fine, face_ref_points_coarse,
2439  face_ref_points_fine;
2440  std::vector<unsigned int> p_levels;
2441 
2442  for (auto & [elem_type, elem_p_level_pair] : elems_and_max_p_level)
2443  {
2444  auto & [moose_elem, max_p_level] = elem_p_level_pair;
2445  const auto dim = moose_elem->dim();
2446  // Need to do this just once to get the right qrules put in place
2447  assembly->setCurrentSubdomainID(moose_elem->subdomain_id());
2448  assembly->reinit(moose_elem);
2449  assembly->reinit(moose_elem, 0);
2450  auto & qrule = assembly->writeableQRule();
2451  auto & qrule_face = assembly->writeableQRuleFace();
2452 
2453  libMesh::Parallel::Communicator self_comm{};
2454  ReplicatedMesh mesh(self_comm);
2456  for (const auto & nd : moose_elem->node_ref_range())
2457  mesh.add_point(nd);
2458 
2459  Elem * const elem = mesh.add_elem(Elem::build(elem_type).release());
2460  for (const auto i : elem->node_index_range())
2461  elem->set_node(i, mesh.node_ptr(i));
2462 
2463  std::unique_ptr<FEBase> fe_face(FEBase::build(dim, p_refinable_fe_type));
2464  fe_face->get_phi();
2465  const auto & face_phys_points = fe_face->get_xyz();
2466  fe_face->attach_quadrature_rule(qrule_face);
2467 
2468  qrule->init(*elem);
2469  volume_ref_points_coarse = qrule->get_points();
2470  fe_face->reinit(elem, (unsigned int)0);
2471  libMesh::FEMap::inverse_map(dim, elem, face_phys_points, face_ref_points_coarse);
2472 
2473  p_levels.resize(max_p_level + 1);
2474  std::iota(p_levels.begin(), p_levels.end(), 0);
2475  libMesh::MeshRefinement mesh_refinement(mesh);
2476 
2477  for (const auto p_level : p_levels)
2478  {
2479  mesh_refinement.uniformly_p_refine(1);
2480  qrule->init(*elem);
2481  volume_ref_points_fine = qrule->get_points();
2482  fe_face->reinit(elem, (unsigned int)0);
2483  libMesh::FEMap::inverse_map(dim, elem, face_phys_points, face_ref_points_fine);
2484 
2485  const auto map_key = std::make_pair(elem_type, p_level);
2486  auto & volume_refine_map = _elem_type_to_p_refinement_map[map_key];
2487  auto & face_refine_map = _elem_type_to_p_refinement_side_map[map_key];
2488  auto & volume_coarsen_map = _elem_type_to_p_coarsening_map[map_key];
2489  auto & face_coarsen_map = _elem_type_to_p_coarsening_side_map[map_key];
2490 
2491  auto fill_maps = [this](const auto & coarse_ref_points,
2492  const auto & fine_ref_points,
2493  auto & coarsen_map,
2494  auto & refine_map)
2495  {
2496  mapPoints(fine_ref_points, coarse_ref_points, refine_map);
2497  mapPoints(coarse_ref_points, fine_ref_points, coarsen_map);
2498  };
2499 
2500  fill_maps(
2501  volume_ref_points_coarse, volume_ref_points_fine, volume_coarsen_map, volume_refine_map);
2502  fill_maps(face_ref_points_coarse, face_ref_points_fine, face_coarsen_map, face_refine_map);
2503 
2504  // With this level's maps filled our fine points now become our coarse points
2505  volume_ref_points_fine.swap(volume_ref_points_coarse);
2506  face_ref_points_fine.swap(face_ref_points_coarse);
2507  }
2508  }
2509 }
std::unique_ptr< FEGenericBase< Real > > build(const unsigned int dim, const FEType &fet)
virtual Node *& set_node(const unsigned int i)
libMesh::QBase *const & writeableQRule()
Returns the reference to the current quadrature being used.
Definition: Assembly.h:241
static Point inverse_map(const unsigned int dim, const Elem *elem, const Point &p, const Real tolerance=TOLERANCE, const bool secure=true, const bool extra_checks=true)
MeshBase & mesh
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:162
unsigned int p_level() const
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_coarsening_side_map
Definition: MooseMesh.h:1811
virtual Node * add_point(const Point &p, const dof_id_type id=DofObject::invalid_id, const processor_id_type proc_id=DofObject::invalid_processor_id)=0
void reinit(const Elem *elem)
Reinitialize objects (JxW, q_points, ...) for an elements.
auto max(const L &left, const R &right)
void mapPoints(const std::vector< Point > &from, const std::vector< Point > &to, std::vector< QpMap > &qp_map)
Find the closest points that map "from" to "to" and fill up "qp_map".
Definition: MooseMesh.C:2640
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual Elem * add_elem(Elem *e)=0
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:93
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_refinement_side_map
Definition: MooseMesh.h:1785
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_coarsening_map
Definition: MooseMesh.h:1809
void set_mesh_dimension(unsigned char d)
void setCurrentSubdomainID(SubdomainID i)
set the current subdomain ID
Definition: Assembly.h:424
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_refinement_map
Definition: MooseMesh.h:1783
IntRange< unsigned short > node_index_range() const
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
virtual const Node * node_ptr(const dof_id_type i) const=0
virtual ElemType type() const=0
libMesh::QBase *const & writeableQRuleFace()
Returns the reference to the current quadrature being used on a current face.
Definition: Assembly.h:328

◆ buildRefinementAndCoarseningMaps()

void MooseMesh::buildRefinementAndCoarseningMaps ( Assembly assembly)

Create the refinement and coarsening maps necessary for projection of stateful material properties when using adaptivity.

Parameters
assemblyPointer to the Assembly object for this Mesh.

Definition at line 2512 of file MooseMesh.C.

Referenced by FEProblemBase::initialSetup().

2513 {
2514  TIME_SECTION("buildRefinementAndCoarseningMaps", 5, "Building Refinement And Coarsening Maps");
2515  if (doingPRefinement())
2517  else
2519 }
void buildHRefinementAndCoarseningMaps(Assembly *assembly)
Definition: MooseMesh.C:2361
bool doingPRefinement() const
Query whether we have p-refinement.
Definition: MooseMesh.h:1370
void buildPRefinementAndCoarseningMaps(Assembly *assembly)
Definition: MooseMesh.C:2418

◆ buildRefinementMap()

void MooseMesh::buildRefinementMap ( const Elem elem,
libMesh::QBase qrule,
libMesh::QBase qrule_face,
int  parent_side,
int  child,
int  child_side 
)
private

Build the refinement map for a given element type.

This will tell you what quadrature points to copy from and to for stateful material properties on newly created elements from Adaptivity.

Parameters
elemThe element that represents the element type you need the refinement map for.
qruleThe quadrature rule in use.
qrule_faceThe current face quadrature rule
parent_sideThe side of the parent to map (-1 if not mapping parent sides)
childThe child number (-1 if not mapping child internal sides)
child_sideThe side number of the child (-1 if not mapping sides)

Definition at line 2522 of file MooseMesh.C.

Referenced by buildHRefinementAndCoarseningMaps().

2528 {
2529  TIME_SECTION("buildRefinementMap", 5, "Building Refinement Map");
2530 
2531  if (child == -1) // Doing volume mapping or parent side mapping
2532  {
2533  mooseAssert(parent_side == child_side,
2534  "Parent side must match child_side if not passing a specific child!");
2535 
2536  std::pair<int, ElemType> the_pair(parent_side, elem.type());
2537 
2538  if (_elem_type_to_refinement_map.find(the_pair) != _elem_type_to_refinement_map.end())
2539  mooseError("Already built a qp refinement map!");
2540 
2541  std::vector<std::pair<unsigned int, QpMap>> coarsen_map;
2542  std::vector<std::vector<QpMap>> & refinement_map = _elem_type_to_refinement_map[the_pair];
2544  &elem, qrule, qrule_face, refinement_map, coarsen_map, parent_side, child, child_side);
2545  }
2546  else // Need to map a child side to parent volume qps
2547  {
2548  std::pair<int, int> child_pair(child, child_side);
2549 
2552  _elem_type_to_child_side_refinement_map[elem.type()].find(child_pair) !=
2554  mooseError("Already built a qp refinement map!");
2555 
2556  std::vector<std::pair<unsigned int, QpMap>> coarsen_map;
2557  std::vector<std::vector<QpMap>> & refinement_map =
2560  &elem, qrule, qrule_face, refinement_map, coarsen_map, parent_side, child, child_side);
2561  }
2562 }
std::map< libMesh::ElemType, std::map< std::pair< int, int >, std::vector< std::vector< QpMap > > > > _elem_type_to_child_side_refinement_map
Holds mappings for "internal" child sides to parent volume. The second key is (child, child_side).
Definition: MooseMesh.h:1789
std::map< std::pair< int, libMesh::ElemType >, std::vector< std::vector< QpMap > > > _elem_type_to_refinement_map
Holds mappings for volume to volume and parent side to child side Map key:
Definition: MooseMesh.h:1780
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
void findAdaptivityQpMaps(const Elem *template_elem, libMesh::QBase &qrule, libMesh::QBase &qrule_face, std::vector< std::vector< QpMap >> &refinement_map, std::vector< std::pair< unsigned int, QpMap >> &coarsen_map, int parent_side, int child, int child_side)
Given an elem type, get maps that tell us what qp&#39;s are closest to each other between a parent and it...
Definition: MooseMesh.C:2671
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
virtual ElemType type() const=0

◆ buildSideList()

std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > MooseMesh::buildSideList ( )

Calls BoundaryInfo::build_side_list(), returns a std::vector of (elem-id, side-id, bc-id) tuples.

Definition at line 3089 of file MooseMesh.C.

Referenced by InterfaceQpUserObjectBase::initialSetup().

3090 {
3092 }
const BoundaryInfo & get_boundary_info() const
void build_side_list(std::vector< dof_id_type > &element_id_list, std::vector< unsigned short int > &side_list, std::vector< boundary_id_type > &bc_id_list) const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ buildTypedMesh()

template<typename T >
std::unique_ptr< T > MooseMesh::buildTypedMesh ( unsigned int  dim = libMesh::invalid_uint)

Shortcut method to construct a unique pointer to a libMesh mesh instance.

The created derived-from-MeshBase object will have its allow_remote_element_removal flag set to whatever our value is. We will also attach any geometric RelationshipManagers that have been requested by our simulation objects to the MeshBase object. If the parameter dim is not provided, then its value will be taken from the input file mesh block.

Definition at line 2133 of file MooseMesh.h.

Referenced by MeshGenerator::buildDistributedMesh(), and MeshGenerator::buildReplicatedMesh().

2134 {
2135  // If the requested mesh type to build doesn't match our current value for _use_distributed_mesh,
2136  // then we need to make sure to make our state consistent because other objects, like the periodic
2137  // boundary condition action, will be querying isDistributedMesh()
2138  if (_use_distributed_mesh != std::is_same<T, libMesh::DistributedMesh>::value)
2139  {
2140  if (getMeshPtr())
2141  mooseError("A MooseMesh object is being asked to build a libMesh mesh that is a different "
2142  "parallel type than the libMesh mesh that it wraps. This is not allowed. Please "
2143  "create another MooseMesh object to wrap the new libMesh mesh");
2144  setParallelType(MeshType<T>::value);
2145  }
2146 
2147  if (dim == libMesh::invalid_uint)
2148  {
2149  if (isParamValid("dim"))
2150  dim = getParam<MooseEnum>("dim");
2151  else
2152  // Legacy selection of the default for the 'dim' parameter
2153  dim = 1;
2154  }
2155 
2156  auto mesh = std::make_unique<T>(_communicator, dim);
2157 
2158  if (!getParam<bool>("allow_renumbering"))
2159  mesh->allow_renumbering(false);
2160 
2161  mesh->allow_remote_element_removal(_allow_remote_element_removal);
2162  _app.attachRelationshipManagers(*mesh, *this);
2163 
2165  {
2166  // Check of partitioner is supplied (not allowed if custom partitioner is used)
2167  if (!parameters().isParamSetByAddParam("partitioner"))
2168  mooseError("If partitioner block is provided, partitioner keyword cannot be used!");
2169  // Set custom partitioner
2170  if (!_custom_partitioner.get())
2171  mooseError("Custom partitioner requested but not set!");
2172  mesh->partitioner() = _custom_partitioner->clone();
2173  }
2174  else
2175  setPartitionerHelper(mesh.get());
2176 
2177  return mesh;
2178 }
const unsigned int invalid_uint
void setParallelType(ParallelType parallel_type)
Allow to change parallel type.
Definition: MooseMesh.h:2187
bool _custom_partitioner_requested
Definition: MooseMesh.h:1468
const InputParameters & parameters() const
Get the parameters of the object.
Definition: MooseBase.h:131
MeshBase & mesh
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:162
const Parallel::Communicator & _communicator
void setPartitionerHelper(MeshBase *mesh=nullptr)
Definition: MooseMesh.C:3708
void attachRelationshipManagers(Moose::RelationshipManagerType rm_type, bool attach_geometric_rm_final=false)
Attach the relationship managers of the given type Note: Geometric relationship managers that are sup...
Definition: MooseApp.C:3320
const MeshBase * getMeshPtr() const
Definition: MooseMesh.C:3522
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450
bool _allow_remote_element_removal
Whether to allow removal of remote elements.
Definition: MooseMesh.h:1859
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:199
std::unique_ptr< libMesh::Partitioner > _custom_partitioner
The custom partitioner.
Definition: MooseMesh.h:1467

◆ cacheChangedLists()

void MooseMesh::cacheChangedLists ( )

Cache information about what elements were refined and coarsened in the previous step.

Definition at line 940 of file MooseMesh.C.

Referenced by FEProblemBase::meshChanged().

941 {
942  TIME_SECTION("cacheChangedLists", 5, "Caching Changed Lists");
943 
944  ConstElemRange elem_range(getMesh().local_elements_begin(), getMesh().local_elements_end(), 1);
945  CacheChangedListsThread cclt(*this);
946  Threads::parallel_reduce(elem_range, cclt);
947 
949 
950  _refined_elements = std::make_unique<ConstElemPointerRange>(cclt._refined_elements.begin(),
951  cclt._refined_elements.end());
952  _coarsened_elements = std::make_unique<ConstElemPointerRange>(cclt._coarsened_elements.begin(),
953  cclt._coarsened_elements.end());
954  _coarsened_element_children = cclt._coarsened_element_children;
955 }
void parallel_reduce(const Range &range, Body &body, const Partitioner &)
std::unique_ptr< ConstElemPointerRange > _refined_elements
The elements that were just refined.
Definition: MooseMesh.h:1502
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::unique_ptr< ConstElemPointerRange > _coarsened_elements
The elements that were just coarsened.
Definition: MooseMesh.h:1505
std::map< const Elem *, std::vector< const Elem * > > _coarsened_element_children
Map of Parent elements to child elements for elements that were just coarsened.
Definition: MooseMesh.h:1512

◆ cacheFaceInfoVariableOwnership()

void MooseMesh::cacheFaceInfoVariableOwnership ( ) const

Cache if variables live on the elements connected by the FaceInfo objects.

The following paragraph of code assigns the VarFaceNeighbors

  1. The face is an internal face of this variable if it is defined on the elem and neighbor subdomains
  2. The face is an invalid face of this variable if it is neither defined on the elem nor the neighbor subdomains
  3. If not 1. or 2. then this is a boundary for this variable and the else clause applies

Definition at line 4021 of file MooseMesh.C.

Referenced by setupFiniteVolumeMeshData().

4022 {
4023  mooseAssert(
4024  !Threads::in_threads,
4025  "Performing writes to faceInfo variable association maps. This must be done unthreaded!");
4026 
4027  const unsigned int num_eqs = _app.feProblem().es().n_systems();
4028 
4029  auto face_lambda = [this](const SubdomainID elem_subdomain_id,
4030  const SubdomainID neighbor_subdomain_id,
4031  SystemBase & sys,
4032  std::vector<std::vector<FaceInfo::VarFaceNeighbors>> & face_type_vector)
4033  {
4034  face_type_vector[sys.number()].resize(sys.nVariables(), FaceInfo::VarFaceNeighbors::NEITHER);
4035  const auto & variables = sys.getVariables(0);
4036 
4037  for (const auto & var : variables)
4038  {
4039  const unsigned int var_num = var->number();
4040  const unsigned int sys_num = var->sys().number();
4041  std::set<SubdomainID> var_subdomains = var->blockIDs();
4051  bool var_defined_elem = var_subdomains.find(elem_subdomain_id) != var_subdomains.end();
4052  bool var_defined_neighbor =
4053  var_subdomains.find(neighbor_subdomain_id) != var_subdomains.end();
4054  if (var_defined_elem && var_defined_neighbor)
4055  face_type_vector[sys_num][var_num] = FaceInfo::VarFaceNeighbors::BOTH;
4056  else if (!var_defined_elem && !var_defined_neighbor)
4057  face_type_vector[sys_num][var_num] = FaceInfo::VarFaceNeighbors::NEITHER;
4058  else
4059  {
4060  // this is a boundary face for this variable, set elem or neighbor
4061  if (var_defined_elem)
4062  face_type_vector[sys_num][var_num] = FaceInfo::VarFaceNeighbors::ELEM;
4063  else if (var_defined_neighbor)
4064  face_type_vector[sys_num][var_num] = FaceInfo::VarFaceNeighbors::NEIGHBOR;
4065  else
4066  mooseError("Should never get here");
4067  }
4068  }
4069  };
4070 
4071  // We loop through the faces and check if they are internal, boundary or external to
4072  // the variables in the problem
4073  for (FaceInfo & face : _all_face_info)
4074  {
4075  const SubdomainID elem_subdomain_id = face.elemSubdomainID();
4076  const SubdomainID neighbor_subdomain_id = face.neighborSubdomainID();
4077 
4078  auto & face_type_vector = face.faceType();
4079 
4080  face_type_vector.clear();
4081  face_type_vector.resize(num_eqs);
4082 
4083  // First, we check the variables in the solver systems (linear/nonlinear)
4084  for (const auto i : make_range(_app.feProblem().numSolverSystems()))
4085  face_lambda(elem_subdomain_id,
4086  neighbor_subdomain_id,
4088  face_type_vector);
4089 
4090  // Then we check the variables in the auxiliary system
4091  face_lambda(elem_subdomain_id,
4092  neighbor_subdomain_id,
4094  face_type_vector);
4095  }
4096 }
std::vector< FaceInfo > _all_face_info
FaceInfo object storing information for face based loops.
Definition: MooseMesh.h:1631
unsigned int n_systems() const
Base class for a system (of equations)
Definition: SystemBase.h:84
FEProblemBase & feProblem() const
Definition: MooseApp.C:2043
This data structure is used to store geometric and variable related metadata about each cell face in ...
Definition: FaceInfo.h:36
virtual libMesh::EquationSystems & es() override
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357
AuxiliarySystem & getAuxiliarySystem()
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
SolverSystem & getSolverSystem(unsigned int sys_num)
Get non-constant reference to a solver system.
virtual std::size_t numSolverSystems() const override

◆ cacheFVElementalDoFs()

void MooseMesh::cacheFVElementalDoFs ( ) const

Cache the DoF indices for FV variables on each element.

These indices are used to speed up the setup loops of finite volume systems.

Definition at line 4099 of file MooseMesh.C.

Referenced by setupFiniteVolumeMeshData().

4100 {
4101  mooseAssert(!Threads::in_threads,
4102  "Performing writes to elemInfo dof indices. This must be done unthreaded!");
4103 
4104  auto elem_lambda = [](const ElemInfo & elem_info,
4105  SystemBase & sys,
4106  std::vector<std::vector<dof_id_type>> & dof_vector)
4107  {
4108  if (sys.nFVVariables())
4109  {
4110  dof_vector[sys.number()].resize(sys.nVariables(), libMesh::DofObject::invalid_id);
4111  const auto & variables = sys.getVariables(0);
4112 
4113  for (const auto & var : variables)
4114  if (var->isFV())
4115  {
4116  const auto & var_subdomains = var->blockIDs();
4117 
4118  // We will only cache for FV variables and if they live on the current subdomain
4119  if (var_subdomains.find(elem_info.subdomain_id()) != var_subdomains.end())
4120  {
4121  std::vector<dof_id_type> indices;
4122  var->dofMap().dof_indices(elem_info.elem(), indices, var->number());
4123  mooseAssert(indices.size() == 1, "We expect to have only one dof per element!");
4124  dof_vector[sys.number()][var->number()] = indices[0];
4125  }
4126  }
4127  }
4128  };
4129 
4130  const unsigned int num_eqs = _app.feProblem().es().n_systems();
4131 
4132  // We loop through the elements in the mesh and cache the dof indices
4133  // for the corresponding variables.
4134  for (auto & ei_pair : _elem_to_elem_info)
4135  {
4136  auto & elem_info = ei_pair.second;
4137  auto & dof_vector = elem_info.dofIndices();
4138 
4139  dof_vector.clear();
4140  dof_vector.resize(num_eqs);
4141 
4142  // First, we cache the dof indices for the variables in the solver systems (linear, nonlinear)
4143  for (const auto i : make_range(_app.feProblem().numSolverSystems()))
4144  elem_lambda(elem_info, _app.feProblem().getSolverSystem(i), dof_vector);
4145 
4146  // Then we cache the dof indices for the auxvariables
4147  elem_lambda(elem_info, _app.feProblem().getAuxiliarySystem(), dof_vector);
4148  }
4149 }
unsigned int n_systems() const
const Elem * elem() const
Definition: ElemInfo.h:34
Base class for a system (of equations)
Definition: SystemBase.h:84
FEProblemBase & feProblem() const
Definition: MooseApp.C:2043
static constexpr dof_id_type invalid_id
virtual libMesh::EquationSystems & es() override
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357
AuxiliarySystem & getAuxiliarySystem()
std::unordered_map< dof_id_type, ElemInfo > _elem_to_elem_info
Map connecting elems with their corresponding ElemInfo, we use the element ID as the key...
Definition: MooseMesh.h:1623
const std::vector< std::vector< dof_id_type > > & dofIndices() const
Definition: ElemInfo.h:39
IntRange< T > make_range(T beg, T end)
SolverSystem & getSolverSystem(unsigned int sys_num)
Get non-constant reference to a solver system.
Class used for caching additional information for elements such as the volume and centroid...
Definition: ElemInfo.h:25
virtual std::size_t numSolverSystems() const override
SubdomainID subdomain_id() const
We return the subdomain ID of the corresponding libmesh element.
Definition: ElemInfo.h:43

◆ cacheInfo()

void MooseMesh::cacheInfo ( )
protected

Definition at line 1457 of file MooseMesh.C.

Referenced by update().

1458 {
1459  TIME_SECTION("cacheInfo", 3);
1460 
1461  _has_lower_d = false;
1462  _sub_to_data.clear();
1464  _block_node_list.clear();
1467  _lower_d_interior_blocks.clear();
1468  _lower_d_boundary_blocks.clear();
1469 
1470  auto & mesh = getMesh();
1471 
1472  // TODO: Thread this!
1473  for (const auto & elem : mesh.element_ptr_range())
1474  {
1475  const Elem * ip_elem = elem->interior_parent();
1476 
1477  if (ip_elem)
1478  {
1479  if (elem->active())
1480  _sub_to_data[elem->subdomain_id()].is_lower_d = true;
1481  unsigned int ip_side = ip_elem->which_side_am_i(elem);
1482 
1483  // For some grid sequencing tests: ip_side == libMesh::invalid_uint
1484  if (ip_side != libMesh::invalid_uint)
1485  {
1486  auto pair = std::make_pair(ip_elem, ip_side);
1488  std::pair<std::pair<const Elem *, unsigned short int>, const Elem *>(pair, elem));
1490  std::pair<const Elem *, unsigned short int>(elem, ip_side));
1491 
1492  auto id = elem->subdomain_id();
1493  if (ip_elem->neighbor_ptr(ip_side))
1494  {
1495  if (mesh.subdomain_name(id).find("INTERNAL_SIDE_LOWERD_SUBDOMAIN_") != std::string::npos)
1496  _lower_d_interior_blocks.insert(id);
1497  }
1498  else
1499  {
1500  if (mesh.subdomain_name(id).find("BOUNDARY_SIDE_LOWERD_SUBDOMAIN_") != std::string::npos)
1501  _lower_d_boundary_blocks.insert(id);
1502  }
1503  }
1504  }
1505 
1506  for (unsigned int nd = 0; nd < elem->n_nodes(); ++nd)
1507  {
1508  Node & node = *elem->node_ptr(nd);
1509  _block_node_list[node.id()].insert(elem->subdomain_id());
1510  }
1511  }
1514 
1515  for (const auto & elem : mesh.active_local_element_ptr_range())
1516  {
1517  SubdomainID subdomain_id = elem->subdomain_id();
1518  auto & sub_data = _sub_to_data[subdomain_id];
1519  for (unsigned int side = 0; side < elem->n_sides(); side++)
1520  {
1521  std::vector<BoundaryID> boundary_ids = getBoundaryIDs(elem, side);
1522  sub_data.boundary_ids.insert(boundary_ids.begin(), boundary_ids.end());
1523 
1524  Elem * neig = elem->neighbor_ptr(side);
1525  if (neig)
1526  {
1527  _neighbor_subdomain_boundary_ids[neig->subdomain_id()].insert(boundary_ids.begin(),
1528  boundary_ids.end());
1529  SubdomainID neighbor_subdomain_id = neig->subdomain_id();
1530  if (neighbor_subdomain_id != subdomain_id)
1531  sub_data.neighbor_subs.insert(neighbor_subdomain_id);
1532  }
1533  }
1534  }
1535 
1536  for (const auto blk_id : _mesh_subdomains)
1537  {
1538  auto & sub_data = _sub_to_data[blk_id];
1539  _communicator.set_union(sub_data.neighbor_subs);
1540  _communicator.set_union(sub_data.boundary_ids);
1541  _communicator.max(sub_data.is_lower_d);
1542  if (sub_data.is_lower_d)
1543  _has_lower_d = true;
1545  }
1546 }
const std::set< BoundaryID > & getBoundaryIDs() const
Returns a const reference to a set of all user-specified boundary IDs.
Definition: MooseMesh.C:3029
const unsigned int invalid_uint
const Elem * interior_parent() const
std::unordered_map< const Elem *, unsigned short int > _lower_d_elem_to_higher_d_elem_side
Definition: MooseMesh.h:1839
unsigned int which_side_am_i(const Elem *e) const
MeshBase & mesh
std::unordered_map< std::pair< const Elem *, unsigned short int >, const Elem * > _higher_d_elem_side_to_lower_d_elem
Holds a map from a high-order element side to its corresponding lower-d element.
Definition: MooseMesh.h:1838
bool _has_lower_d
Whether there are any lower-dimensional blocks that are manifolds of higher-dimensional block faces...
Definition: MooseMesh.h:1843
std::map< dof_id_type, std::set< SubdomainID > > _block_node_list
list of nodes that belongs to a specified block (domain)
Definition: MooseMesh.h:1580
const Parallel::Communicator & _communicator
std::set< SubdomainID > _lower_d_boundary_blocks
Mesh blocks for boundary lower-d elements in different types.
Definition: MooseMesh.h:1835
std::unordered_map< SubdomainID, std::set< BoundaryID > > _neighbor_subdomain_boundary_ids
Holds a map from neighbor subomdain ids to the boundary ids that are attached to it.
Definition: MooseMesh.h:1830
std::set< SubdomainID > _lower_d_interior_blocks
Mesh blocks for interior lower-d elements in different types.
Definition: MooseMesh.h:1833
dof_id_type id() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual unsigned int n_nodes() const=0
std::string & subdomain_name(subdomain_id_type id)
virtual unsigned int n_sides() const=0
const Elem * neighbor_ptr(unsigned int i) const
subdomain_id_type subdomain_id() const
void max(const T &r, T &o, Request &req) const
const Node * node_ptr(const unsigned int i) const
virtual const Node & node(const dof_id_type i) const
Various accessors (pointers/references) for Node "i".
Definition: MooseMesh.C:847
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
std::set< SubdomainID > _mesh_subdomains
A set of subdomain IDs currently present in the mesh.
Definition: MooseMesh.h:1543
std::unordered_map< SubdomainID, SubdomainData > _sub_to_data
Holds a map from subdomain ids to associated data.
Definition: MooseMesh.h:1827
bool active() const
void set_union(T &data, const unsigned int root_id) const

◆ callMooseError() [1/2]

void MooseBase::callMooseError ( std::string  msg,
const bool  with_prefix,
const hit::Node *  node = nullptr 
) const
inherited

External method for calling moose error with added object context.

Parameters
msgThe message
with_prefixIf true, add the prefix from messagePrefix(), which is the object information (type, name, etc)
nodeOptional hit node to add file path context as a prefix

Definition at line 105 of file MooseBase.C.

Referenced by InputParameters::callMooseError(), MooseBase::mooseDocumentedError(), MooseBase::mooseError(), and MooseBase::mooseErrorNonPrefixed().

108 {
109  callMooseError(&_app, _pars, msg, with_prefix, node);
110 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr) const
External method for calling moose error with added object context.
Definition: MooseBase.C:105
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357

◆ callMooseError() [2/2]

void MooseBase::callMooseError ( MooseApp *const  app,
const InputParameters params,
std::string  msg,
const bool  with_prefix,
const hit::Node *  node 
)
staticinherited

External method for calling moose error with added object context.

Needed so that objects without the MooseBase context (InputParameters) can call errors with context

Parameters
appThe app pointer (if available); adds multiapp context and clears the console
paramsThe parameters, needed to obtain object information
msgThe message
with_prefixIf true, add the prefix from messagePrefix(), which is the object information (type, name, etc)
nodeOptional hit node to add file path context as a prefix

Definition at line 113 of file MooseBase.C.

118 {
119  if (!node)
120  node = MooseBase::getHitNode(params);
121 
122  std::string multiapp_prefix = "";
123  if (app)
124  {
125  if (!app->isUltimateMaster())
126  multiapp_prefix = app->name();
128  }
129 
130  if (with_prefix)
131  // False here because the hit context will get processed by the node
132  msg = messagePrefix(params, false) + msg;
133 
134  moose::internal::mooseErrorRaw(msg, multiapp_prefix, node);
135 }
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:820
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
void mooseErrorRaw(std::string msg, const std::string &prefix="", const hit::Node *node=nullptr)
Main callback for emitting a moose error.
Definition: MooseError.C:53
void mooseConsole()
Send current output buffer to Console output objects.
const hit::Node * getHitNode() const
Definition: MooseBase.h:136
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2525
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:256

◆ changeBoundaryId() [1/2]

void MooseMesh::changeBoundaryId ( const boundary_id_type  old_id,
const boundary_id_type  new_id,
bool  delete_prev 
)

Change all the boundary IDs for a given side from old_id to new_id.

If delete_prev is true, also actually remove the side with old_id from the BoundaryInfo object.

Definition at line 2812 of file MooseMesh.C.

2815 {
2816  TIME_SECTION("changeBoundaryId", 6);
2817  changeBoundaryId(getMesh(), old_id, new_id, delete_prev);
2818 }
void changeBoundaryId(const boundary_id_type old_id, const boundary_id_type new_id, bool delete_prev)
Change all the boundary IDs for a given side from old_id to new_id.
Definition: MooseMesh.C:2812
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ changeBoundaryId() [2/2]

static void MooseMesh::changeBoundaryId ( MeshBase &  mesh,
const boundary_id_type  old_id,
const boundary_id_type  new_id,
bool  delete_prev 
)
static

Change all the boundary IDs for a given side from old_id to new_id for the given mesh.

If delete_prev is true, also actually remove the side with old_id from the BoundaryInfo object.

◆ checkCoordinateSystems()

void MooseMesh::checkCoordinateSystems ( )

Performs a sanity check for every element in the mesh.

If an element dimension is 3 and the corresponding coordinate system is RZ, then this will error. If an element dimension is greater than 1 and the corresponding system is RPSHERICAL then this will error

Definition at line 4387 of file MooseMesh.C.

Referenced by FEProblemBase::checkCoordinateSystems().

4388 {
4389  for (const auto & elem : getMesh().element_ptr_range())
4390  {
4391  SubdomainID sid = elem->subdomain_id();
4392  if (_coord_sys[sid] == Moose::COORD_RZ && elem->dim() == 3)
4393  mooseError("An RZ coordinate system was requested for subdomain " + Moose::stringify(sid) +
4394  " which contains 3D elements.");
4395  if (_coord_sys[sid] == Moose::COORD_RSPHERICAL && elem->dim() > 1)
4396  mooseError("An RSPHERICAL coordinate system was requested for subdomain " +
4397  Moose::stringify(sid) + " which contains 2D or 3D elements.");
4398  }
4399 }
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
Definition: MooseMesh.h:1901
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
subdomain_id_type subdomain_id() const
virtual unsigned short dim() const=0
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ checkDuplicateSubdomainNames()

void MooseMesh::checkDuplicateSubdomainNames ( )
private

Loop through all subdomain IDs and check if there is name duplication used for the subdomains with same ID.

Throw out an error if any name duplication is found.

Definition at line 4417 of file MooseMesh.C.

Referenced by prepare().

4418 {
4419  std::map<SubdomainName, SubdomainID> subdomain;
4420  for (const auto & sbd_id : _mesh_subdomains)
4421  {
4422  std::string sub_name = getSubdomainName(sbd_id);
4423  if (!sub_name.empty() && subdomain.count(sub_name) > 0)
4424  mooseError("The subdomain name ",
4425  sub_name,
4426  " is used for both subdomain with ID=",
4427  subdomain[sub_name],
4428  " and ID=",
4429  sbd_id,
4430  ", Please rename one of them!");
4431  else
4432  subdomain[sub_name] = sbd_id;
4433  }
4434 }
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
Definition: MooseMesh.C:1813
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
std::set< SubdomainID > _mesh_subdomains
A set of subdomain IDs currently present in the mesh.
Definition: MooseMesh.h:1543

◆ clearQuadratureNodes()

void MooseMesh::clearQuadratureNodes ( )

Clear out any existing quadrature nodes.

Most likely called before re-adding them.

Definition at line 1730 of file MooseMesh.C.

Referenced by DisplacedProblem::meshChanged(), GeometricSearchData::reinit(), and ~MooseMesh().

1731 {
1732  // Delete all the quadrature nodes
1733  for (auto & it : _quadrature_nodes)
1734  delete it.second;
1735 
1736  _quadrature_nodes.clear();
1738  _extra_bnd_nodes.clear();
1739 }
std::map< dof_id_type, Node * > _quadrature_nodes
Definition: MooseMesh.h:1574
std::vector< BndNode > _extra_bnd_nodes
Definition: MooseMesh.h:1577
std::map< dof_id_type, std::map< unsigned int, std::map< dof_id_type, Node * > > > _elem_to_side_to_qp_to_quadrature_nodes
Definition: MooseMesh.h:1576

◆ clone()

MooseMesh & MooseMesh::clone ( ) const
virtual

Clone method.

Allocates memory you are responsible to clean up.

Definition at line 2872 of file MooseMesh.C.

Referenced by TiledMesh::buildMesh().

2873 {
2874  mooseError("MooseMesh::clone() is no longer supported, use MooseMesh::safeClone() instead.");
2875 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ coarsenedElementChildren()

const std::vector< const Elem * > & MooseMesh::coarsenedElementChildren ( const Elem elem) const

Get the newly removed children element ids for an element that was just coarsened.

Parameters
elemPointer to the parent element that was coarsened to.
Returns
The child element ids in Elem::child() order.

Definition at line 970 of file MooseMesh.C.

Referenced by FEProblemBase::meshChanged(), ProjectMaterialProperties::onBoundary(), and ProjectMaterialProperties::onElement().

971 {
972  auto elem_to_child_pair = _coarsened_element_children.find(elem);
973  mooseAssert(elem_to_child_pair != _coarsened_element_children.end(), "Missing element in map");
974  return elem_to_child_pair->second;
975 }
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
std::map< const Elem *, std::vector< const Elem * > > _coarsened_element_children
Map of Parent elements to child elements for elements that were just coarsened.
Definition: MooseMesh.h:1512

◆ coarsenedElementRange()

ConstElemPointerRange * MooseMesh::coarsenedElementRange ( ) const

Return a range that is suitable for threaded execution over elements that were just coarsened.

Note that these are the Parent elements that are now set to be INACTIVE. Their children are the elements that were just removed. Use coarsenedElementChildren() to get the element IDs for the children that were just removed for a particular parent element.

Definition at line 964 of file MooseMesh.C.

Referenced by FEProblemBase::meshChanged().

965 {
966  return _coarsened_elements.get();
967 }
std::unique_ptr< ConstElemPointerRange > _coarsened_elements
The elements that were just coarsened.
Definition: MooseMesh.h:1505

◆ computeFiniteVolumeCoords()

void MooseMesh::computeFiniteVolumeCoords ( ) const

Compute the face coordinate value for all FaceInfo and ElemInfo objects.

'Coordinate' here means a coordinate value associated with the coordinate system. For Cartesian coordinate systems, 'coordinate' is simply '1'; in RZ, '2*pi*r', and in spherical, '4*pi*r^2'

Definition at line 3957 of file MooseMesh.C.

Referenced by setupFiniteVolumeMeshData().

3958 {
3960  mooseError("Trying to compute face- and elem-info coords when the information is dirty");
3961 
3962  for (auto & fi : _all_face_info)
3963  {
3964  // get elem & neighbor elements, and set subdomain ids
3965  const SubdomainID elem_subdomain_id = fi.elemSubdomainID();
3966  const SubdomainID neighbor_subdomain_id = fi.neighborSubdomainID();
3967 
3969  *this, elem_subdomain_id, fi.faceCentroid(), fi.faceCoord(), neighbor_subdomain_id);
3970  }
3971 
3972  for (auto & ei : _elem_to_elem_info)
3974  *this, ei.second.subdomain_id(), ei.second.centroid(), ei.second.coordFactor());
3975 }
std::vector< FaceInfo > _all_face_info
FaceInfo object storing information for face based loops.
Definition: MooseMesh.h:1631
bool _finite_volume_info_dirty
Definition: MooseMesh.h:1642
void coordTransformFactor(const SubProblem &s, SubdomainID sub_id, const P &point, C &factor, SubdomainID neighbor_sub_id=libMesh::Elem::invalid_subdomain_id)
Computes a conversion multiplier for use when computing integraals for the current coordinate system ...
Definition: Assembly.C:41
std::unordered_map< dof_id_type, ElemInfo > _elem_to_elem_info
Map connecting elems with their corresponding ElemInfo, we use the element ID as the key...
Definition: MooseMesh.h:1623
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ computeMaxPerElemAndSide()

void MooseMesh::computeMaxPerElemAndSide ( )
private

Compute the maximum numbers per element and side.

Definition at line 1086 of file MooseMesh.C.

Referenced by init().

1087 {
1088  auto & mesh = getMesh();
1089 
1090  _max_sides_per_elem = 0;
1091  _max_nodes_per_elem = 0;
1092  _max_nodes_per_side = 0;
1093 
1094  for (auto & elem : as_range(mesh.local_elements_begin(), mesh.local_elements_end()))
1095  {
1098 
1099  for (unsigned int side = 0; side < elem->n_sides(); ++side)
1101  }
1102 
1106 }
unsigned int _max_nodes_per_side
The maximum number of nodes per side.
Definition: MooseMesh.h:1886
unsigned int _max_sides_per_elem
The maximum number of sides per element.
Definition: MooseMesh.h:1880
MeshBase & mesh
const Parallel::Communicator & comm() const
auto max(const L &left, const R &right)
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual unsigned int n_nodes() const=0
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
virtual unsigned int n_sides() const=0
virtual std::unique_ptr< Elem > side_ptr(unsigned int i)=0
void max(const T &r, T &o, Request &req) const
unsigned int _max_nodes_per_elem
The maximum number of nodes per element.
Definition: MooseMesh.h:1883
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ connectControllableParams()

void MooseBase::connectControllableParams ( const std::string &  parameter,
const std::string &  object_type,
const std::string &  object_name,
const std::string &  object_parameter 
) const
inherited

Connect controllable parameter of this action with the controllable parameters of the objects added by this action.

Parameters
parameterName of the controllable parameter of this action
object_typeType of the object added by this action.
object_nameName of the object added by this action.
object_parameterName of the parameter of the object.

Definition at line 77 of file MooseBase.C.

81 {
82  auto & factory = _app.getFactory();
83  auto & ip_warehouse = _app.getInputParameterWarehouse();
84 
85  MooseObjectParameterName primary_name(uniqueName(), parameter);
86  const auto base_type = factory.getValidParams(object_type).getBase();
87  MooseObjectParameterName secondary_name(base_type, object_name, object_parameter);
88  ip_warehouse.addControllableParameterConnection(primary_name, secondary_name);
89 
90  const auto & tags = _pars.get<std::vector<std::string>>("control_tags");
91  for (const auto & tag : tags)
92  {
93  if (!tag.empty())
94  {
95  // Only adds the parameter with the different control tags if the derived class
96  // properly registers the parameter to its own syntax
97  MooseObjectParameterName tagged_name(tag, name(), parameter);
98  ip_warehouse.addControllableParameterConnection(
99  tagged_name, secondary_name, /*error_on_empty=*/false);
100  }
101  }
102 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
InputParameterWarehouse & getInputParameterWarehouse()
Get the InputParameterWarehouse for MooseObjects.
Definition: MooseApp.C:2983
MooseObjectName uniqueName() const
Definition: MooseBase.C:69
Factory & getFactory()
Retrieve a writable reference to the Factory associated with this App.
Definition: MooseApp.h:401
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357
A class for storing an input parameter name.

◆ coordTransform()

MooseAppCoordTransform & MooseMesh::coordTransform ( )
inline
Returns
the coordinate transformation object that describes how to transform this problem's coordinate system into the canonical/reference coordinate system

Definition at line 1931 of file MooseMesh.h.

Referenced by FEProblemBase::checkProblemIntegrity(), and FEProblemBase::coordTransform().

1932 {
1933  mooseAssert(_coord_transform, "The coordinate transformation object is null.");
1934  return *_coord_transform;
1935 }
std::unique_ptr< MooseAppCoordTransform > _coord_transform
A coordinate transformation object that describes how to transform this problem&#39;s coordinate system i...
Definition: MooseMesh.h:1911

◆ declareManagedRestartableDataWithContext()

template<typename T , typename... Args>
Restartable::ManagedValue< T > Restartable::declareManagedRestartableDataWithContext ( const std::string &  data_name,
void context,
Args &&...  args 
)
protectedinherited

Declares a piece of "managed" restartable data and initialize it.

Here, "managed" restartable data means that the caller can destruct this data upon destruction of the return value of this method. Therefore, this ManagedValue<T> wrapper should survive after the final calls to dataStore() for it. That is... at the very end.

This is needed for objects whose destruction ordering is important, and enables natural c++ destruction in reverse construction order of the object that declares it.

See delcareRestartableData and declareRestartableDataWithContext for more information.

Definition at line 283 of file Restartable.h.

286 {
287  auto & data_ptr =
288  declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...);
289  return Restartable::ManagedValue<T>(data_ptr);
290 }
Wrapper class for restartable data that is "managed.
Definition: Restartable.h:42

◆ declareRecoverableData()

template<typename T , typename... Args>
T & Restartable::declareRecoverableData ( const std::string &  data_name,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "recoverable" and initialize it.

This means that in the event of a restart this piece of data will be restored back to its previous value.

Note - this data will NOT be restored on Restart!

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
argsArguments to forward to the constructor of the data

Definition at line 358 of file Restartable.h.

359 {
360  const auto full_name = restartableName(data_name);
361 
363 
364  return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
365 }
std::string restartableName(const std::string &data_name) const
Gets the name of a piece of restartable data given a data name, adding the system name and object nam...
Definition: Restartable.C:78
void registerRestartableNameWithFilterOnApp(const std::string &name, Moose::RESTARTABLE_FILTER filter)
Helper function for actually registering the restartable data.
Definition: Restartable.C:71

◆ declareRestartableData()

template<typename T , typename... Args>
T & Restartable::declareRestartableData ( const std::string &  data_name,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable" and initialize it.

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
argsArguments to forward to the constructor of the data

Definition at line 276 of file Restartable.h.

277 {
278  return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
279 }

◆ declareRestartableDataWithContext()

template<typename T , typename... Args>
T & Restartable::declareRestartableDataWithContext ( const std::string &  data_name,
void context,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable" and initialize it.

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
contextContext pointer that will be passed to the load and store functions
argsArguments to forward to the constructor of the data

Definition at line 301 of file Restartable.h.

304 {
305  return declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...).set();
306 }

◆ declareRestartableDataWithObjectName()

template<typename T , typename... Args>
T & Restartable::declareRestartableDataWithObjectName ( const std::string &  data_name,
const std::string &  object_name,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable".

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
object_nameA supplied name for the object that is declaring this data.
argsArguments to forward to the constructor of the data

Definition at line 330 of file Restartable.h.

333 {
334  return declareRestartableDataWithObjectNameWithContext<T>(
335  data_name, object_name, nullptr, std::forward<Args>(args)...);
336 }

◆ declareRestartableDataWithObjectNameWithContext()

template<typename T , typename... Args>
T & Restartable::declareRestartableDataWithObjectNameWithContext ( const std::string &  data_name,
const std::string &  object_name,
void context,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable".

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
object_nameA supplied name for the object that is declaring this data.
contextContext pointer that will be passed to the load and store functions
argsArguments to forward to the constructor of the data

Definition at line 340 of file Restartable.h.

344 {
345  std::string old_name = _restartable_name;
346 
347  _restartable_name = object_name;
348 
349  T & value = declareRestartableDataWithContext<T>(data_name, context, std::forward<Args>(args)...);
350 
351  _restartable_name = old_name;
352 
353  return value;
354 }
std::string _restartable_name
The name of the object.
Definition: Restartable.h:250
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)

◆ deleteRemoteElements()

void MooseMesh::deleteRemoteElements ( )

Delete remote elements.

Definition at line 4009 of file MooseMesh.C.

4010 {
4012  if (!_mesh)
4013  mooseError("Cannot delete remote elements because we have not yet attached a MeshBase");
4014 
4015  _mesh->allow_remote_element_removal(true);
4016 
4017  _mesh->delete_remote_elements();
4018 }
bool _allow_remote_element_removal
Whether to allow removal of remote elements.
Definition: MooseMesh.h:1859
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ detectOrthogonalDimRanges()

bool MooseMesh::detectOrthogonalDimRanges ( Real  tol = 1e-6)

This routine determines whether the Mesh is a regular orthogonal mesh (i.e.

square in 2D, cubic in 3D). If it is, then we can use a number of convenience functions when periodic boundary conditions are applied. This routine populates the _range vector which is necessary for these convenience functions.

Note: This routine can potentially identify meshes with concave faces that still "fit" in the convex hull of the corresponding regular orthogonal mesh. This case is highly unlikely in practice and if a user does this, well.... release the kicker!

Definition at line 1975 of file MooseMesh.C.

Referenced by AddPeriodicBCAction::autoTranslationBoundaries(), and prepare().

1976 {
1977  TIME_SECTION("detectOrthogonalDimRanges", 5);
1978 
1980  return true;
1981 
1982  std::vector<Real> min(3, std::numeric_limits<Real>::max());
1983  std::vector<Real> max(3, std::numeric_limits<Real>::min());
1984  unsigned int dim = getMesh().mesh_dimension();
1985 
1986  // Find the bounding box of our mesh
1987  for (const auto & node : getMesh().node_ptr_range())
1988  // Check all coordinates, we don't know if this mesh might be lying in a higher dim even if the
1989  // mesh dimension is lower.
1990  for (const auto i : make_range(Moose::dim))
1991  {
1992  if ((*node)(i) < min[i])
1993  min[i] = (*node)(i);
1994  if ((*node)(i) > max[i])
1995  max[i] = (*node)(i);
1996  }
1997 
1998  this->comm().max(max);
1999  this->comm().min(min);
2000 
2001  _extreme_nodes.resize(8); // 2^LIBMESH_DIM
2002  // Now make sure that there are actual nodes at all of the extremes
2003  std::vector<bool> extreme_matches(8, false);
2004  std::vector<unsigned int> comp_map(3);
2005  for (const auto & node : getMesh().node_ptr_range())
2006  {
2007  // See if the current node is located at one of the extremes
2008  unsigned int coord_match = 0;
2009 
2010  for (const auto i : make_range(Moose::dim))
2011  {
2012  if (std::abs((*node)(i)-min[i]) < tol)
2013  {
2014  comp_map[i] = MIN;
2015  ++coord_match;
2016  }
2017  else if (std::abs((*node)(i)-max[i]) < tol)
2018  {
2019  comp_map[i] = MAX;
2020  ++coord_match;
2021  }
2022  }
2023 
2024  if (coord_match == LIBMESH_DIM) // Found a coordinate at one of the extremes
2025  {
2026  _extreme_nodes[comp_map[X] * 4 + comp_map[Y] * 2 + comp_map[Z]] = node;
2027  extreme_matches[comp_map[X] * 4 + comp_map[Y] * 2 + comp_map[Z]] = true;
2028  }
2029  }
2030 
2031  // See if we matched all of the extremes for the mesh dimension
2032  this->comm().max(extreme_matches);
2033  if (std::count(extreme_matches.begin(), extreme_matches.end(), true) == (1 << dim))
2034  _regular_orthogonal_mesh = true;
2035 
2036  // Set the bounds
2037  _bounds.resize(LIBMESH_DIM);
2038  for (const auto i : make_range(Moose::dim))
2039  {
2040  _bounds[i].resize(2);
2041  _bounds[i][MIN] = min[i];
2042  _bounds[i][MAX] = max[i];
2043  }
2044 
2045  return _regular_orthogonal_mesh;
2046 }
std::vector< std::vector< Real > > _bounds
The bounds in each dimension of the mesh for regular orthogonal meshes.
Definition: MooseMesh.h:1607
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition: EigenADReal.h:50
std::vector< Node * > _extreme_nodes
A vector containing the nodes at the corners of a regular orthogonal mesh.
Definition: MooseMesh.h:1661
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:162
const Parallel::Communicator & comm() const
auto max(const L &left, const R &right)
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
void min(const T &r, T &o, Request &req) const
void max(const T &r, T &o, Request &req) const
IntRange< T > make_range(T beg, T end)
virtual const Node & node(const dof_id_type i) const
Various accessors (pointers/references) for Node "i".
Definition: MooseMesh.C:847
unsigned int mesh_dimension() const
auto min(const L &left, const R &right)
bool _regular_orthogonal_mesh
Boolean indicating whether this mesh was detected to be regular and orthogonal.
Definition: MooseMesh.h:1604

◆ detectPairedSidesets()

void MooseMesh::detectPairedSidesets ( )
private

This routine detects paired sidesets of a regular orthogonal mesh (.i.e.

parallel sidesets "across" from one and other). The _paired_boundary datastructure is populated with this information.

Definition at line 2049 of file MooseMesh.C.

Referenced by getPairedBoundaryMapping().

2050 {
2051  TIME_SECTION("detectPairedSidesets", 5);
2052 
2053  // Loop over level-0 elements (since boundary condition information
2054  // is only directly stored for them) and find sidesets with normals
2055  // that point in the -x, +x, -y, +y, and -z, +z direction. If there
2056  // is a unique sideset id for each direction, then the paired
2057  // sidesets consist of (-x,+x), (-y,+y), (-z,+z). If there are
2058  // multiple sideset ids for a given direction, then we can't pick a
2059  // single pair for that direction. In that case, we'll just return
2060  // as was done in the original algorithm.
2061 
2062  // Points used for direction comparison
2063  const Point minus_x(-1, 0, 0), plus_x(1, 0, 0), minus_y(0, -1, 0), plus_y(0, 1, 0),
2064  minus_z(0, 0, -1), plus_z(0, 0, 1);
2065 
2066  // we need to test all element dimensions from dim down to 1
2067  const unsigned int dim = getMesh().mesh_dimension();
2068 
2069  // boundary id sets for elements of different dimensions
2070  std::vector<std::set<BoundaryID>> minus_x_ids(dim), plus_x_ids(dim), minus_y_ids(dim),
2071  plus_y_ids(dim), minus_z_ids(dim), plus_z_ids(dim);
2072 
2073  std::vector<std::unique_ptr<FEBase>> fe_faces(dim);
2074  std::vector<std::unique_ptr<libMesh::QGauss>> qfaces(dim);
2075  for (unsigned side_dim = 0; side_dim < dim; ++side_dim)
2076  {
2077  // Face is assumed to be flat, therefore normal is assumed to be
2078  // constant over the face, therefore only compute it at 1 qp.
2079  qfaces[side_dim] = std::unique_ptr<libMesh::QGauss>(new libMesh::QGauss(side_dim, CONSTANT));
2080 
2081  // A first-order Lagrange FE for the face.
2082  fe_faces[side_dim] = FEBase::build(side_dim + 1, FEType(FIRST, libMesh::LAGRANGE));
2083  fe_faces[side_dim]->attach_quadrature_rule(qfaces[side_dim].get());
2084  }
2085 
2086  // We need this to get boundary ids for each boundary face we encounter.
2087  BoundaryInfo & boundary_info = getMesh().get_boundary_info();
2088  std::vector<boundary_id_type> face_ids;
2089 
2090  for (auto & elem : as_range(getMesh().level_elements_begin(0), getMesh().level_elements_end(0)))
2091  {
2092  // dimension of the current element and its normals
2093  unsigned int side_dim = elem->dim() - 1;
2094  const std::vector<Point> & normals = fe_faces[side_dim]->get_normals();
2095 
2096  // loop over element sides
2097  for (unsigned int s = 0; s < elem->n_sides(); s++)
2098  {
2099  // If side is on the boundary
2100  if (elem->neighbor_ptr(s) == nullptr)
2101  {
2102  std::unique_ptr<Elem> side = elem->build_side_ptr(s);
2103 
2104  fe_faces[side_dim]->reinit(elem, s);
2105 
2106  // Get the boundary ID(s) for this side. If there is more
2107  // than 1 boundary id, then we already can't determine a
2108  // unique pairing of sides in this direction, but we'll just
2109  // keep going to keep the logic simple.
2110  boundary_info.boundary_ids(elem, s, face_ids);
2111 
2112  // x-direction faces
2113  if (normals[0].absolute_fuzzy_equals(minus_x))
2114  minus_x_ids[side_dim].insert(face_ids.begin(), face_ids.end());
2115  else if (normals[0].absolute_fuzzy_equals(plus_x))
2116  plus_x_ids[side_dim].insert(face_ids.begin(), face_ids.end());
2117 
2118  // y-direction faces
2119  else if (normals[0].absolute_fuzzy_equals(minus_y))
2120  minus_y_ids[side_dim].insert(face_ids.begin(), face_ids.end());
2121  else if (normals[0].absolute_fuzzy_equals(plus_y))
2122  plus_y_ids[side_dim].insert(face_ids.begin(), face_ids.end());
2123 
2124  // z-direction faces
2125  else if (normals[0].absolute_fuzzy_equals(minus_z))
2126  minus_z_ids[side_dim].insert(face_ids.begin(), face_ids.end());
2127  else if (normals[0].absolute_fuzzy_equals(plus_z))
2128  plus_z_ids[side_dim].insert(face_ids.begin(), face_ids.end());
2129  }
2130  }
2131  }
2132 
2133  // For a distributed mesh, boundaries may be distributed as well. We therefore collect information
2134  // from everyone. If the mesh is already serial, then there is no need to do an allgather. Note
2135  // that this is just going to gather information about what the periodic bc ids are. We are not
2136  // gathering any remote elements or anything like that. It's just that the GhostPointNeighbors
2137  // ghosting functor currently relies on the fact that every process agrees on whether we have
2138  // periodic boundaries; every process that thinks there are periodic boundaries will call
2139  // MeshBase::sub_point_locator which makes a parallel_object_only() assertion (right or wrong). So
2140  // we all need to go there (or not go there)
2141  if (_use_distributed_mesh && !_mesh->is_serial())
2142  {
2143  // Pack all data together so that we send them via one communication
2144  // pair: boundary side --> boundary ids.
2145  std::vector<std::pair<boundary_id_type, boundary_id_type>> vecdata;
2146  // We check boundaries on all dimensions
2147  for (unsigned side_dim = 0; side_dim < dim; ++side_dim)
2148  {
2149  // "6" means: we have at most 6 boundaries. It is true for generated simple mesh
2150  // "detectPairedSidesets" is designed for only simple meshes
2151  for (auto bd = minus_x_ids[side_dim].begin(); bd != minus_x_ids[side_dim].end(); bd++)
2152  vecdata.emplace_back(side_dim * 6 + 0, *bd);
2153 
2154  for (auto bd = plus_x_ids[side_dim].begin(); bd != plus_x_ids[side_dim].end(); bd++)
2155  vecdata.emplace_back(side_dim * 6 + 1, *bd);
2156 
2157  for (auto bd = minus_y_ids[side_dim].begin(); bd != minus_y_ids[side_dim].end(); bd++)
2158  vecdata.emplace_back(side_dim * 6 + 2, *bd);
2159 
2160  for (auto bd = plus_y_ids[side_dim].begin(); bd != plus_y_ids[side_dim].end(); bd++)
2161  vecdata.emplace_back(side_dim * 6 + 3, *bd);
2162 
2163  for (auto bd = minus_z_ids[side_dim].begin(); bd != minus_z_ids[side_dim].end(); bd++)
2164  vecdata.emplace_back(side_dim * 6 + 4, *bd);
2165 
2166  for (auto bd = plus_z_ids[side_dim].begin(); bd != plus_z_ids[side_dim].end(); bd++)
2167  vecdata.emplace_back(side_dim * 6 + 5, *bd);
2168  }
2169 
2170  _communicator.allgather(vecdata, false);
2171 
2172  // Unpack data, and add them into minus/plus_x/y_ids
2173  for (auto pair = vecdata.begin(); pair != vecdata.end(); pair++)
2174  {
2175  // Convert data from the long vector, and add data to separated sets
2176  auto side_dim = pair->first / 6;
2177  auto side = pair->first % 6;
2178 
2179  switch (side)
2180  {
2181  case 0:
2182  minus_x_ids[side_dim].insert(pair->second);
2183  break;
2184  case 1:
2185  plus_x_ids[side_dim].insert(pair->second);
2186  break;
2187  case 2:
2188  minus_y_ids[side_dim].insert(pair->second);
2189  break;
2190  case 3:
2191  plus_y_ids[side_dim].insert(pair->second);
2192  break;
2193  case 4:
2194  minus_z_ids[side_dim].insert(pair->second);
2195  break;
2196  case 5:
2197  plus_z_ids[side_dim].insert(pair->second);
2198  break;
2199  default:
2200  mooseError("Unknown boundary side ", side);
2201  }
2202  }
2203 
2204  } // end if (_use_distributed_mesh && !_need_ghost_ghosted_boundaries)
2205 
2206  for (unsigned side_dim = 0; side_dim < dim; ++side_dim)
2207  {
2208  // If unique pairings were found, fill up the _paired_boundary data
2209  // structure with that information.
2210  if (minus_x_ids[side_dim].size() == 1 && plus_x_ids[side_dim].size() == 1)
2211  _paired_boundary.emplace_back(
2212  std::make_pair(*(minus_x_ids[side_dim].begin()), *(plus_x_ids[side_dim].begin())));
2213  else
2215  "For side dimension " + std::to_string(side_dim) +
2216  " we did not find paired boundaries (sidesets) in X due to the presence of " +
2217  std::to_string(minus_x_ids[side_dim].size()) + " -X normal and " +
2218  std::to_string(plus_x_ids[side_dim].size()) + " +X normal boundaries.");
2219 
2220  if (minus_y_ids[side_dim].size() == 1 && plus_y_ids[side_dim].size() == 1)
2221  _paired_boundary.emplace_back(
2222  std::make_pair(*(minus_y_ids[side_dim].begin()), *(plus_y_ids[side_dim].begin())));
2223  else
2225  "For side dimension " + std::to_string(side_dim) +
2226  " we did not find paired boundaries (sidesets) in Y due to the presence of " +
2227  std::to_string(minus_y_ids[side_dim].size()) + " -Y normal and " +
2228  std::to_string(plus_y_ids[side_dim].size()) + " +Y normal boundaries.");
2229 
2230  if (minus_z_ids[side_dim].size() == 1 && plus_z_ids[side_dim].size() == 1)
2231  _paired_boundary.emplace_back(
2232  std::make_pair(*(minus_z_ids[side_dim].begin()), *(plus_z_ids[side_dim].begin())));
2233  else
2235  "For side dimension " + std::to_string(side_dim) +
2236  " we did not find paired boundaries (sidesets) in Z due to the presence of " +
2237  std::to_string(minus_z_ids[side_dim].size()) + " -Z normal and " +
2238  std::to_string(plus_z_ids[side_dim].size()) + " +Z normal boundaries.");
2239  }
2240 }
std::unique_ptr< FEGenericBase< Real > > build(const unsigned int dim, const FEType &fet)
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i)=0
void mooseInfoRepeated(Args &&... args)
Emit an informational message with the given stringified, concatenated args.
Definition: MooseError.h:398
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:162
void boundary_ids(const Node *node, std::vector< boundary_id_type > &vec_to_fill) const
const Parallel::Communicator & _communicator
const BoundaryInfo & get_boundary_info() const
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
virtual unsigned int n_sides() const=0
const Elem * neighbor_ptr(unsigned int i) const
bool absolute_fuzzy_equals(const T &var1, const T2 &var2, const Real tol=TOLERANCE *TOLERANCE)
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
virtual unsigned short dim() const=0
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
unsigned int mesh_dimension() const
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
std::vector< std::pair< BoundaryID, BoundaryID > > _paired_boundary
A vector holding the paired boundaries for a regular orthogonal mesh.
Definition: MooseMesh.h:1610

◆ determineUseDistributedMesh()

void MooseMesh::determineUseDistributedMesh ( )

Determine whether to use a distributed mesh.

Should be called during construction

Definition at line 2878 of file MooseMesh.C.

Referenced by MooseMesh(), and setParallelType().

2879 {
2880  switch (_parallel_type)
2881  {
2882  case ParallelType::DEFAULT:
2883  // The user did not specify 'parallel_type = XYZ' in the input file,
2884  // so we allow the --distributed-mesh command line arg to possibly turn
2885  // on DistributedMesh. If the command line arg is not present, we pick ReplicatedMesh.
2887  _use_distributed_mesh = true;
2888  break;
2892  _use_distributed_mesh = false;
2893  break;
2895  _use_distributed_mesh = true;
2896  break;
2897  }
2898 
2899  // If the user specifies 'nemesis = true' in the Mesh block, or they are using --use-split,
2900  // we must use DistributedMesh.
2901  if (_is_nemesis || _is_split)
2902  _use_distributed_mesh = true;
2903 }
ParallelType _parallel_type
Can be set to DISTRIBUTED, REPLICATED, or DEFAULT.
Definition: MooseMesh.h:1445
bool _is_nemesis
True if a Nemesis Mesh was read in.
Definition: MooseMesh.h:1496
bool getDistributedMeshOnCommandLine() const
Returns true if the user specified –distributed-mesh (or –parallel-mesh, for backwards compatibilit...
Definition: MooseApp.h:460
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450
const bool _is_split
Whether or not we are using a (pre-)split mesh (automatically DistributedMesh)
Definition: MooseMesh.h:1613
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357
bool _parallel_type_overridden
Definition: MooseMesh.h:1452

◆ dimension()

unsigned int MooseMesh::dimension ( ) const
virtual

◆ dimensionWidth()

Real MooseMesh::dimensionWidth ( unsigned int  component) const

Returns the width of the requested dimension.

Definition at line 2243 of file MooseMesh.C.

Referenced by addPeriodicVariable(), AddPeriodicBCAction::autoTranslationBoundaries(), and effectiveSpatialDimension().

2244 {
2245  return getMaxInDimension(component) - getMinInDimension(component);
2246 }
virtual Real getMaxInDimension(unsigned int component) const
Definition: MooseMesh.C:2258
virtual Real getMinInDimension(unsigned int component) const
Returns the min or max of the requested dimension respectively.
Definition: MooseMesh.C:2249

◆ doingPRefinement() [1/2]

void MooseMesh::doingPRefinement ( bool  doing_p_refinement)
inline

Indicate whether the kind of adaptivity we're doing is p-refinement.

Definition at line 1365 of file MooseMesh.h.

Referenced by SubProblem::doingPRefinement(), Adaptivity::init(), FEProblemBase::init(), ProjectMaterialProperties::onBoundary(), CacheChangedListsThread::onElement(), and ProjectMaterialProperties::onElement().

1365 { _doing_p_refinement = doing_p_refinement; }
bool _doing_p_refinement
Whether we have p-refinement (as opposed to h-refinement)
Definition: MooseMesh.h:1920

◆ doingPRefinement() [2/2]

bool MooseMesh::doingPRefinement ( ) const
inline

Query whether we have p-refinement.

Definition at line 1370 of file MooseMesh.h.

Referenced by buildRefinementAndCoarseningMaps().

1370 { return _doing_p_refinement; }
bool _doing_p_refinement
Whether we have p-refinement (as opposed to h-refinement)
Definition: MooseMesh.h:1920

◆ effectiveSpatialDimension()

unsigned int MooseMesh::effectiveSpatialDimension ( ) const
virtual

Returns the effective spatial dimension determined by the coordinates actually used by the mesh.

This means that a 1D mesh that has non-zero z or y coordinates is actually a 2D or 3D mesh, respectively. Likewise a 2D mesh that has non-zero z coordinates is actually 3D mesh.

Definition at line 2986 of file MooseMesh.C.

2987 {
2988  const Real abs_zero = 1e-12;
2989 
2990  // See if the mesh is completely containd in the z and y planes to calculate effective spatial
2991  // dim
2992  for (unsigned int dim = LIBMESH_DIM; dim >= 1; --dim)
2993  if (dimensionWidth(dim - 1) >= abs_zero)
2994  return dim;
2995 
2996  // If we get here, we have a 1D mesh on the x-axis.
2997  return 1;
2998 }
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:162
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real dimensionWidth(unsigned int component) const
Returns the width of the requested dimension.
Definition: MooseMesh.C:2243

◆ elem() [1/2]

Elem * MooseMesh::elem ( const dof_id_type  i)
virtual

Various accessors (pointers/references) for Elem "i".

If the requested elem is a remote element on a distributed mesh, only the query accessors are valid to call, and they return NULL.

Definition at line 3179 of file MooseMesh.C.

Referenced by addQuadratureNode(), buildCoarseningMap(), buildElemIDInfo(), buildFiniteVolumeInfo(), buildHRefinementAndCoarseningMaps(), buildLowerDMesh(), ConcentricCircleMesh::buildMesh(), AnnularMesh::buildMesh(), RinglebMesh::buildMesh(), SpiralAnnularMesh::buildMesh(), buildPRefinementAndCoarseningMaps(), buildRefinementMap(), cacheInfo(), checkCoordinateSystems(), coarsenedElementChildren(), computeMaxPerElemAndSide(), detectPairedSidesets(), findAdaptivityQpMaps(), getBlocksMaxDimension(), getCoarseningMap(), getElemIDMapping(), getHigherDSide(), getLowerDElem(), getPCoarseningMap(), getPCoarseningMapHelper(), getPCoarseningSideMap(), getPRefinementMap(), getPRefinementMapHelper(), getPRefinementSideMap(), getQuadratureNode(), getRefinementMap(), ghostGhostedBoundaries(), nodeToActiveSemilocalElemMap(), nodeToElemMap(), prepare(), sideWithBoundaryID(), update(), and updateActiveSemiLocalNodeRange().

3180 {
3181  mooseDeprecated("MooseMesh::elem() is deprecated, please use MooseMesh::elemPtr() instead");
3182  return elemPtr(i);
3183 }
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3193
void mooseDeprecated(Args &&... args) const

◆ elem() [2/2]

const Elem * MooseMesh::elem ( const dof_id_type  i) const
virtual

Definition at line 3186 of file MooseMesh.C.

3187 {
3188  mooseDeprecated("MooseMesh::elem() is deprecated, please use MooseMesh::elemPtr() instead");
3189  return elemPtr(i);
3190 }
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3193
void mooseDeprecated(Args &&... args) const

◆ elemInfo()

const ElemInfo & MooseMesh::elemInfo ( const dof_id_type  id) const

Accessor for the elemInfo object for a given element ID.

Definition at line 3951 of file MooseMesh.C.

Referenced by MooseLinearVariableFV< Real >::evaluate(), and MooseLinearVariableFV< Real >::evaluateGradient().

3952 {
3953  return libmesh_map_find(_elem_to_elem_info, id);
3954 }
std::unordered_map< dof_id_type, ElemInfo > _elem_to_elem_info
Map connecting elems with their corresponding ElemInfo, we use the element ID as the key...
Definition: MooseMesh.h:1623

◆ elemInfoVector()

const std::vector<const ElemInfo *>& MooseMesh::elemInfoVector ( ) const
inline

Accessor for the element info objects owned by this process.

Definition at line 1199 of file MooseMesh.h.

1199 { return _elem_info; }
std::vector< const ElemInfo * > _elem_info
Holds only those ElemInfo objects that have processor_id equal to this process&#39;s id, e.g.
Definition: MooseMesh.h:1627

◆ elemPtr() [1/2]

Elem * MooseMesh::elemPtr ( const dof_id_type  i)
virtual

Definition at line 3193 of file MooseMesh.C.

Referenced by FEProblemBase::addGhostedElem(), SystemBase::augmentSendList(), NodalPatchRecoveryAuxBase::blockRestrictElements(), NodalPatchRecovery::compute(), BoundaryMarker::computeElementMarker(), ProjectionAux::computeValue(), NodalPatchRecoveryAuxBase::computeValue(), elem(), ProjectionAux::elemOnNodeVariableIsDefinedOn(), ActivateElementsUserObjectBase::execute(), NonlinearSystemBase::findImplicitGeometricCouplingEntries(), NearestNodeLocator::findNodes(), ElementSubdomainModifierBase::findReinitializedElemsAndNodes(), ElementSubdomainModifierBase::gatherMovingBoundaryChanges(), ElementSubdomainModifierBase::gatherPatchElements(), NodalPatchRecoveryBase::gatherRequestList(), NodalPatchRecoveryBase::getCoefficients(), NodeElemConstraint::getConnectedDofIndices(), NodeFaceConstraint::getConnectedDofIndices(), FEProblemBase::getDiracElements(), PenetrationThread::getInfoForFacesWithCommonNodes(), ActivateElementsUserObjectBase::getNewlyActivatedElementRange(), ActivateElementsUserObjectBase::getNewlyActivatedNodeRange(), DiracKernelBase::hasPointsOnElem(), ActivateElementsUserObjectBase::isNewlyActivated(), Moose::Mortar::loopOverMortarSegments(), ElementSubdomainModifierBase::nodeIsNewlyReinitialized(), SecondaryNeighborhoodThread::operator()(), PenetrationThread::operator()(), FEProblemBase::prepareFace(), FEProblemBase::reinitDirac(), FEProblemBase::reinitElem(), FEProblemBase::reinitElemFaceRef(), FEProblemBase::reinitElemNeighborAndLowerD(), ElementSubdomainModifierBase::reinitializedElemRange(), FEProblemBase::reinitLowerDElem(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNeighborFaceRef(), NonlinearSystemBase::reinitNodeFace(), FEProblemBase::setCurrentLowerDElem(), ElementSubdomainModifierBase::storeOverriddenDofValues(), and NearestNodeLocator::updatePatch().

3194 {
3195  return getMesh().elem_ptr(i);
3196 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual const Elem * elem_ptr(const dof_id_type i) const=0

◆ elemPtr() [2/2]

const Elem * MooseMesh::elemPtr ( const dof_id_type  i) const
virtual

Definition at line 3199 of file MooseMesh.C.

3200 {
3201  return getMesh().elem_ptr(i);
3202 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual const Elem * elem_ptr(const dof_id_type i) const=0

◆ elemTypes()

MooseEnum MooseMesh::elemTypes ( )
static

returns MooseMesh element type options

Definition at line 3986 of file MooseMesh.C.

3987 {
3989  "EDGE EDGE2 EDGE3 EDGE4 QUAD QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX HEX8 HEX20 HEX27 TET4 TET10 "
3990  "PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14");
3991  return elemTypes;
3992 }
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
static MooseEnum elemTypes()
returns MooseMesh element type options
Definition: MooseMesh.C:3986

◆ enabled()

virtual bool MooseObject::enabled ( ) const
inlinevirtualinherited

Return the enabled status of the object.

Reimplemented in EigenKernel.

Definition at line 49 of file MooseObject.h.

Referenced by EigenKernel::enabled().

49 { return _enabled; }
const bool & _enabled
Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.
Definition: MooseObject.h:73

◆ errorIfDistributedMesh()

void MooseMesh::errorIfDistributedMesh ( std::string  name) const

Generate a unified error message if the underlying libMesh mesh is a DistributedMesh.

Clients of MooseMesh can use this function to throw an error if they know they don't work with DistributedMesh.

See, for example, the NodalVariableValue class.

Definition at line 3697 of file MooseMesh.C.

Referenced by BoundaryPreservedMarker::BoundaryPreservedMarker(), ElementsAlongLine::ElementsAlongLine(), ElementsAlongPlane::ElementsAlongPlane(), FunctorPositions::initialize(), FunctorTimes::initialize(), IntersectionPointsAlongLine::IntersectionPointsAlongLine(), LineMaterialSamplerBase< Real >::LineMaterialSamplerBase(), MultiAppGeometricInterpolationTransfer::MultiAppGeometricInterpolationTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NodeElemConstraintBase::NodeElemConstraintBase(), NonlocalIntegratedBC::NonlocalIntegratedBC(), NonlocalKernel::NonlocalKernel(), PatternedMesh::PatternedMesh(), StitchedMesh::StitchedMesh(), and TiledMesh::TiledMesh().

3698 {
3700  mooseError("Cannot use ",
3701  name,
3702  " with DistributedMesh!\n",
3703  "Consider specifying parallel_type = 'replicated' in your input file\n",
3704  "to prevent it from being run with DistributedMesh.");
3705 }
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ errorPrefix()

std::string MooseBase::errorPrefix ( const std::string &  ) const
inlineinherited

Deprecated message prefix; the error type is no longer used.

Definition at line 264 of file MooseBase.h.

264 { return messagePrefix(); }
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:256

◆ faceInfo() [1/2]

const std::vector< const FaceInfo * > & MooseMesh::faceInfo ( ) const
inline

Accessor for local FaceInfo objects.

Definition at line 2216 of file MooseMesh.h.

Referenced by LayeredSideDiffusiveFluxAverage::computeQpIntegral(), SideIntegralVariableUserObject::computeQpIntegral(), ParsedAux::computeValue(), InterfaceUserObject::execute(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), SideUserObject::getFaceInfos(), and InternalSideUserObject::getFaceInfos().

2217 {
2218  return _face_info;
2219 }
std::vector< const FaceInfo * > _face_info
Holds only those FaceInfo objects that have processor_id equal to this process&#39;s id, e.g.
Definition: MooseMesh.h:1635

◆ faceInfo() [2/2]

const FaceInfo* MooseMesh::faceInfo ( const Elem *  elem,
unsigned int  side 
) const

Accessor for the local FaceInfo object on the side of one element. Returns null if ghosted.

◆ findAdaptivityQpMaps()

void MooseMesh::findAdaptivityQpMaps ( const Elem template_elem,
libMesh::QBase qrule,
libMesh::QBase qrule_face,
std::vector< std::vector< QpMap >> &  refinement_map,
std::vector< std::pair< unsigned int, QpMap >> &  coarsen_map,
int  parent_side,
int  child,
int  child_side 
)
private

Given an elem type, get maps that tell us what qp's are closest to each other between a parent and it's children.

This is mainly used for mapping stateful material properties during adaptivity.

There are 3 cases here:

  1. Volume to volume (parent_side = -1, child = -1, child_side = -1)
  2. Parent side to child side (parent_side = 0+, child = -1, child_side = 0+)
  3. Child side to parent volume (parent_side = -1, child = 0+, child_side = 0+)

Case 3 only happens under refinement (need to invent data at internal child sides).

Parameters
template_elemAn element of the type that we need to find the maps for
qruleThe quadrature rule that we need to find the maps for
qrule_faceThe face quadrature rule that we need to find the maps for
refinement_mapThe map to use when an element gets split
coarsen_mapThe map to use when an element is coarsened.
parent_side- the id of the parent's side
child- the id of the child element
child_side- The id of the child's side

Definition at line 2671 of file MooseMesh.C.

Referenced by buildCoarseningMap(), and buildRefinementMap().

2679 {
2680  TIME_SECTION("findAdaptivityQpMaps", 5);
2681 
2683  mesh.skip_partitioning(true);
2684 
2685  unsigned int dim = template_elem->dim();
2687 
2688  for (unsigned int i = 0; i < template_elem->n_nodes(); ++i)
2689  mesh.add_point(template_elem->point(i));
2690 
2691  Elem * elem = mesh.add_elem(Elem::build(template_elem->type()).release());
2692 
2693  for (unsigned int i = 0; i < template_elem->n_nodes(); ++i)
2694  elem->set_node(i, mesh.node_ptr(i));
2695 
2696  std::unique_ptr<FEBase> fe(FEBase::build(dim, FEType()));
2697  fe->get_phi();
2698  const std::vector<Point> & q_points_volume = fe->get_xyz();
2699 
2700  std::unique_ptr<FEBase> fe_face(FEBase::build(dim, FEType()));
2701  fe_face->get_phi();
2702  const std::vector<Point> & q_points_face = fe_face->get_xyz();
2703 
2704  fe->attach_quadrature_rule(&qrule);
2705  fe_face->attach_quadrature_rule(&qrule_face);
2706 
2707  // The current q_points (locations in *physical* space)
2708  const std::vector<Point> * q_points;
2709 
2710  if (parent_side != -1)
2711  {
2712  fe_face->reinit(elem, parent_side);
2713  q_points = &q_points_face;
2714  }
2715  else
2716  {
2717  fe->reinit(elem);
2718  q_points = &q_points_volume;
2719  }
2720 
2721  std::vector<Point> parent_ref_points;
2722 
2723  libMesh::FEMap::inverse_map(elem->dim(), elem, *q_points, parent_ref_points);
2724  libMesh::MeshRefinement mesh_refinement(mesh);
2725  mesh_refinement.uniformly_refine(1);
2726 
2727  // A map from the child element index to the locations of all the child's quadrature points in
2728  // *reference* space. Note that we use a map here instead of a vector because the caller can
2729  // pass an explicit child index. We are not guaranteed to have a sequence from [0, n_children)
2730  std::map<unsigned int, std::vector<Point>> child_to_ref_points;
2731 
2732  unsigned int n_children = elem->n_children();
2733 
2734  refinement_map.resize(n_children);
2735 
2736  std::vector<unsigned int> children;
2737 
2738  if (child != -1) // Passed in a child explicitly
2739  children.push_back(child);
2740  else
2741  {
2742  children.resize(n_children);
2743  for (unsigned int child = 0; child < n_children; ++child)
2744  children[child] = child;
2745  }
2746 
2747  for (unsigned int i = 0; i < children.size(); ++i)
2748  {
2749  unsigned int child = children[i];
2750 
2751  if ((parent_side != -1 && !elem->is_child_on_side(child, parent_side)))
2752  continue;
2753 
2754  const Elem * child_elem = elem->child_ptr(child);
2755 
2756  if (child_side != -1)
2757  {
2758  fe_face->reinit(child_elem, child_side);
2759  q_points = &q_points_face;
2760  }
2761  else
2762  {
2763  fe->reinit(child_elem);
2764  q_points = &q_points_volume;
2765  }
2766 
2767  std::vector<Point> child_ref_points;
2768 
2769  libMesh::FEMap::inverse_map(elem->dim(), elem, *q_points, child_ref_points);
2770  child_to_ref_points[child] = child_ref_points;
2771 
2772  std::vector<QpMap> & qp_map = refinement_map[child];
2773 
2774  // Find the closest parent_qp to each child_qp
2775  mapPoints(child_ref_points, parent_ref_points, qp_map);
2776  }
2777 
2778  coarsen_map.resize(parent_ref_points.size());
2779 
2780  // For each parent qp find the closest child qp
2781  for (unsigned int child = 0; child < n_children; child++)
2782  {
2783  if (parent_side != -1 && !elem->is_child_on_side(child, child_side))
2784  continue;
2785 
2786  std::vector<Point> & child_ref_points = child_to_ref_points[child];
2787 
2788  std::vector<QpMap> qp_map;
2789 
2790  // Find all of the closest points from parent_qp to _THIS_ child's qp
2791  mapPoints(parent_ref_points, child_ref_points, qp_map);
2792 
2793  // Check those to see if they are closer than what we currently have for each point
2794  for (unsigned int parent_qp = 0; parent_qp < parent_ref_points.size(); ++parent_qp)
2795  {
2796  std::pair<unsigned int, QpMap> & child_and_map = coarsen_map[parent_qp];
2797  unsigned int & closest_child = child_and_map.first;
2798  QpMap & closest_map = child_and_map.second;
2799 
2800  QpMap & current_map = qp_map[parent_qp];
2801 
2802  if (current_map._distance < closest_map._distance)
2803  {
2804  closest_child = child;
2805  closest_map = current_map;
2806  }
2807  }
2808  }
2809 }
std::unique_ptr< FEGenericBase< Real > > build(const unsigned int dim, const FEType &fet)
virtual Node *& set_node(const unsigned int i)
void skip_partitioning(bool skip)
static Point inverse_map(const unsigned int dim, const Elem *elem, const Point &p, const Real tolerance=TOLERANCE, const bool secure=true, const bool extra_checks=true)
virtual bool is_child_on_side(const unsigned int c, const unsigned int s) const=0
MeshBase & mesh
Helper object for holding qp mapping info.
Definition: MooseMesh.h:73
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:162
virtual unsigned int n_children() const=0
const Parallel::Communicator & _communicator
virtual Node * add_point(const Point &p, const dof_id_type id=DofObject::invalid_id, const processor_id_type proc_id=DofObject::invalid_processor_id)=0
void mapPoints(const std::vector< Point > &from, const std::vector< Point > &to, std::vector< QpMap > &qp_map)
Find the closest points that map "from" to "to" and fill up "qp_map".
Definition: MooseMesh.C:2640
virtual unsigned int n_nodes() const=0
virtual Elem * add_elem(Elem *e)=0
void set_mesh_dimension(unsigned char d)
virtual unsigned short dim() const=0
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
virtual const Node * node_ptr(const dof_id_type i) const=0
virtual ElemType type() const=0
const Point & point(const unsigned int i) const
Real _distance
The distance between them.
Definition: MooseMesh.h:85
const Elem * child_ptr(unsigned int i) const

◆ flagInvalidSolutionInternal()

template<bool warning>
template void SolutionInvalidInterface::flagInvalidSolutionInternal< false > ( const InvalidSolutionID  invalid_solution_id) const
protectedinherited

Set solution invalid mark for the given solution ID.

Definition at line 41 of file SolutionInvalidInterface.C.

43 {
44  mooseAssert(
45  warning == moose::internal::getSolutionInvalidityRegistry().item(invalid_solution_id).warning,
46  "Inconsistent warning flag");
47  auto & solution_invalidity = _si_moose_base.getMooseApp().solutionInvalidity();
48  if constexpr (!warning)
50  solution_invalidity.printDebug(invalid_solution_id);
51  return solution_invalidity.flagInvalidSolutionInternal(invalid_solution_id);
52 }
const FEProblemBase * _si_problem
A pointer to FEProblem base.
void printDebug(InvalidSolutionID _invalid_solution_id) const
Immediately print the section and message for debug purpose.
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition: MooseBase.h:87
SolutionInvalidity & solutionInvalidity()
Get the SolutionInvalidity for this app.
Definition: MooseApp.h:179
SolutionInvalidityRegistry & getSolutionInvalidityRegistry()
Get the global SolutionInvalidityRegistry singleton.
bool immediatelyPrintInvalidSolution() const
Whether or not the solution invalid warnings are printed out immediately.
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ freeBndElems()

void MooseMesh::freeBndElems ( )
protected

Definition at line 417 of file MooseMesh.C.

Referenced by buildBndElemList(), and ~MooseMesh().

418 {
419  // free memory
420  for (auto & belem : _bnd_elems)
421  delete belem;
422 
423  for (auto & it : _bnd_elem_ids)
424  it.second.clear();
425 
426  _bnd_elem_ids.clear();
427  _bnd_elem_range.reset();
428 }
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > > _bnd_elem_range
Definition: MooseMesh.h:1529
std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > _bnd_elem_ids
Map of set of elem IDs connected to each boundary.
Definition: MooseMesh.h:1572
std::vector< BndElement * > _bnd_elems
array of boundary elems
Definition: MooseMesh.h:1567

◆ freeBndNodes()

void MooseMesh::freeBndNodes ( )
protected

Definition at line 398 of file MooseMesh.C.

Referenced by buildNodeList(), and ~MooseMesh().

399 {
400  // free memory
401  for (auto & bnode : _bnd_nodes)
402  delete bnode;
403 
404  for (auto & it : _node_set_nodes)
405  it.second.clear();
406 
407  _node_set_nodes.clear();
408 
409  for (auto & it : _bnd_node_ids)
410  it.second.clear();
411 
412  _bnd_node_ids.clear();
413  _bnd_node_range.reset();
414 }
std::map< boundary_id_type, std::set< dof_id_type > > _bnd_node_ids
Map of sets of node IDs in each boundary.
Definition: MooseMesh.h:1564
std::map< boundary_id_type, std::vector< dof_id_type > > _node_set_nodes
list of nodes that belongs to a specified nodeset: indexing [nodeset_id] -> [array of node ids] ...
Definition: MooseMesh.h:1583
std::vector< BndNode * > _bnd_nodes
array of boundary nodes
Definition: MooseMesh.h:1560
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > > _bnd_node_range
Definition: MooseMesh.h:1527

◆ getActiveLocalElementRange()

ConstElemRange * MooseMesh::getActiveLocalElementRange ( )

Return pointers to range objects for various types of ranges (local nodes, boundary elems, etc.).

Definition at line 1288 of file MooseMesh.C.

Referenced by AuxiliarySystem::computeElementalVarsHelper(), FEProblemBase::computeIndicators(), FEProblemBase::computeMarkers(), FEProblemBase::computeUserObjectsInternal(), PointwiseRenormalizeVector::execute(), ElementSubdomainModifierBase::gatherPatchElements(), FEProblemBase::getCurrentAlgebraicElementRange(), FEProblemBase::initialSetup(), meshChanged(), DOFMapOutput::output(), MeshInfo::possiblyAddSubdomainInfo(), FEProblemBase::projectSolution(), SystemBase::setVariableGlobalDoFs(), FixedPointSolve::solve(), TransientMultiApp::solveStep(), ElementSubdomainModifierBase::storeOverriddenDofValues(), updateActiveSemiLocalNodeRange(), Adaptivity::updateErrorVectors(), FEProblemBase::updateMaxQps(), and SystemBase::zeroVariables().

1289 {
1291  {
1292  TIME_SECTION("getActiveLocalElementRange", 5);
1293 
1294  _active_local_elem_range = std::make_unique<ConstElemRange>(
1295  getMesh().active_local_elements_begin(), getMesh().active_local_elements_end(), GRAIN_SIZE);
1296  }
1297 
1298  return _active_local_elem_range.get();
1299 }
std::unique_ptr< libMesh::ConstElemRange > _active_local_elem_range
A range for use with threading.
Definition: MooseMesh.h:1521
static const int GRAIN_SIZE
Definition: MooseMesh.C:65
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ getActiveNodeRange()

NodeRange * MooseMesh::getActiveNodeRange ( )

Definition at line 1302 of file MooseMesh.C.

Referenced by VariableCondensationPreconditioner::getDofToCondense(), and meshChanged().

1303 {
1304  if (!_active_node_range)
1305  {
1306  TIME_SECTION("getActiveNodeRange", 5);
1307 
1308  _active_node_range = std::make_unique<NodeRange>(
1309  getMesh().active_nodes_begin(), getMesh().active_nodes_end(), GRAIN_SIZE);
1310  }
1311 
1312  return _active_node_range.get();
1313 }
std::unique_ptr< libMesh::NodeRange > _active_node_range
Definition: MooseMesh.h:1524
static const int GRAIN_SIZE
Definition: MooseMesh.C:65
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ getActiveSemiLocalNodeRange()

SemiLocalNodeRange * MooseMesh::getActiveSemiLocalNodeRange ( ) const

Definition at line 1316 of file MooseMesh.C.

1317 {
1318  mooseAssert(_active_semilocal_node_range,
1319  "_active_semilocal_node_range has not been created yet!");
1320 
1321  return _active_semilocal_node_range.get();
1322 }
std::unique_ptr< SemiLocalNodeRange > _active_semilocal_node_range
Definition: MooseMesh.h:1523

◆ getAllElemIDs()

std::set< dof_id_type > MooseMesh::getAllElemIDs ( unsigned int  elem_id_index) const

Return all the unique element IDs for an extra element integer with its index.

Definition at line 1179 of file MooseMesh.C.

Referenced by getElemIDMapping().

1180 {
1181  std::set<dof_id_type> unique_ids;
1182  for (auto & pair : _block_id_mapping[elem_id_index])
1183  for (auto & id : pair.second)
1184  unique_ids.insert(id);
1185  return unique_ids;
1186 }
std::vector< std::unordered_map< SubdomainID, std::set< dof_id_type > > > _block_id_mapping
Unique element integer IDs for each subdomain and each extra element integers.
Definition: MooseMesh.h:1871

◆ getAxisymmetricRadialCoord()

unsigned int MooseMesh::getAxisymmetricRadialCoord ( ) const

Returns the desired radial direction for RZ coordinate transformation.

Returns
The coordinate direction for the radial direction

Definition at line 4374 of file MooseMesh.C.

Referenced by SubProblem::getAxisymmetricRadialCoord(), and ComputeLinearFVGreenGaussGradientVolumeThread::operator()().

4375 {
4377  mooseError("getAxisymmetricRadialCoord() should not be called if "
4378  "setGeneralAxisymmetricCoordAxes() has been called.");
4379 
4380  if (_rz_coord_axis == 0)
4381  return 1; // if the rotation axis is x (0), then the radial direction is y (1)
4382  else
4383  return 0; // otherwise the radial direction is assumed to be x, i.e., the rotation axis is y
4384 }
bool usingGeneralAxisymmetricCoordAxes() const
Returns true if general axisymmetric coordinate axes are being used.
Definition: MooseMesh.C:4359
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
unsigned int _rz_coord_axis
Storage for RZ axis selection.
Definition: MooseMesh.h:1904

◆ getBase()

const std::string& MooseBase::getBase ( ) const
inlineinherited
Returns
The registered base for this object (set via InputParameters::registerBase())

Definition at line 147 of file MooseBase.h.

Referenced by Factory::copyConstruct(), and MooseBase::uniqueParameterName().

147 { return _pars.getBase(); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
const std::string & getBase() const

◆ getBlockConnectedBlocks()

const std::set< SubdomainID > & MooseMesh::getBlockConnectedBlocks ( const SubdomainID  subdomain_id) const

Get the list of subdomains neighboring a given subdomain.

Parameters
subdomain_idThe boundary ID you want to get the subdomain IDs for.
Returns
All subdomain IDs neighboring a given subdomain

Definition at line 3634 of file MooseMesh.C.

3635 {
3636  const auto it = _sub_to_data.find(subdomain_id);
3637 
3638  if (it == _sub_to_data.end())
3639  mooseError("Unable to find subdomain ID: ", subdomain_id, '.');
3640 
3641  return it->second.neighbor_subs;
3642 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
std::unordered_map< SubdomainID, SubdomainData > _sub_to_data
Holds a map from subdomain ids to associated data.
Definition: MooseMesh.h:1827

◆ getBlocksMaxDimension()

unsigned int MooseMesh::getBlocksMaxDimension ( const std::vector< SubdomainName > &  blocks) const

Returns the maximum element dimension on the given blocks.

Definition at line 3001 of file MooseMesh.C.

Referenced by BlockRestrictable::initializeBlockRestrictable().

3002 {
3003  const auto & mesh = getMesh();
3004 
3005  // Take a shortcut if possible
3006  if (const auto & elem_dims = mesh.elem_dimensions(); mesh.is_prepared() && elem_dims.size() == 1)
3007  return *elem_dims.begin();
3008 
3009  unsigned short dim = 0;
3010  const auto subdomain_ids = getSubdomainIDs(blocks);
3011  const std::set<SubdomainID> subdomain_ids_set(subdomain_ids.begin(), subdomain_ids.end());
3012  for (const auto & elem : mesh.active_subdomain_set_elements_ptr_range(subdomain_ids_set))
3013  dim = std::max(dim, elem->dim());
3014 
3015  // Get the maximumal globally
3017  return dim;
3018 }
bool is_prepared() const
char ** blocks
MeshBase & mesh
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:162
const Parallel::Communicator & _communicator
std::vector< SubdomainID > getSubdomainIDs(const std::vector< SubdomainName > &subdomain_names) const
Get the associated subdomainIDs for the subdomain names that are passed in.
Definition: MooseMesh.C:1787
auto max(const L &left, const R &right)
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
const std::set< unsigned char > & elem_dimensions() const
void max(const T &r, T &o, Request &req) const
virtual unsigned short dim() const=0
virtual SimpleRange< element_iterator > active_subdomain_set_elements_ptr_range(std::set< subdomain_id_type > ss)=0
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ getBoundariesToActiveSemiLocalElemIds()

const std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > & MooseMesh::getBoundariesToActiveSemiLocalElemIds ( ) const

Returns a map of boundaries to ids of elements on the boundary.

Definition at line 1375 of file MooseMesh.C.

Referenced by getBoundariesToElems().

1376 {
1377  return _bnd_elem_ids;
1378 }
std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > _bnd_elem_ids
Map of set of elem IDs connected to each boundary.
Definition: MooseMesh.h:1572

◆ getBoundariesToElems()

const std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > & MooseMesh::getBoundariesToElems ( ) const

Returns a map of boundaries to ids of elements on the boundary.

Definition at line 1367 of file MooseMesh.C.

1368 {
1369  mooseDeprecated("MooseMesh::getBoundariesToElems is deprecated, "
1370  "use MooseMesh::getBoundariesToActiveSemiLocalElemIds");
1372 }
void mooseDeprecated(Args &&... args) const
const std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > & getBoundariesToActiveSemiLocalElemIds() const
Returns a map of boundaries to ids of elements on the boundary.
Definition: MooseMesh.C:1375

◆ getBoundaryActiveNeighborElemIds()

std::unordered_set< dof_id_type > MooseMesh::getBoundaryActiveNeighborElemIds ( BoundaryID  bid) const

Return all ids of neighbors of elements which have a side which is part of a sideset.

Note that boundaries are sided, this is on the neighbor side. For the sideset side, use getBoundariesActiveLocalElemIds. Note that while the element is local and active, the neighbor is not guaranteed to be local, it could be ghosted. Note that if the neighbor is not ghosted, is a remote_elem, then it will not be included

Parameters
bidthe id of the sideset of interest

Definition at line 1392 of file MooseMesh.C.

1393 {
1394  // Vector of boundary elems is updated every mesh update
1395  std::unordered_set<dof_id_type> neighbor_elems;
1396  for (const auto & bnd_elem : _bnd_elems)
1397  {
1398  const auto & [elem_ptr, elem_side, elem_bid] = *bnd_elem;
1399  if (elem_bid == bid)
1400  {
1401  const auto * neighbor = elem_ptr->neighbor_ptr(elem_side);
1402  // Dont add fully remote elements, ghosted is fine
1403  if (neighbor && neighbor != libMesh::remote_elem)
1404  {
1405  // handle mesh refinement, only return active elements near the boundary
1406  if (neighbor->active())
1407  neighbor_elems.insert(neighbor->id());
1408  else
1409  {
1410  std::vector<const Elem *> family;
1411  neighbor->active_family_tree_by_neighbor(family, elem_ptr);
1412  for (const auto & child_neighbor : family)
1413  neighbor_elems.insert(child_neighbor->id());
1414  }
1415  }
1416  }
1417  }
1418 
1419  return neighbor_elems;
1420 }
std::vector< BndElement * > _bnd_elems
array of boundary elems
Definition: MooseMesh.h:1567
const RemoteElem * remote_elem

◆ getBoundaryActiveSemiLocalElemIds()

std::unordered_set< dof_id_type > MooseMesh::getBoundaryActiveSemiLocalElemIds ( BoundaryID  bid) const

Return all ids of elements which have a side which is part of a sideset.

Note that boundaries are sided.

Parameters
bidthe id of the sideset of interest

Definition at line 1381 of file MooseMesh.C.

1382 {
1383  // The boundary to element map is computed on every mesh update
1384  const auto it = _bnd_elem_ids.find(bid);
1385  if (it == _bnd_elem_ids.end())
1386  // Boundary is not local to this domain, return an empty set
1387  return std::unordered_set<dof_id_type>{};
1388  return it->second;
1389 }
std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > _bnd_elem_ids
Map of set of elem IDs connected to each boundary.
Definition: MooseMesh.h:1572

◆ getBoundaryConnectedBlocks()

std::set< SubdomainID > MooseMesh::getBoundaryConnectedBlocks ( const BoundaryID  bid) const

Get the list of subdomains associated with the given boundary.

Parameters
bidThe boundary ID you want to get the subdomain IDs for.
Returns
All subdomain IDs associated with given boundary ID

Definition at line 3601 of file MooseMesh.C.

Referenced by DomainUserObject::DomainUserObject(), getInterfaceConnectedBlocks(), and NodeFaceConstraint::getSecondaryConnectedBlocks().

3602 {
3603  std::set<SubdomainID> subdomain_ids;
3604  for (const auto & [sub_id, data] : _sub_to_data)
3605  if (data.boundary_ids.find(bid) != data.boundary_ids.end())
3606  subdomain_ids.insert(sub_id);
3607 
3608  return subdomain_ids;
3609 }
std::unordered_map< SubdomainID, SubdomainData > _sub_to_data
Holds a map from subdomain ids to associated data.
Definition: MooseMesh.h:1827

◆ getBoundaryConnectedSecondaryBlocks()

std::set< SubdomainID > MooseMesh::getBoundaryConnectedSecondaryBlocks ( const BoundaryID  bid) const

Get the list of subdomains associated with the given boundary of its secondary side.

Parameters
bidThe boundary ID you want to get the subdomain IDs for.
Returns
All subdomain IDs associated with given boundary ID

Definition at line 3612 of file MooseMesh.C.

Referenced by DomainUserObject::DomainUserObject().

3613 {
3614  std::set<SubdomainID> subdomain_ids;
3615  for (const auto & it : _neighbor_subdomain_boundary_ids)
3616  if (it.second.find(bid) != it.second.end())
3617  subdomain_ids.insert(it.first);
3618 
3619  return subdomain_ids;
3620 }
std::unordered_map< SubdomainID, std::set< BoundaryID > > _neighbor_subdomain_boundary_ids
Holds a map from neighbor subomdain ids to the boundary ids that are attached to it.
Definition: MooseMesh.h:1830

◆ getBoundaryElementRange()

ConstBndElemRange * MooseMesh::getBoundaryElementRange ( )

Definition at line 1353 of file MooseMesh.C.

Referenced by AuxiliarySystem::computeElementalVarsHelper(), DMMooseGetEmbedding_Private(), GeometricSearchData::generateQuadratureNodes(), FEProblemBase::initialSetup(), meshChanged(), and GeometricSearchData::updateQuadratureNodes().

1354 {
1355  if (!_bnd_elem_range)
1356  {
1357  TIME_SECTION("getBoundaryElementRange", 5);
1358 
1359  _bnd_elem_range =
1360  std::make_unique<ConstBndElemRange>(bndElemsBegin(), bndElemsEnd(), GRAIN_SIZE);
1361  }
1362 
1363  return _bnd_elem_range.get();
1364 }
virtual bnd_elem_iterator bndElemsEnd()
Definition: MooseMesh.C:1619
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > > _bnd_elem_range
Definition: MooseMesh.h:1529
virtual bnd_elem_iterator bndElemsBegin()
Return iterators to the beginning/end of the boundary elements list.
Definition: MooseMesh.C:1611
static const int GRAIN_SIZE
Definition: MooseMesh.C:65

◆ getBoundaryID()

BoundaryID MooseMesh::getBoundaryID ( const BoundaryName &  boundary_name) const

Get the associated BoundaryID for the boundary name.

Parameters
boundary_nameThe name of the boundary.
Returns
the boundary id from the passed boundary name.

Definition at line 1742 of file MooseMesh.C.

Referenced by AddPeriodicBCAction::act(), TiledMesh::buildMesh(), StitchedMesh::buildMesh(), PatternedMesh::buildMesh(), DMSetUp_Moose_Pre(), GeometricSearchData::getNearestNodeLocator(), GeometricSearchData::getPenetrationLocator(), GeometricSearchData::getQuadratureNearestNodeLocator(), GeometricSearchData::getQuadraturePenetrationLocator(), LinearNodalConstraint::LinearNodalConstraint(), LowerBoundNodalKernel::LowerBoundNodalKernel(), NodalScalarKernel::NodalScalarKernel(), prepare(), EqualValueBoundaryConstraint::updateConstrainedNodes(), and UpperBoundNodalKernel::UpperBoundNodalKernel().

1743 {
1744  if (boundary_name == "ANY_BOUNDARY_ID")
1745  mooseError("Please use getBoundaryIDs() when passing \"ANY_BOUNDARY_ID\"");
1746 
1747  return MooseMeshUtils::getBoundaryID(boundary_name, getMesh());
1748 }
BoundaryID getBoundaryID(const BoundaryName &boundary_name, const MeshBase &mesh)
Gets the boundary ID associated with the given BoundaryName.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ getBoundaryIDs() [1/3]

std::vector<BoundaryID> MooseMesh::getBoundaryIDs ( const Elem *const  elem,
const unsigned short int  side 
) const

◆ getBoundaryIDs() [2/3]

const std::set< BoundaryID > & MooseMesh::getBoundaryIDs ( ) const

Returns a const reference to a set of all user-specified boundary IDs.

On a distributed mesh this will only include boundary IDs which exist on local or ghosted elements; a copy and a call to _communicator.set_union() will be necessary to get the global ID set.

Definition at line 3029 of file MooseMesh.C.

Referenced by cacheInfo().

3030 {
3032 }
const BoundaryInfo & get_boundary_info() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
const std::set< boundary_id_type > & get_boundary_ids() const

◆ getBoundaryIDs() [3/3]

std::vector< BoundaryID > MooseMesh::getBoundaryIDs ( const std::vector< BoundaryName > &  boundary_name,
bool  generate_unknown = false 
) const

Get the associated BoundaryID for the boundary names that are passed in.

Parameters
boundary_nameThe names of the boundaries.
Returns
the boundary ids from the passed boundary names.

Definition at line 1773 of file MooseMesh.C.

1775 {
1777  getMesh(), boundary_name, generate_unknown, _mesh_boundary_ids);
1778 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::vector< BoundaryID > getBoundaryIDs(const libMesh::MeshBase &mesh, const std::vector< BoundaryName > &boundary_name, bool generate_unknown, const std::set< BoundaryID > &mesh_boundary_ids)
Gets the boundary IDs with their names.
std::set< BoundaryID > _mesh_boundary_ids
A set of boundary IDs currently present in the mesh.
Definition: MooseMesh.h:1551

◆ getBoundaryName()

const std::string & MooseMesh::getBoundaryName ( BoundaryID  boundary_id) const

Return the name of the boundary given the id.

Definition at line 1842 of file MooseMesh.C.

Referenced by addPeriodicVariable(), FEProblemBase::initialSetup(), and NonlinearThread::printBoundaryExecutionInformation().

1843 {
1844  const BoundaryInfo & boundary_info = getMesh().get_boundary_info();
1845 
1846  // We need to figure out if this boundary is a sideset or nodeset
1847  if (boundary_info.get_side_boundary_ids().count(boundary_id))
1848  return boundary_info.get_sideset_name(boundary_id);
1849  else
1850  return boundary_info.get_nodeset_name(boundary_id);
1851 }
const std::set< boundary_id_type > & get_side_boundary_ids() const
const BoundaryInfo & get_boundary_info() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
const std::string & get_nodeset_name(boundary_id_type id) const
const std::string & get_sideset_name(boundary_id_type id) const

◆ getBoundaryNodeRange()

ConstBndNodeRange * MooseMesh::getBoundaryNodeRange ( )

Definition at line 1339 of file MooseMesh.C.

Referenced by AuxiliarySystem::computeMortarNodalVars(), AuxiliarySystem::computeNodalVarsHelper(), DMMooseGetEmbedding_Private(), NearestNodeLocator::findNodes(), FEProblemBase::getCurrentAlgebraicBndNodeRange(), ActivateElementsUserObjectBase::getNewlyActivatedBndNodeRange(), FEProblemBase::initialSetup(), meshChanged(), FEProblemBase::projectSolution(), ElementSubdomainModifierBase::reinitializedBndNodeRange(), and NearestNodeLocator::updatePatch().

1340 {
1341  if (!_bnd_node_range)
1342  {
1343  TIME_SECTION("getBoundaryNodeRange", 5);
1344 
1345  _bnd_node_range =
1346  std::make_unique<ConstBndNodeRange>(bndNodesBegin(), bndNodesEnd(), GRAIN_SIZE);
1347  }
1348 
1349  return _bnd_node_range.get();
1350 }
virtual bnd_node_iterator bndNodesEnd()
Definition: MooseMesh.C:1603
virtual bnd_node_iterator bndNodesBegin()
Return iterators to the beginning/end of the boundary nodes list.
Definition: MooseMesh.C:1595
static const int GRAIN_SIZE
Definition: MooseMesh.C:65
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > > _bnd_node_range
Definition: MooseMesh.h:1527

◆ getCheckedPointerParam()

template<typename T >
T MooseBase::getCheckedPointerParam ( const std::string &  name,
const std::string &  error_string = "" 
) const
inherited

Verifies that the requested parameter exists and is not NULL and returns it to the caller.

The template parameter must be a pointer or an error will be thrown.

Definition at line 432 of file MooseBase.h.

433 {
434  return _pars.getCheckedPointerParam<T>(name, error_string);
435 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
T getCheckedPointerParam(const std::string &name, const std::string &error_string="") const
Verifies that the requested parameter exists and is not NULL and returns it to the caller...
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103

◆ getCoarseningMap()

const std::vector< std::pair< unsigned int, QpMap > > & MooseMesh::getCoarseningMap ( const Elem elem,
int  input_side 
)

Get the coarsening map for a given element type.

This will tell you what quadrature points to copy from and to for stateful material properties on newly created elements from Adaptivity.

Parameters
elemThe element that represents the element type you need the coarsening map for.
input_sideThe side to map

Definition at line 2629 of file MooseMesh.C.

Referenced by ProjectMaterialProperties::onBoundary(), and ProjectMaterialProperties::onElement().

2630 {
2631  std::pair<int, ElemType> the_pair(input_side, elem.type());
2632 
2633  if (_elem_type_to_coarsening_map.find(the_pair) == _elem_type_to_coarsening_map.end())
2634  mooseError("Could not find a suitable qp refinement map!");
2635 
2636  return _elem_type_to_coarsening_map[the_pair];
2637 }
std::map< std::pair< int, libMesh::ElemType >, std::vector< std::pair< unsigned int, QpMap > > > _elem_type_to_coarsening_map
Holds mappings for volume to volume and parent side to child side Map key:
Definition: MooseMesh.h:1806
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
virtual ElemType type() const=0

◆ getConstructNodeListFromSideList()

bool MooseMesh::getConstructNodeListFromSideList ( )
inline

Return construct node list from side list boolean.

Definition at line 1428 of file MooseMesh.h.

Referenced by SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater().

bool _construct_node_list_from_side_list
Whether or not to allow generation of nodesets from sidesets.
Definition: MooseMesh.h:1849

◆ getCoordSystem() [1/2]

Moose::CoordinateSystemType MooseMesh::getCoordSystem ( SubdomainID  sid) const

Get the coordinate system type, e.g.

xyz, rz, or r-spherical, for the provided subdomain id sid

Definition at line 4255 of file MooseMesh.C.

Referenced by SubProblem::getCoordSystem(), and ComputeLinearFVGreenGaussGradientVolumeThread::operator()().

4256 {
4257  auto it = _coord_sys.find(sid);
4258  if (it != _coord_sys.end())
4259  return (*it).second;
4260  else
4261  mooseError("Requested subdomain ", sid, " does not exist.");
4262 }
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
Definition: MooseMesh.h:1901
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ getCoordSystem() [2/2]

const std::map< SubdomainID, Moose::CoordinateSystemType > & MooseMesh::getCoordSystem ( ) const

Get the map from subdomain ID to coordinate system type, e.g.

xyz, rz, or r-spherical

Definition at line 4287 of file MooseMesh.C.

Referenced by setGeneralAxisymmetricCoordAxes().

4288 {
4289  return _coord_sys;
4290 }
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
Definition: MooseMesh.h:1901

◆ getDataFileName()

std::string DataFileInterface::getDataFileName ( const std::string &  param) const
inherited

Deprecated method.

The data file paths are now automatically set within the InputParameters object, so using getParam<DataFileName>("param_name") is now sufficient.

Definition at line 21 of file DataFileInterface.C.

22 {
23  _parent.mooseDeprecated("getDataFileName() is deprecated. The file path is now directly set "
24  "within the InputParameters.\nUse getParam<DataFileName>(\"",
25  param,
26  "\") instead.");
27  return _parent.getParam<DataFileName>(param);
28 }
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition: MooseBase.h:388
void mooseDeprecated(Args &&... args) const
Definition: MooseBase.h:314
const ParallelParamObject & _parent

◆ getDataFileNameByName()

std::string DataFileInterface::getDataFileNameByName ( const std::string &  relative_path) const
inherited

Deprecated method.

Use getDataFilePath() instead.

Definition at line 31 of file DataFileInterface.C.

32 {
33  _parent.mooseDeprecated("getDataFileNameByName() is deprecated. Use getDataFilePath(\"",
34  relative_path,
35  "\") instead.");
36  return getDataFilePath(relative_path);
37 }
std::string getDataFilePath(const std::string &relative_path) const
Returns the path of a data file for a given relative file path.
void mooseDeprecated(Args &&... args) const
Definition: MooseBase.h:314
const ParallelParamObject & _parent

◆ getDataFilePath()

std::string DataFileInterface::getDataFilePath ( const std::string &  relative_path) const
inherited

Returns the path of a data file for a given relative file path.

This can be used for hardcoded datafile names and will search the same locations as getDataFileName

Definition at line 40 of file DataFileInterface.C.

Referenced by DataFileInterface::getDataFileNameByName().

41 {
42  // This should only ever be used with relative paths. There is no point to
43  // use this search path with an absolute path.
44  if (std::filesystem::path(relative_path).is_absolute())
45  _parent.mooseWarning("While using getDataFilePath(\"",
46  relative_path,
47  "\"): This API should not be used for absolute paths.");
48 
49  // This will search the data paths for this relative path
50  std::optional<std::string> error;
51  Moose::DataFileUtils::Path found_path;
52  {
53  // Throw on error so that if getPath() fails, we can throw an error
54  // with the context of _parent.mooseError()
55  Moose::ScopedThrowOnError scoped_throw_on_error;
56 
57  try
58  {
59  found_path = Moose::DataFileUtils::getPath(relative_path);
60  }
61  catch (std::exception & e)
62  {
63  error = e.what();
64  }
65  }
66 
67  if (error)
68  _parent.mooseError(*error);
69 
70  mooseAssert(found_path.context == Moose::DataFileUtils::Context::DATA,
71  "Should only ever obtain data");
72  mooseAssert(found_path.data_name, "Should be set");
73 
74  const std::string msg =
75  "Using data file '" + found_path.path + "' from " + *found_path.data_name + " data";
76  _parent.mooseInfo(msg);
77 
78  return found_path.path;
79 }
void mooseInfo(Args &&... args) const
Definition: MooseBase.h:321
Context context
Context for the file (where it came from)
Definition: DataFileUtils.h:48
Representation of a data file path.
Definition: DataFileUtils.h:36
Path getPath(std::string path, const std::optional< std::string > &base=std::optional< std::string >())
Get the data path for a given path, searching the registered data.
Definition: DataFileUtils.C:22
std::optional< std::string > data_name
The name of the data registry the file came from (with context == DATA)
Definition: DataFileUtils.h:50
Scoped helper for setting Moose::_throw_on_error during this scope.
Definition: Moose.h:297
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:299
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
const ParallelParamObject & _parent

◆ getDisplaceNodeListBySideList()

bool MooseMesh::getDisplaceNodeListBySideList ( )
inline

Return displace node list by side list boolean.

Definition at line 1431 of file MooseMesh.h.

bool _displace_node_list_by_side_list
Whether or not to displace unrelated nodesets by nodesets constructed from sidesets.
Definition: MooseMesh.h:1853

◆ getElementIDIndex()

unsigned int MooseMesh::getElementIDIndex ( const std::string &  id_name) const
inline

Return the accessing integer for an extra element integer with its name.

Definition at line 2200 of file MooseMesh.h.

Referenced by areElemIDsIdentical().

2201 {
2202  if (!hasElementID(id_name))
2203  mooseError("Mesh does not have element ID for ", id_name);
2204  return getMesh().get_elem_integer_index(id_name);
2205 }
bool hasElementID(const std::string &id_name) const
Whether mesh has an extra element integer with a given name.
Definition: MooseMesh.h:2194
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ getElemIDMapping()

std::unordered_map< dof_id_type, std::set< dof_id_type > > MooseMesh::getElemIDMapping ( const std::string &  from_id_name,
const std::string &  to_id_name 
) const

Definition at line 1150 of file MooseMesh.C.

1151 {
1152  auto & mesh_base = getMesh();
1153 
1154  if (!mesh_base.has_elem_integer(from_id_name))
1155  mooseError("Mesh does not have the element integer name '", from_id_name, "'");
1156  if (!mesh_base.has_elem_integer(to_id_name))
1157  mooseError("Mesh does not have the element integer name '", to_id_name, "'");
1158 
1159  const auto id1 = mesh_base.get_elem_integer_index(from_id_name);
1160  const auto id2 = mesh_base.get_elem_integer_index(to_id_name);
1161 
1162  std::unordered_map<dof_id_type, std::set<dof_id_type>> id_map;
1163  for (const auto id : getAllElemIDs(id1))
1164  id_map[id] = std::set<dof_id_type>();
1165 
1166  for (const auto & elem : mesh_base.active_local_element_ptr_range())
1167  id_map[elem->get_extra_integer(id1)].insert(elem->get_extra_integer(id2));
1168 
1169  for (auto & [id, ids] : id_map)
1170  {
1171  libmesh_ignore(id); // avoid overzealous gcc 9.4 unused var warning
1172  comm().set_union(ids);
1173  }
1174 
1175  return id_map;
1176 }
const Parallel::Communicator & comm() const
void libmesh_ignore(const Args &...)
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::set< dof_id_type > getAllElemIDs(unsigned int elem_id_index) const
Return all the unique element IDs for an extra element integer with its index.
Definition: MooseMesh.C:1179
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
dof_id_type get_extra_integer(const unsigned int index) const
void set_union(T &data, const unsigned int root_id) const

◆ getElemIDsOnBlocks()

std::set< dof_id_type > MooseMesh::getElemIDsOnBlocks ( unsigned int  elem_id_index,
const std::set< SubdomainID > &  blks 
) const

Return all the unique element IDs for an extra element integer with its index on a set of subdomains.

Definition at line 1189 of file MooseMesh.C.

1190 {
1191  std::set<dof_id_type> unique_ids;
1192  for (auto & blk : blks)
1193  {
1194  auto it = _block_id_mapping[elem_id_index].find(blk);
1195  if (it == _block_id_mapping[elem_id_index].end())
1196  mooseError("Block ", blk, " is not available on the mesh");
1197 
1198  for (auto & mid : it->second)
1199  unique_ids.insert(mid);
1200  }
1201  return unique_ids;
1202 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
std::vector< std::unordered_map< SubdomainID, std::set< dof_id_type > > > _block_id_mapping
Unique element integer IDs for each subdomain and each extra element integers.
Definition: MooseMesh.h:1871

◆ getFileName()

virtual std::string MooseMesh::getFileName ( ) const
inlinevirtual

Returns the name of the mesh file read to produce this mesh if any or an empty string otherwise.

Reimplemented in FileMesh, and TiledMesh.

Definition at line 1074 of file MooseMesh.h.

1074 { return ""; }

◆ getGeneralAxisymmetricCoordAxis()

const std::pair< Point, RealVectorValue > & MooseMesh::getGeneralAxisymmetricCoordAxis ( SubdomainID  subdomain_id) const

Gets the general axisymmetric coordinate axis for a block.

Parameters
[in]subdomain_idSubdomain ID for which to get axisymmetric coordinate axis

Definition at line 4349 of file MooseMesh.C.

4350 {
4351  auto it = _subdomain_id_to_rz_coord_axis.find(subdomain_id);
4352  if (it != _subdomain_id_to_rz_coord_axis.end())
4353  return (*it).second;
4354  else
4355  mooseError("Requested subdomain ", subdomain_id, " does not exist.");
4356 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
std::unordered_map< SubdomainID, std::pair< Point, RealVectorValue > > _subdomain_id_to_rz_coord_axis
Map of subdomain ID to general axisymmetric axis.
Definition: MooseMesh.h:1907

◆ getGhostedBoundaries()

const std::set< unsigned int > & MooseMesh::getGhostedBoundaries ( ) const

Return a writable reference to the set of ghosted boundary IDs.

Definition at line 3321 of file MooseMesh.C.

3322 {
3323  return _ghosted_boundaries;
3324 }
std::set< unsigned int > _ghosted_boundaries
Definition: MooseMesh.h:1585

◆ getGhostedBoundaryInflation()

const std::vector< Real > & MooseMesh::getGhostedBoundaryInflation ( ) const

Return a writable reference to the _ghosted_boundaries_inflation vector.

Definition at line 3327 of file MooseMesh.C.

Referenced by NearestNodeLocator::findNodes(), and NearestNodeLocator::updatePatch().

3328 {
3330 }
std::vector< Real > _ghosted_boundaries_inflation
Definition: MooseMesh.h:1586

◆ getGhostingPatchSize()

unsigned int MooseMesh::getGhostingPatchSize ( ) const
inline

Getter for the ghosting_patch_size parameter.

Definition at line 622 of file MooseMesh.h.

Referenced by NearestNodeLocator::findNodes(), and NearestNodeLocator::updatePatch().

622 { return _ghosting_patch_size; }
unsigned int _ghosting_patch_size
The number of nearest neighbors to consider for ghosting purposes when iteration patch update strateg...
Definition: MooseMesh.h:1592

◆ getHigherDSide()

unsigned int MooseMesh::getHigherDSide ( const Elem elem) const

Returns the local side ID of the interior parent aligned with the lower dimensional element.

Definition at line 1762 of file MooseMesh.C.

1763 {
1764  auto it = _lower_d_elem_to_higher_d_elem_side.find(elem);
1765 
1766  if (it != _lower_d_elem_to_higher_d_elem_side.end())
1767  return it->second;
1768  else
1769  return libMesh::invalid_uint;
1770 }
const unsigned int invalid_uint
std::unordered_map< const Elem *, unsigned short int > _lower_d_elem_to_higher_d_elem_side
Definition: MooseMesh.h:1839
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ getHitNode()

const hit::Node* MooseBase::getHitNode ( ) const
inlineinherited
Returns
The block-level hit node for this object, if any

Definition at line 136 of file MooseBase.h.

Referenced by FEProblemBase::addAnyRedistributers(), MooseBase::callMooseError(), MooseBase::getHitNode(), and MooseBase::messagePrefix().

136 { return getHitNode(_pars); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
const hit::Node * getHitNode() const
Definition: MooseBase.h:136

◆ getInflatedProcessorBoundingBox()

BoundingBox MooseMesh::getInflatedProcessorBoundingBox ( Real  inflation_multiplier = 0.01) const

Get a (slightly inflated) processor bounding box.

Parameters
inflation_multiplierThis amount will be multiplied by the length of the diagonal of the bounding box to find the amount to inflate the bounding box by in all directions.

Definition at line 3499 of file MooseMesh.C.

Referenced by PositionsFunctorValueSampler::execute(), PointVariableSamplerBase::execute(), CartesianGridDivision::initialize(), and RadialAverage::updateCommunicationLists().

3500 {
3501  // Grab a bounding box to speed things up. Note that
3502  // local_bounding_box is *not* equivalent to processor_bounding_box
3503  // with processor_id() except in serial.
3505 
3506  // Inflate the bbox just a bit to deal with roundoff
3507  // Adding 1% of the diagonal size in each direction on each end
3508  Real inflation_amount = inflation_multiplier * (bbox.max() - bbox.min()).norm();
3509  Point inflation(inflation_amount, inflation_amount, inflation_amount);
3510 
3511  bbox.first -= inflation; // min
3512  bbox.second += inflation; // max
3513 
3514  return bbox;
3515 }
libMesh::BoundingBox create_local_bounding_box(const MeshBase &mesh)
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
const Point & min() const
auto norm(const T &a) -> decltype(std::abs(a))
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Point & max() const

◆ getInterfaceConnectedBlocks()

std::set< SubdomainID > MooseMesh::getInterfaceConnectedBlocks ( const BoundaryID  bid) const

Get the list of subdomains contacting the given boundary.

Parameters
bidThe boundary ID you want to get the subdomain IDs for.
Returns
All subdomain IDs contacting given boundary ID

Definition at line 3623 of file MooseMesh.C.

3624 {
3625  std::set<SubdomainID> subdomain_ids = getBoundaryConnectedBlocks(bid);
3626  for (const auto & it : _neighbor_subdomain_boundary_ids)
3627  if (it.second.find(bid) != it.second.end())
3628  subdomain_ids.insert(it.first);
3629 
3630  return subdomain_ids;
3631 }
std::unordered_map< SubdomainID, std::set< BoundaryID > > _neighbor_subdomain_boundary_ids
Holds a map from neighbor subomdain ids to the boundary ids that are attached to it.
Definition: MooseMesh.h:1830
std::set< SubdomainID > getBoundaryConnectedBlocks(const BoundaryID bid) const
Get the list of subdomains associated with the given boundary.
Definition: MooseMesh.C:3601

◆ getKokkosMesh()

const Moose::Kokkos::Mesh* MooseMesh::getKokkosMesh ( ) const
inline

Accessor for Kokkos mesh object.

Definition at line 666 of file MooseMesh.h.

Referenced by BlockRestrictable::initializeBlockRestrictable().

666 { return _kokkos_mesh.get(); }
std::unique_ptr< Moose::Kokkos::Mesh > _kokkos_mesh
Pointer to Kokkos mesh object.
Definition: MooseMesh.h:1459

◆ getLocalNodeRange()

ConstNodeRange * MooseMesh::getLocalNodeRange ( )

Definition at line 1325 of file MooseMesh.C.

Referenced by AuxiliarySystem::computeNodalVarsHelper(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::getCurrentAlgebraicNodeRange(), FEProblemBase::initialSetup(), and meshChanged().

1326 {
1327  if (!_local_node_range)
1328  {
1329  TIME_SECTION("getLocalNodeRange", 5);
1330 
1331  _local_node_range = std::make_unique<ConstNodeRange>(
1332  getMesh().local_nodes_begin(), getMesh().local_nodes_end(), GRAIN_SIZE);
1333  }
1334 
1335  return _local_node_range.get();
1336 }
static const int GRAIN_SIZE
Definition: MooseMesh.C:65
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::unique_ptr< libMesh::ConstNodeRange > _local_node_range
Definition: MooseMesh.h:1525

◆ getLowerDElem()

const Elem * MooseMesh::getLowerDElem ( const Elem ,
unsigned short  int 
) const

Returns a const pointer to a lower dimensional element that corresponds to a side of a higher dimensional element.

This relationship is established through an internal_parent; if there is no lowerDElem, nullptr is returned.

Definition at line 1751 of file MooseMesh.C.

Referenced by GhostLowerDElems::operator()(), DisplacedProblem::reinitElemNeighborAndLowerD(), and FEProblemBase::reinitElemNeighborAndLowerD().

1752 {
1753  auto it = _higher_d_elem_side_to_lower_d_elem.find(std::make_pair(elem, side));
1754 
1755  if (it != _higher_d_elem_side_to_lower_d_elem.end())
1756  return it->second;
1757  else
1758  return nullptr;
1759 }
std::unordered_map< std::pair< const Elem *, unsigned short int >, const Elem * > _higher_d_elem_side_to_lower_d_elem
Holds a map from a high-order element side to its corresponding lower-d element.
Definition: MooseMesh.h:1838
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ getLowerDElemMap()

const std::unordered_map< std::pair< const Elem *, unsigned short int >, const Elem * > & MooseMesh::getLowerDElemMap ( ) const
inline

This function attempts to return the map from a high-order element side to its corresponding lower-d element.

Definition at line 2234 of file MooseMesh.h.

2235 {
2237 }
std::unordered_map< std::pair< const Elem *, unsigned short int >, const Elem * > _higher_d_elem_side_to_lower_d_elem
Holds a map from a high-order element side to its corresponding lower-d element.
Definition: MooseMesh.h:1838

◆ getMaxInDimension()

Real MooseMesh::getMaxInDimension ( unsigned int  component) const
virtual

Reimplemented in AnnularMesh, and GeneratedMesh.

Definition at line 2258 of file MooseMesh.C.

Referenced by dimensionWidth(), GeneratedMesh::getMaxInDimension(), AnnularMesh::getMaxInDimension(), and PropertyReadFile::PropertyReadFile().

2259 {
2260  mooseAssert(_mesh, "The MeshBase has not been constructed");
2261  mooseAssert(component < _bounds.size(), "Requested dimension out of bounds");
2262 
2263  return _bounds[component][MAX];
2264 }
std::vector< std::vector< Real > > _bounds
The bounds in each dimension of the mesh for regular orthogonal meshes.
Definition: MooseMesh.h:1607
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ getMaxLeafSize()

unsigned int MooseMesh::getMaxLeafSize ( ) const
inline

Getter for the maximum leaf size parameter.

Definition at line 627 of file MooseMesh.h.

Referenced by NearestNodeLocator::findNodes(), and NearestNodeLocator::updatePatch().

627 { return _max_leaf_size; }
unsigned int _max_leaf_size
Definition: MooseMesh.h:1595

◆ getMaxNodesPerElem()

unsigned int MooseMesh::getMaxNodesPerElem ( ) const
inline

Get the maximum number of nodes per element.

Definition at line 1154 of file MooseMesh.h.

1154 { return _max_nodes_per_elem; }
unsigned int _max_nodes_per_elem
The maximum number of nodes per element.
Definition: MooseMesh.h:1883

◆ getMaxNodesPerSide()

unsigned int MooseMesh::getMaxNodesPerSide ( ) const
inline

Get the maximum number of nodes per side.

Definition at line 1159 of file MooseMesh.h.

1159 { return _max_nodes_per_side; }
unsigned int _max_nodes_per_side
The maximum number of nodes per side.
Definition: MooseMesh.h:1886

◆ getMaxSidesPerElem()

unsigned int MooseMesh::getMaxSidesPerElem ( ) const
inline

Get the maximum number of sides per element.

Definition at line 1149 of file MooseMesh.h.

1149 { return _max_sides_per_elem; }
unsigned int _max_sides_per_elem
The maximum number of sides per element.
Definition: MooseMesh.h:1880

◆ getMesh() [1/4]

MeshBase & MooseMesh::getMesh ( )

Accessor for the underlying libMesh Mesh object.

Definition at line 3528 of file MooseMesh.C.

Referenced by CopyMeshPartitioner::_do_partition(), AddPeriodicBCAction::act(), activeLocalElementsBegin(), activeLocalElementsEnd(), Adaptivity::adaptMesh(), FEProblemBase::addAnyRedistributers(), addQuadratureNode(), addUniqueNode(), MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), NonlinearSystemBase::assembleScalingVector(), Assembly::Assembly(), AuxKernelBase::AuxKernelBase(), buildActiveSideList(), buildBndElemList(), MFEMMesh::buildDummyMooseMesh(), buildElemIDInfo(), buildFiniteVolumeInfo(), buildHRefinementAndCoarseningMaps(), buildLowerDMesh(), TiledMesh::buildMesh(), FileMesh::buildMesh(), AnnularMesh::buildMesh(), RinglebMesh::buildMesh(), SpiralAnnularMesh::buildMesh(), ConcentricCircleMesh::buildMesh(), GeneratedMesh::buildMesh(), StitchedMesh::buildMesh(), PatternedMesh::buildMesh(), ImageMesh::buildMesh2D(), ImageMesh::buildMesh3D(), buildNodeList(), buildNodeListFromSideList(), buildPeriodicNodeMap(), buildPeriodicNodeSets(), buildPRefinementAndCoarseningMaps(), buildSideList(), cacheChangedLists(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), cacheInfo(), changeBoundaryId(), checkCoordinateSystems(), computeMaxPerElemAndSide(), NonlinearSystemBase::constraintJacobians(), NonlinearSystemBase::constraintResiduals(), PenetrationThread::createInfoForElem(), MortarInterfaceWarehouse::createMortarInterface(), detectOrthogonalDimRanges(), detectPairedSidesets(), dimension(), ExtraElementIntegerDivision::divisionIndex(), FunctorBinnedValuesDivision::divisionIndex(), SubdomainsDivision::divisionIndex(), DumpObjectsProblem::dumpVariableHelper(), ElementalVariableValue::ElementalVariableValue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementMaterialSampler::ElementMaterialSampler(), elemPtr(), ElemSideNeighborLayersTester::execute(), NodalNormalsCorner::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), MultiAppUserObjectTransfer::execute(), NodalNormalsPreprocessor::execute(), ExtraElementIntegerDivision::ExtraElementIntegerDivision(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), QuadraturePointMultiApp::fillPositions(), CentroidMultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), SidesetAroundSubdomainUpdater::finalize(), ActivateElementsUserObjectBase::finalize(), ElementSubdomainModifierBase::gatherMovingBoundaryChanges(), ElementSubdomainModifierBase::gatherMovingBoundaryChangesHelper(), getActiveLocalElementRange(), getActiveNodeRange(), getBlocksMaxDimension(), getBoundaryID(), getBoundaryIDs(), getBoundaryName(), getElementIDIndex(), getElemIDMapping(), FEProblemBase::getEvaluableElementRange(), getInflatedProcessorBoundingBox(), getLocalNodeRange(), SubProblem::getMaterialPropertyBlockNames(), SubProblem::getMaterialPropertyBoundaryNames(), getNodeList(), FEProblemBase::getNonlinearEvaluableElementRange(), getPointLocator(), getSubdomainID(), getSubdomainIDs(), getSubdomainName(), ghostGhostedBoundaries(), Exodus::handleExodusIOMeshRenumbering(), hasElementID(), init(), DisplacedProblem::UpdateDisplacedMeshThread::init(), VerifyElementUniqueID::initialize(), VerifyNodalUniqueID::initialize(), ExtraElementIntegerDivision::initialize(), ElementCentroidPositions::initialize(), ElementGroupCentroidPositions::initialize(), FunctorPositions::initialize(), FunctorTimes::initialize(), NodePositions::initialize(), QuadraturePointsPositions::initialize(), FunctorExtremaPositions::initialize(), ParsedDownSelectionPositions::initialize(), MultiAppDofCopyTransfer::initialSetup(), NodalVariableValue::initialSetup(), FEProblemBase::initialSetup(), SampledOutput::initSample(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), LinearNodalConstraint::LinearNodalConstraint(), localNodesBegin(), localNodesEnd(), Moose::Mortar::loopOverMortarSegments(), maxElemId(), maxNodeId(), GhostingUserObject::meshChanged(), RadialAverage::meshChanged(), DisplacedProblem::meshChanged(), FEProblemBase::meshChanged(), MooseMesh(), NearestNodeLocator::nearestNode(), nElem(), nNodes(), NodalPatchRecovery::NodalPatchRecovery(), NodalVariableValue::NodalVariableValue(), nodeToActiveSemilocalElemMap(), nodeToElemMap(), ComputeNodalUserObjectsThread::onNode(), ProxyRelationshipManager::operator()(), MortarUserObjectThread::operator()(), PenetrationThread::operator()(), ComputeMortarFunctor::operator()(), XDA::output(), Exodus::outputEmptyTimestep(), Exodus::outputNodalVariables(), prepare(), BoundaryPreservedMarker::preserveBoundary(), printInfo(), queryElemPtr(), queryNodePtr(), FileMesh::read(), PropertyReadFile::readData(), RedistributeProperties::redistribute(), SubProblem::restrictionBoundaryCheckName(), SubProblem::restrictionSubdomainCheckName(), setBoundaryName(), NonlinearSystemBase::setConstraintSecondaryValues(), XFEMInterface::setDisplacedMesh(), ActivateElementsUserObjectBase::setNewBoundayName(), setPartitionerHelper(), setSubdomainName(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), sideWithBoundaryID(), MoveNodesToGeometryModifierBase::snapNodes(), MultiAppDofCopyTransfer::transfer(), DisplacedProblem::undisplaceMesh(), update(), updateActiveSemiLocalNodeRange(), EqualValueBoundaryConstraint::updateConstrainedNodes(), Adaptivity::updateErrorVectors(), RandomData::updateGenerators(), DisplacedProblem::updateMesh(), SampledOutput::updateSample(), and VariableCondensationPreconditioner::VariableCondensationPreconditioner().

3529 {
3530  mooseAssert(_mesh, "Mesh hasn't been created");
3531  return *_mesh;
3532 }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ getMesh() [2/4]

MeshBase& MooseMesh::getMesh ( const std::string &  name)

◆ getMesh() [3/4]

const MeshBase & MooseMesh::getMesh ( ) const

Definition at line 3535 of file MooseMesh.C.

3536 {
3537  mooseAssert(_mesh, "Mesh hasn't been created");
3538  return *_mesh;
3539 }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ getMesh() [4/4]

const MeshBase& MooseMesh::getMesh ( const std::string &  name) const

◆ getMeshPtr()

const MeshBase * MooseMesh::getMeshPtr ( ) const

Definition at line 3522 of file MooseMesh.C.

Referenced by buildTypedMesh(), RelationshipManager::init(), and GhostBoundary::operator()().

3523 {
3524  return _mesh.get();
3525 }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ getMinInDimension()

Real MooseMesh::getMinInDimension ( unsigned int  component) const
virtual

Returns the min or max of the requested dimension respectively.

Reimplemented in AnnularMesh, and GeneratedMesh.

Definition at line 2249 of file MooseMesh.C.

Referenced by dimensionWidth(), GeneratedMesh::getMinInDimension(), AnnularMesh::getMinInDimension(), and PropertyReadFile::PropertyReadFile().

2250 {
2251  mooseAssert(_mesh, "The MeshBase has not been constructed");
2252  mooseAssert(component < _bounds.size(), "Requested dimension out of bounds");
2253 
2254  return _bounds[component][MIN];
2255 }
std::vector< std::vector< Real > > _bounds
The bounds in each dimension of the mesh for regular orthogonal meshes.
Definition: MooseMesh.h:1607
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ getMooseApp()

MooseApp& MooseBase::getMooseApp ( ) const
inlineinherited

Get the MooseApp this class is associated with.

Definition at line 87 of file MooseBase.h.

Referenced by ChainControlSetupAction::act(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultSteadyStateConvergence(), FEProblemBase::advanceState(), ParsedChainControl::buildFunction(), ReporterTransferInterface::checkHasReporterValue(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), Coupleable::checkWritableVar(), ComponentPhysicsInterface::ComponentPhysicsInterface(), Coupleable::Coupleable(), MortarInterfaceWarehouse::createMortarInterface(), EigenProblem::doFreeNonlinearPowerIterations(), Terminator::execute(), FEProblemSolve::FEProblemSolve(), SolutionInvalidInterface::flagInvalidSolutionInternal(), ChainControl::getChainControlDataSystem(), DefaultConvergenceBase::getSharedExecutionerParam(), ChainControlDataPostprocessor::initialSetup(), MaterialPropertyInterface::MaterialPropertyInterface(), MooseVariableDataFV< OutputType >::MooseVariableDataFV(), ProgressOutput::output(), PetscOutputInterface::petscLinearOutput(), PetscOutputInterface::petscNonlinearOutput(), PetscOutputInterface::PetscOutputInterface(), PostprocessorInterface::postprocessorsAdded(), MultiApp::preTransfer(), Reporter::Reporter(), ReporterInterface::reportersAdded(), MultiApp::restore(), and VectorPostprocessorInterface::vectorPostprocessorsAdded().

87 { return _app; }
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357

◆ getNodeBlockIds()

const std::set< SubdomainID > & MooseMesh::getNodeBlockIds ( const Node node) const

Return list of blocks to which the given node belongs.

Definition at line 1549 of file MooseMesh.C.

Referenced by ComputeNodalUserObjectsThread::onNode(), ComputeNodalKernelsThread::onNode(), ComputeNodalKernelJacobiansThread::onNode(), ComputeInitialConditionThread::operator()(), and MoveNodesToGeometryModifierBase::snapNodes().

1550 {
1551  auto it = _block_node_list.find(node.id());
1552 
1553  if (it == _block_node_list.end())
1554  mooseError("Unable to find node: ", node.id(), " in any block list.");
1555 
1556  return it->second;
1557 }
std::map< dof_id_type, std::set< SubdomainID > > _block_node_list
list of nodes that belongs to a specified block (domain)
Definition: MooseMesh.h:1580
dof_id_type id() const
virtual const Node & node(const dof_id_type i) const
Various accessors (pointers/references) for Node "i".
Definition: MooseMesh.C:847
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ getNodeList()

const std::vector< dof_id_type > & MooseMesh::getNodeList ( boundary_id_type  nodeset_id) const

Return a writable reference to a vector of node IDs that belong to nodeset_id.

Definition at line 3550 of file MooseMesh.C.

Referenced by LinearNodalConstraint::LinearNodalConstraint(), NodalScalarKernel::NodalScalarKernel(), MoveNodesToGeometryModifierBase::snapNodes(), and EqualValueBoundaryConstraint::updateConstrainedNodes().

3551 {
3552  std::map<boundary_id_type, std::vector<dof_id_type>>::const_iterator it =
3553  _node_set_nodes.find(nodeset_id);
3554 
3555  if (it == _node_set_nodes.end())
3556  {
3557  // On a distributed mesh we might not know about a remote nodeset,
3558  // so we'll return an empty vector and hope the nodeset exists
3559  // elsewhere.
3560  if (!getMesh().is_serial())
3561  {
3562  static const std::vector<dof_id_type> empty_vec;
3563  return empty_vec;
3564  }
3565  // On a replicated mesh we should know about every nodeset and if
3566  // we're asked for one that doesn't exist then it must be a bug.
3567  else
3568  {
3569  mooseError("Unable to nodeset ID: ", nodeset_id, '.');
3570  }
3571  }
3572 
3573  return it->second;
3574 }
std::map< boundary_id_type, std::vector< dof_id_type > > _node_set_nodes
list of nodes that belongs to a specified nodeset: indexing [nodeset_id] -> [array of node ids] ...
Definition: MooseMesh.h:1583
virtual bool is_serial() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ getNormalByBoundaryID()

const RealVectorValue & MooseMesh::getNormalByBoundaryID ( BoundaryID  id) const

Returns the normal vector associated with a given BoundaryID.

It's only valid to call this when AddAllSideSetsByNormals is active.

Definition at line 2862 of file MooseMesh.C.

2863 {
2864  mooseAssert(_boundary_to_normal_map.get() != nullptr, "Boundary To Normal Map not built!");
2865 
2866  // Note: Boundaries that are not in the map (existing boundaries) will default
2867  // construct a new RealVectorValue - (x,y,z)=(0, 0, 0)
2868  return (*_boundary_to_normal_map)[id];
2869 }
std::unique_ptr< std::map< BoundaryID, RealVectorValue > > _boundary_to_normal_map
The boundary to normal map - valid only when AddAllSideSetsByNormals is active.
Definition: MooseMesh.h:1557

◆ getPairedBoundaryMapping()

const std::pair< BoundaryID, BoundaryID > * MooseMesh::getPairedBoundaryMapping ( unsigned int  component)

This function attempts to return the paired boundary ids for the given component.

For example, in a generated 2D mesh, passing 0 for the "x" component will return (3, 1).

Parameters
component- An integer representing the desired component (dimension)
Returns
std::pair pointer - The matching boundary pairs for the passed component

Definition at line 2343 of file MooseMesh.C.

Referenced by addPeriodicVariable(), and AddPeriodicBCAction::autoTranslationBoundaries().

2344 {
2346  mooseError("Trying to retrieve automatic paired mapping for a mesh that is not regular and "
2347  "orthogonal");
2348 
2349  mooseAssert(component < dimension(), "Requested dimension out of bounds");
2350 
2351  if (_paired_boundary.empty())
2353 
2354  if (component < _paired_boundary.size())
2355  return &_paired_boundary[component];
2356  else
2357  return nullptr;
2358 }
void detectPairedSidesets()
This routine detects paired sidesets of a regular orthogonal mesh (.i.e.
Definition: MooseMesh.C:2049
virtual unsigned int dimension() const
Returns MeshBase::mesh_dimension(), (not MeshBase::spatial_dimension()!) of the underlying libMesh me...
Definition: MooseMesh.C:2980
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
std::vector< std::pair< BoundaryID, BoundaryID > > _paired_boundary
A vector holding the paired boundaries for a regular orthogonal mesh.
Definition: MooseMesh.h:1610
bool _regular_orthogonal_mesh
Boolean indicating whether this mesh was detected to be regular and orthogonal.
Definition: MooseMesh.h:1604

◆ getParallelType()

ParallelType MooseMesh::getParallelType ( ) const
inline
Returns
The parallel type

Definition at line 1019 of file MooseMesh.h.

Referenced by MultiAppDofCopyTransfer::initialSetup().

1019 { return _parallel_type; }
ParallelType _parallel_type
Can be set to DISTRIBUTED, REPLICATED, or DEFAULT.
Definition: MooseMesh.h:1445

◆ getParam() [1/2]

template<typename T >
const T & MooseBase::getParam ( const std::string &  name) const
inherited

Retrieve a parameter for the object.

Parameters
nameThe name of the parameter
Returns
The value of the parameter

Definition at line 388 of file MooseBase.h.

Referenced by CreateDisplacedProblemAction::act(), AddPeriodicBCAction::act(), CommonOutputAction::act(), FEProblemBase::addOutput(), DiffusionPhysicsBase::addPostprocessors(), ArrayParsedAux::ArrayParsedAux(), AddPeriodicBCAction::autoTranslationBoundaries(), BicubicSplineFunction::BicubicSplineFunction(), Boundary2DDelaunayGenerator::Boundary2DDelaunayGenerator(), ComponentPhysicsInterface::ComponentPhysicsInterface(), FunctorAux::computeValue(), Console::Console(), FEProblemBase::createTagSolutions(), CutMeshByLevelSetGenerator::CutMeshByLevelSetGenerator(), DebugResidualAux::DebugResidualAux(), AccumulateReporter::declareLateValues(), DerivativeParsedMaterialTempl< is_ad >::DerivativeParsedMaterialTempl(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenKernel::EigenKernel(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), FEProblemSolve::FEProblemSolve(), ParsedVectorReporter::finalize(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), ParsedSubdomainGeneratorBase::functionInitialize(), FVInterfaceKernel::FVInterfaceKernel(), BoundaryLayerSubdomainGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), GeneratedMeshGenerator::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), BlockDeletionGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), MeshExtruderGenerator::generate(), GenericConstantRankTwoTensorTempl< is_ad >::GenericConstantRankTwoTensorTempl(), GenericConstantSymmetricRankTwoTensorTempl< is_ad >::GenericConstantSymmetricRankTwoTensorTempl(), GeometricSearchInterface::GeometricSearchInterface(), MooseApp::getCheckpointDirectories(), DataFileInterface::getDataFileName(), ExecutorInterface::getExecutor(), GhostingUserObject::GhostingUserObject(), FixedPointIterationAdaptiveDT::init(), TimeSequenceStepper::init(), IterationAdaptiveDT::init(), AdvancedOutput::init(), AttribThread::initFrom(), AttribSysNum::initFrom(), AttribResidualObject::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), Console::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::limitDTToPostprocessorValue(), MooseMesh(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MultiSystemSolveObject::MultiSystemSolveObject(), NEML2ModelExecutor::NEML2ModelExecutor(), NestedDivision::NestedDivision(), PerfGraphOutput::output(), Console::outputSystemInformation(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedElementDeletionGenerator::ParsedElementDeletionGenerator(), ParsedGenerateNodeset::ParsedGenerateNodeset(), ParsedGenerateSideset::ParsedGenerateSideset(), ParsedMaterialTempl< is_ad >::ParsedMaterialTempl(), ParsedNodeTransformGenerator::ParsedNodeTransformGenerator(), ParsedODEKernel::ParsedODEKernel(), ParsedPostprocessor::ParsedPostprocessor(), ParsedReporterBase::ParsedReporterBase(), ParsedVectorReporter::ParsedVectorReporter(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), PiecewiseConstantByBlockMaterialTempl< is_ad >::PiecewiseConstantByBlockMaterialTempl(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), Moose::FV::setInterpolationMethod(), SetupMeshAction::setupMesh(), Output::setWallTimeIntervalFromCommandLineParam(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), TimePeriod::TimePeriod(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), and VectorOfPostprocessors::VectorOfPostprocessors().

389 {
390  return InputParameters::getParamHelper<T>(name, _pars);
391 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103

◆ getParam() [2/2]

template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > MooseBase::getParam ( const std::string &  param1,
const std::string &  param2 
) const
inherited

Retrieve two parameters and provide pair of parameters for the object.

Parameters
param1The name of first parameter
param2The name of second parameter
Returns
Vector of pairs of first and second parameters

Definition at line 425 of file MooseBase.h.

426 {
427  return _pars.get<T1, T2>(param1, param2);
428 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.

◆ getPatchSize()

unsigned int MooseMesh::getPatchSize ( ) const

Getter for the patch_size parameter.

Definition at line 3481 of file MooseMesh.C.

Referenced by NearestNodeLocator::findNodes(), and NearestNodeLocator::updatePatch().

3482 {
3483  return _patch_size;
3484 }
unsigned int _patch_size
The number of nodes to consider in the NearestNode neighborhood.
Definition: MooseMesh.h:1589

◆ getPatchUpdateStrategy()

const Moose::PatchUpdateType & MooseMesh::getPatchUpdateStrategy ( ) const

Get the current patch update strategy.

Definition at line 3493 of file MooseMesh.C.

Referenced by FEProblemBase::possiblyRebuildGeomSearchPatches().

3494 {
3495  return _patch_update_strategy;
3496 }
Moose::PatchUpdateType _patch_update_strategy
The patch update strategy.
Definition: MooseMesh.h:1598

◆ getPCoarseningMap()

const std::vector< QpMap > & MooseMesh::getPCoarseningMap ( const Elem elem) const

Get the map describing for each volumetric quadrature point (qp) on the coarse level which qp on the previous finer level the coarse qp is closest to.

Definition at line 4470 of file MooseMesh.C.

Referenced by ProjectMaterialProperties::onElement().

4471 {
4473 }
const std::vector< QpMap > & getPCoarseningMapHelper(const Elem &elem, const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap >> &) const
Definition: MooseMesh.C:4448
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_coarsening_map
Definition: MooseMesh.h:1809
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ getPCoarseningMapHelper()

const std::vector< QpMap > & MooseMesh::getPCoarseningMapHelper ( const Elem elem,
const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap >> &   
) const
private

Definition at line 4448 of file MooseMesh.C.

Referenced by getPCoarseningMap(), and getPCoarseningSideMap().

4451 {
4452  mooseAssert(elem.active() && elem.p_refinement_flag() == Elem::JUST_COARSENED,
4453  "These are the conditions that should be met for requesting a coarsening map");
4454  return libmesh_map_find(map, std::make_pair(elem.type(), elem.p_level()));
4455 }
RefinementState p_refinement_flag() const
unsigned int p_level() const
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
bool active() const
virtual ElemType type() const=0

◆ getPCoarseningSideMap()

const std::vector< QpMap > & MooseMesh::getPCoarseningSideMap ( const Elem elem) const

Get the map describing for each side quadrature point (qp) on the coarse level which qp on the previous finer level the coarse qp is closest to.

Definition at line 4476 of file MooseMesh.C.

Referenced by ProjectMaterialProperties::onBoundary().

4477 {
4479 }
const std::vector< QpMap > & getPCoarseningMapHelper(const Elem &elem, const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap >> &) const
Definition: MooseMesh.C:4448
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_coarsening_side_map
Definition: MooseMesh.h:1811
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ getPointLocator()

std::unique_ptr< libMesh::PointLocatorBase > MooseMesh::getPointLocator ( ) const
virtual

Proxy function to get a (sub)PointLocator from either the underlying libMesh mesh (default), or to allow derived meshes to return a custom point locator.

Definition at line 3813 of file MooseMesh.C.

Referenced by CopyMeshPartitioner::_do_partition(), PenetrationLocator::detectPenetration(), PointValue::execute(), MultiAppVariableValueSampleTransfer::execute(), IntersectionPointsAlongLine::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), ElementsAlongLine::execute(), FindValueOnLine::initialize(), PointSamplerBase::initialize(), PiecewiseConstantFromCSV::initialSetup(), ReporterPointMarker::markerSetup(), and PenetrationThread::operator()().

3814 {
3815  return getMesh().sub_point_locator();
3816 }
std::unique_ptr< PointLocatorBase > sub_point_locator() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ getPRefinementMap()

const std::vector< QpMap > & MooseMesh::getPRefinementMap ( const Elem elem) const

Get the map describing for each volumetric quadrature point (qp) on the refined level which qp on the previous coarser level the fine qp is closest to.

Definition at line 4458 of file MooseMesh.C.

Referenced by ProjectMaterialProperties::onElement().

4459 {
4461 }
const std::vector< QpMap > & getPRefinementMapHelper(const Elem &elem, const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap >> &) const
Definition: MooseMesh.C:4437
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_refinement_map
Definition: MooseMesh.h:1783
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ getPRefinementMapHelper()

const std::vector< QpMap > & MooseMesh::getPRefinementMapHelper ( const Elem elem,
const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap >> &   
) const
private

Definition at line 4437 of file MooseMesh.C.

Referenced by getPRefinementMap(), and getPRefinementSideMap().

4440 {
4441  // We are actually seeking the map stored with the p_level - 1 key, e.g. the refinement map that
4442  // maps from the previous p_level to this element's p_level
4443  return libmesh_map_find(map,
4444  std::make_pair(elem.type(), cast_int<unsigned int>(elem.p_level() - 1)));
4445 }
unsigned int p_level() const
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
virtual ElemType type() const=0

◆ getPRefinementSideMap()

const std::vector< QpMap > & MooseMesh::getPRefinementSideMap ( const Elem elem) const

Get the map describing for each side quadrature point (qp) on the refined level which qp on the previous coarser level the fine qp is closest to.

Definition at line 4464 of file MooseMesh.C.

Referenced by ProjectMaterialProperties::onBoundary().

4465 {
4467 }
const std::vector< QpMap > & getPRefinementMapHelper(const Elem &elem, const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap >> &) const
Definition: MooseMesh.C:4437
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_refinement_side_map
Definition: MooseMesh.h:1785
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ getQuadratureNode()

Node * MooseMesh::getQuadratureNode ( const Elem elem,
const unsigned short int  side,
const unsigned int  qp 
)

Get a specified quadrature node.

Parameters
elemThe element the quadrature point is on
sideThe side the quadrature point is on
qpThe quadrature point number associated with the point

Definition at line 1712 of file MooseMesh.C.

Referenced by GapValueAux::computeValue(), NearestNodeDistanceAux::computeValue(), PenetrationAux::computeValue(), and GeometricSearchData::updateQuadratureNodes().

1715 {
1716  mooseAssert(_elem_to_side_to_qp_to_quadrature_nodes.find(elem->id()) !=
1718  "Elem has no quadrature nodes!");
1719  mooseAssert(_elem_to_side_to_qp_to_quadrature_nodes[elem->id()].find(side) !=
1721  "Side has no quadrature nodes!");
1722  mooseAssert(_elem_to_side_to_qp_to_quadrature_nodes[elem->id()][side].find(qp) !=
1724  "qp not found on side!");
1725 
1726  return _elem_to_side_to_qp_to_quadrature_nodes[elem->id()][side][qp];
1727 }
dof_id_type id() const
std::map< dof_id_type, std::map< unsigned int, std::map< dof_id_type, Node * > > > _elem_to_side_to_qp_to_quadrature_nodes
Definition: MooseMesh.h:1576
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ getRefinementMap()

const std::vector< std::vector< QpMap > > & MooseMesh::getRefinementMap ( const Elem elem,
int  parent_side,
int  child,
int  child_side 
)

Get the refinement map for a given element type.

This will tell you what quadrature points to copy from and to for stateful material properties on newly created elements from Adaptivity.

Parameters
elemThe element that represents the element type you need the refinement map for.
parent_sideThe side of the parent to map (-1 if not mapping parent sides)
childThe child number (-1 if not mapping child internal sides)
child_sideThe side number of the child (-1 if not mapping sides)

TODO: When running with parallel mesh + stateful adaptivty we will need to make sure that each processor has a complete map. This may require parallel communication. This is likely to happen when running on a mixed element mesh.

Definition at line 2565 of file MooseMesh.C.

Referenced by ProjectMaterialProperties::onBoundary(), ProjectMaterialProperties::onElement(), and ProjectMaterialProperties::onInternalSide().

2566 {
2567  if (child == -1) // Doing volume mapping or parent side mapping
2568  {
2569  mooseAssert(parent_side == child_side,
2570  "Parent side must match child_side if not passing a specific child!");
2571 
2572  std::pair<int, ElemType> the_pair(parent_side, elem.type());
2573 
2574  if (_elem_type_to_refinement_map.find(the_pair) == _elem_type_to_refinement_map.end())
2575  mooseError("Could not find a suitable qp refinement map!");
2576 
2577  return _elem_type_to_refinement_map[the_pair];
2578  }
2579  else // Need to map a child side to parent volume qps
2580  {
2581  std::pair<int, int> child_pair(child, child_side);
2582 
2585  _elem_type_to_child_side_refinement_map[elem.type()].find(child_pair) ==
2587  mooseError("Could not find a suitable qp refinement map!");
2588 
2589  return _elem_type_to_child_side_refinement_map[elem.type()][child_pair];
2590  }
2591 
2598 }
std::map< libMesh::ElemType, std::map< std::pair< int, int >, std::vector< std::vector< QpMap > > > > _elem_type_to_child_side_refinement_map
Holds mappings for "internal" child sides to parent volume. The second key is (child, child_side).
Definition: MooseMesh.h:1789
std::map< std::pair< int, libMesh::ElemType >, std::vector< std::vector< QpMap > > > _elem_type_to_refinement_map
Holds mappings for volume to volume and parent side to child side Map key:
Definition: MooseMesh.h:1780
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
virtual ElemType type() const=0

◆ getRenamedParam()

template<typename T >
const T & MooseBase::getRenamedParam ( const std::string &  old_name,
const std::string &  new_name 
) const
inherited

Retrieve a renamed parameter for the object.

This helper makes sure we check both names before erroring, and that only one parameter is passed to avoid silent errors

Parameters
old_namethe old name for the parameter
new_namethe new name for the parameter

Definition at line 402 of file MooseBase.h.

403 {
404  // Most important: accept new parameter
405  if (isParamSetByUser(new_name) && !isParamValid(old_name))
406  return getParam<T>(new_name);
407  // Second most: accept old parameter
408  if (isParamValid(old_name) && !isParamSetByUser(new_name))
409  return getParam<T>(old_name);
410  // Third most: accept default for new parameter
411  if (isParamValid(new_name) && !isParamValid(old_name))
412  return getParam<T>(new_name);
413  // Refuse: no default, no value passed
414  if (!isParamValid(old_name) && !isParamValid(new_name))
415  mooseError("parameter '" + new_name +
416  "' is being retrieved without being set.\nDid you misspell it?");
417  // Refuse: both old and new parameters set by user
418  else
419  mooseError("Parameter '" + new_name + "' may not be provided alongside former parameter '" +
420  old_name + "'");
421 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:199
bool isParamSetByUser(const std::string &name) const
Test if the supplied parameter is set by a user, as opposed to not set or set to default.
Definition: MooseBase.h:205

◆ getRestartableData()

template<typename T , typename... Args>
const T & Restartable::getRestartableData ( const std::string &  data_name) const
protectedinherited

Declare a piece of data as "restartable" and initialize it Similar to declareRestartableData but returns a const reference to the object.

Forwarded arguments are not allowed in this case because we assume that the object is restarted and we won't need different constructors to initialize it.

NOTE: This returns a const reference! Make sure you store it in a const reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)

Definition at line 294 of file Restartable.h.

295 {
296  return declareRestartableDataHelper<T>(data_name, nullptr).get();
297 }

◆ getSharedPtr() [1/2]

std::shared_ptr< MooseObject > MooseObject::getSharedPtr ( )
inherited

Get another shared pointer to this object that has the same ownership group.

Wrapper around shared_from_this().

Definition at line 72 of file MooseObject.C.

Referenced by MFEMProblem::addBoundaryCondition(), MFEMProblem::addKernel(), MFEMProblem::addMFEMSolver(), and WebServerControl::addServerAction().

73 {
74  try
75  {
76  return shared_from_this();
77  }
78  catch (std::bad_weak_ptr &)
79  {
80  mooseError(not_shared_error);
81  }
82 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ getSharedPtr() [2/2]

std::shared_ptr< const MooseObject > MooseObject::getSharedPtr ( ) const
inherited

Definition at line 85 of file MooseObject.C.

86 {
87  try
88  {
89  return shared_from_this();
90  }
91  catch (std::bad_weak_ptr &)
92  {
93  mooseError(not_shared_error);
94  }
95 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271

◆ getSubdomainBoundaryIds()

const std::set< BoundaryID > & MooseMesh::getSubdomainBoundaryIds ( const SubdomainID  subdomain_id) const

Get the list of boundary ids associated with the given subdomain id.

Parameters
subdomain_idThe subdomain ID you want to get the boundary ids for.
Returns
All boundary IDs connected to elements in the give

Definition at line 3577 of file MooseMesh.C.

Referenced by getSubdomainInterfaceBoundaryIds(), and FEProblemBase::prepareMaterials().

3578 {
3579  const auto it = _sub_to_data.find(subdomain_id);
3580 
3581  if (it == _sub_to_data.end())
3582  mooseError("Unable to find subdomain ID: ", subdomain_id, '.');
3583 
3584  return it->second.boundary_ids;
3585 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
std::unordered_map< SubdomainID, SubdomainData > _sub_to_data
Holds a map from subdomain ids to associated data.
Definition: MooseMesh.h:1827

◆ getSubdomainID()

SubdomainID MooseMesh::getSubdomainID ( const SubdomainName &  subdomain_name) const

Get the associated subdomain ID for the subdomain name.

Parameters
subdomain_nameThe name of the subdomain
Returns
The subdomain id from the passed subdomain name.

Definition at line 1781 of file MooseMesh.C.

Referenced by SystemBase::addVariable(), FEProblemBase::checkProblemIntegrity(), FVInterfaceKernel::FVInterfaceKernel(), TimedSubdomainModifier::getSubdomainIDAndCheck(), SolutionIC::initialSetup(), ElementSubdomainModifierBase::initialSetup(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), PiecewiseConstantByBlockMaterialTempl< is_ad >::PiecewiseConstantByBlockMaterialTempl(), prepare(), setCoordSystem(), and setGeneralAxisymmetricCoordAxes().

1782 {
1783  return MooseMeshUtils::getSubdomainID(subdomain_name, getMesh());
1784 }
SubdomainID getSubdomainID(const SubdomainName &subdomain_name, const MeshBase &mesh)
Gets the subdomain ID associated with the given SubdomainName.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ getSubdomainIDs() [1/2]

std::vector< SubdomainID > MooseMesh::getSubdomainIDs ( const std::vector< SubdomainName > &  subdomain_names) const

Get the associated subdomainIDs for the subdomain names that are passed in.

Parameters
subdomain_namesThe names of the subdomains
Returns
The subdomain ids from the passed subdomain names.

Definition at line 1787 of file MooseMesh.C.

Referenced by FEProblemBase::addAuxVariable(), FEProblemBase::addVariable(), MultiAppUserObjectTransfer::execute(), getBlocksMaxDimension(), BlockRestrictable::hasBlocks(), SubdomainsDivision::initialize(), BlockRestrictable::initializeBlockRestrictable(), MultiAppDofCopyTransfer::initialSetup(), ElementSubdomainModifierBase::initialSetup(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), and LayeredBase::LayeredBase().

1788 {
1789  return MooseMeshUtils::getSubdomainIDs(getMesh(), subdomain_name);
1790 }
std::vector< subdomain_id_type > getSubdomainIDs(const libMesh::MeshBase &mesh, const std::vector< SubdomainName > &subdomain_name)
Get the associated subdomainIDs for the subdomain names that are passed in.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ getSubdomainIDs() [2/2]

std::set< SubdomainID > MooseMesh::getSubdomainIDs ( const std::set< SubdomainName > &  subdomain_names) const

Definition at line 1793 of file MooseMesh.C.

1794 {
1795  return MooseMeshUtils::getSubdomainIDs(getMesh(), subdomain_name);
1796 }
std::vector< subdomain_id_type > getSubdomainIDs(const libMesh::MeshBase &mesh, const std::vector< SubdomainName > &subdomain_name)
Get the associated subdomainIDs for the subdomain names that are passed in.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ getSubdomainInterfaceBoundaryIds()

std::set< BoundaryID > MooseMesh::getSubdomainInterfaceBoundaryIds ( const SubdomainID  subdomain_id) const

Get the list of boundaries that contact the given subdomain.

Parameters
subdomain_idThe subdomain ID you want to get the boundary ids for.
Returns
All boundary IDs connected to elements in the given subdomain

Definition at line 3588 of file MooseMesh.C.

3589 {
3590  const auto & bnd_ids = getSubdomainBoundaryIds(subdomain_id);
3591  std::set<BoundaryID> boundary_ids(bnd_ids.begin(), bnd_ids.end());
3592  std::unordered_map<SubdomainID, std::set<BoundaryID>>::const_iterator it =
3593  _neighbor_subdomain_boundary_ids.find(subdomain_id);
3594 
3595  boundary_ids.insert(it->second.begin(), it->second.end());
3596 
3597  return boundary_ids;
3598 }
const std::set< BoundaryID > & getSubdomainBoundaryIds(const SubdomainID subdomain_id) const
Get the list of boundary ids associated with the given subdomain id.
Definition: MooseMesh.C:3577
std::unordered_map< SubdomainID, std::set< BoundaryID > > _neighbor_subdomain_boundary_ids
Holds a map from neighbor subomdain ids to the boundary ids that are attached to it.
Definition: MooseMesh.h:1830

◆ getSubdomainName()

const std::string & MooseMesh::getSubdomainName ( SubdomainID  subdomain_id) const

◆ getSubdomainNames()

std::vector< SubdomainName > MooseMesh::getSubdomainNames ( const std::vector< SubdomainID > &  subdomain_ids) const

Get the associated subdomainNames for the subdomain ids that are passed in.

Parameters
subdomain_idsThe ids of the subdomains
Returns
The subdomain names from the passed subdomain ids.

Definition at line 1819 of file MooseMesh.C.

Referenced by NonlinearSystemBase::checkKernelCoverage(), FEProblemBase::checkProblemIntegrity(), SampledOutput::cloneMesh(), BlockRestrictable::initializeBlockRestrictable(), and SolutionIC::initialSetup().

1820 {
1821  std::vector<SubdomainName> names(subdomain_ids.size());
1822 
1823  for (unsigned int i = 0; i < subdomain_ids.size(); i++)
1824  names[i] = getSubdomainName(subdomain_ids[i]);
1825 
1826  return names;
1827 }
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
Definition: MooseMesh.C:1813

◆ getUniqueCoordSystem()

Moose::CoordinateSystemType MooseMesh::getUniqueCoordSystem ( ) const

Get the coordinate system from the mesh, it must be the same in all subdomains otherwise this will error.

Definition at line 4265 of file MooseMesh.C.

Referenced by HDGKernel::HDGKernel().

4266 {
4267  const auto unique_system = _coord_sys.find(*meshSubdomains().begin())->second;
4268  // Check that it is actually unique
4269  bool result = std::all_of(
4270  std::next(_coord_sys.begin()),
4271  _coord_sys.end(),
4272  [unique_system](
4273  typename std::unordered_map<SubdomainID, Moose::CoordinateSystemType>::const_reference
4274  item) { return (item.second == unique_system); });
4275  if (!result)
4276  mooseError("The unique coordinate system of the mesh was requested by the mesh contains "
4277  "multiple blocks with different coordinate systems");
4278 
4280  mooseError("General axisymmetric coordinate axes are being used, and it is currently "
4281  "conservatively assumed that in this case there is no unique coordinate system.");
4282 
4283  return unique_system;
4284 }
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
Definition: MooseMesh.h:1901
bool usingGeneralAxisymmetricCoordAxes() const
Returns true if general axisymmetric coordinate axes are being used.
Definition: MooseMesh.C:4359
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition: MooseMesh.C:3251

◆ ghostGhostedBoundaries()

void MooseMesh::ghostGhostedBoundaries ( )

Actually do the ghosting of boundaries that need to be ghosted to this processor.

Definition at line 3394 of file MooseMesh.C.

Referenced by FEProblemBase::ghostGhostedBoundaries().

3395 {
3396  // No need to do this if using a serial mesh
3397  // We do not need to ghost boundary elements when _need_ghost_ghosted_boundaries
3398  // is not true. _need_ghost_ghosted_boundaries can be set by a mesh generator
3399  // where boundaries are already ghosted accordingly
3401  return;
3402 
3403  TIME_SECTION("GhostGhostedBoundaries", 3);
3404 
3405  parallel_object_only();
3406 
3407  DistributedMesh & mesh = dynamic_cast<DistributedMesh &>(getMesh());
3408 
3409  // We clear ghosted elements that were added by previous invocations of this
3410  // method but leave ghosted elements that were added by other code, e.g.
3411  // OversampleOutput, untouched
3412  mesh.clear_extra_ghost_elems(_ghost_elems_from_ghost_boundaries);
3414 
3415  std::set<const Elem *, CompareElemsByLevel> boundary_elems_to_ghost;
3416  std::set<Node *> connected_nodes_to_ghost;
3417 
3418  std::vector<const Elem *> family_tree;
3419 
3420  for (const auto & t : mesh.get_boundary_info().build_side_list())
3421  {
3422  auto elem_id = std::get<0>(t);
3423  auto bc_id = std::get<2>(t);
3424 
3425  if (_ghosted_boundaries.find(bc_id) != _ghosted_boundaries.end())
3426  {
3427  Elem * elem = mesh.elem_ptr(elem_id);
3428 
3429 #ifdef LIBMESH_ENABLE_AMR
3430  elem->family_tree(family_tree);
3431  Elem * parent = elem->parent();
3432  while (parent)
3433  {
3434  family_tree.push_back(parent);
3435  parent = parent->parent();
3436  }
3437 #else
3438  family_tree.clear();
3439  family_tree.push_back(elem);
3440 #endif
3441  for (const auto & felem : family_tree)
3442  {
3443  boundary_elems_to_ghost.insert(felem);
3444 
3445  // The entries of connected_nodes_to_ghost need to be
3446  // non-constant, so that they will work in things like
3447  // UpdateDisplacedMeshThread. The container returned by
3448  // family_tree contains const Elems even when the Elem
3449  // it is called on is non-const, so once that interface
3450  // gets fixed we can remove this const_cast.
3451  for (unsigned int n = 0; n < felem->n_nodes(); ++n)
3452  connected_nodes_to_ghost.insert(const_cast<Node *>(felem->node_ptr(n)));
3453  }
3454  }
3455  }
3456 
3457  // We really do want to store this by value instead of by reference
3458  const auto prior_ghost_elems = mesh.extra_ghost_elems();
3459 
3461  connected_nodes_to_ghost.begin(),
3462  connected_nodes_to_ghost.end(),
3463  extra_ghost_elem_inserter<Node>(mesh));
3464 
3466  boundary_elems_to_ghost.begin(),
3467  boundary_elems_to_ghost.end(),
3468  extra_ghost_elem_inserter<Elem>(mesh));
3469 
3470  const auto & current_ghost_elems = mesh.extra_ghost_elems();
3471 
3472  std::set_difference(current_ghost_elems.begin(),
3473  current_ghost_elems.end(),
3474  prior_ghost_elems.begin(),
3475  prior_ghost_elems.end(),
3476  std::inserter(_ghost_elems_from_ghost_boundaries,
3478 }
const Elem * parent() const
bool _need_ghost_ghosted_boundaries
A parallel mesh generator such as DistributedRectilinearMeshGenerator already make everything ready...
Definition: MooseMesh.h:1868
void family_tree(std::vector< const Elem * > &family, bool reset=true) const
MeshBase & mesh
const Parallel::Communicator & comm() const
void allgather_packed_range(Context *context, Iter range_begin, const Iter range_end, OutputIter out, std::size_t approx_buffer_size=1000000) const
const BoundaryInfo & get_boundary_info() const
std::set< Elem * > _ghost_elems_from_ghost_boundaries
Set of elements ghosted by ghostGhostedBoundaries.
Definition: MooseMesh.h:1862
void build_side_list(std::vector< dof_id_type > &element_id_list, std::vector< unsigned short int > &side_list, std::vector< boundary_id_type > &bc_id_list) const
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
void family_tree(T elem, std::vector< T > &family, bool reset=true)
virtual const Elem * elem_ptr(const dof_id_type i) const=0
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
std::set< unsigned int > _ghosted_boundaries
Definition: MooseMesh.h:1585

◆ hasBase()

bool MooseBase::hasBase ( ) const
inlineinherited
Returns
Whether or not this object has a registered base (set via InputParameters::registerBase())

Definition at line 142 of file MooseBase.h.

142 { return _pars.hasBase(); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
bool hasBase() const

◆ hasElementID()

bool MooseMesh::hasElementID ( const std::string &  id_name) const
inline

Whether mesh has an extra element integer with a given name.

Definition at line 2194 of file MooseMesh.h.

Referenced by getElementIDIndex().

2195 {
2196  return getMesh().has_elem_integer(id_name);
2197 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ hasLowerD()

bool MooseMesh::hasLowerD ( ) const
inline
Returns
Whether there are any lower-dimensional blocks that are manifolds of higher-dimensional block faces

Definition at line 1416 of file MooseMesh.h.

Referenced by GhostLowerDElems::operator()().

1416 { return _has_lower_d; }
bool _has_lower_d
Whether there are any lower-dimensional blocks that are manifolds of higher-dimensional block faces...
Definition: MooseMesh.h:1843

◆ hasMeshBase()

bool MooseMesh::hasMeshBase ( ) const
inline

Whether mesh base object was constructed or not.

Definition at line 1107 of file MooseMesh.h.

Referenced by MeshGeneratorMesh::buildMesh().

1107 { return _mesh.get() != nullptr; }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ hasSecondOrderElements()

bool MooseMesh::hasSecondOrderElements ( )

check if the mesh has SECOND order elements

Definition at line 3791 of file MooseMesh.C.

Referenced by Assembly::adCurvatures(), Assembly::Assembly(), Assembly::havePRefinement(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), and SolutionUserObjectBase::SolutionUserObjectBase().

3792 {
3793  bool mesh_has_second_order_elements = false;
3794  for (auto it = activeLocalElementsBegin(), end = activeLocalElementsEnd(); it != end; ++it)
3795  if ((*it)->default_order() == SECOND)
3796  {
3797  mesh_has_second_order_elements = true;
3798  break;
3799  }
3800 
3801  // We checked our local elements, so take the max over all processors.
3802  comm().max(mesh_has_second_order_elements);
3803  return mesh_has_second_order_elements;
3804 }
const Parallel::Communicator & comm() const
SECOND
MeshBase::element_iterator activeLocalElementsBegin()
Calls active_local_nodes_begin/end() on the underlying libMesh mesh object.
Definition: MooseMesh.C:3131
void max(const T &r, T &o, Request &req) const
const MeshBase::element_iterator activeLocalElementsEnd()
Definition: MooseMesh.C:3137

◆ init()

void MooseMesh::init ( )
virtual

Initialize the Mesh object.

Most of the time this will turn around and call build_mesh so the child class can build the Mesh object.

However, during Recovery this will read the CPA file...

If the mesh base hasn't been constructed by the time init is called, just do it here. This can happen if somebody builds a mesh outside of the normal Action system. Forcing developers to create, construct the MeshBase, and then init separately is a bit much for casual use but it gives us the ability to run MeshGenerators in-between.

Definition at line 2925 of file MooseMesh.C.

2926 {
2933  if (!_mesh)
2935 
2937  mooseError("You cannot use the mesh splitter capability with DistributedMesh!");
2938 
2939  TIME_SECTION("init", 2);
2940 
2942  {
2943  // Some partitioners are not idempotent. Some recovery data
2944  // files require partitioning to match mesh partitioning. This
2945  // means that, when recovering, we can't safely repartition.
2946  const bool skip_partitioning_later = getMesh().skip_partitioning();
2947  getMesh().skip_partitioning(true);
2948  const bool allow_renumbering_later = getMesh().allow_renumbering();
2949  getMesh().allow_renumbering(false);
2950 
2951  // For now, only read the recovery mesh on the Ultimate Master..
2952  // sub-apps need to just build their mesh like normal
2953  {
2954  TIME_SECTION("readRecoveredMesh", 2);
2956  }
2957 
2958  getMesh().allow_renumbering(allow_renumbering_later);
2959  getMesh().skip_partitioning(skip_partitioning_later);
2960  }
2961  else // Normally just build the mesh
2962  {
2963  // Don't allow partitioning during building
2964  if (_app.isSplitMesh())
2965  getMesh().skip_partitioning(true);
2966  buildMesh();
2967 
2968  // Re-enable partitioning so the splitter can partition!
2969  if (_app.isSplitMesh())
2970  getMesh().skip_partitioning(false);
2971 
2972  if (getParam<bool>("build_all_side_lowerd_mesh"))
2973  buildLowerDMesh();
2974  }
2975 
2977 }
static const std::string & checkpointSuffix()
The file suffix for the checkpoint mesh.
Definition: MooseApp.C:3155
void computeMaxPerElemAndSide()
Compute the maximum numbers per element and side.
Definition: MooseMesh.C:1086
virtual void read(const std::string &name, void *mesh_data=nullptr, bool skip_renumber_nodes_and_elements=false, bool skip_find_neighbors=false)=0
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:820
void allow_renumbering(bool allow)
void skip_partitioning(bool skip)
void buildLowerDMesh()
Build lower-d mesh for all sides.
Definition: MooseMesh.C:685
virtual void buildMesh()=0
Must be overridden by child classes.
bool isSplitMesh() const
Whether or not this is a split mesh operation.
Definition: MooseApp.C:1896
bool _allow_recovery
Whether or not this Mesh is allowed to read a recovery file.
Definition: MooseMesh.h:1846
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::unique_ptr< MeshBase > buildMeshBaseObject(unsigned int dim=libMesh::invalid_uint)
Method to construct a libMesh::MeshBase object that is normally set and used by the MooseMesh object ...
Definition: MooseMesh.C:2906
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
bool isRecovering() const
Whether or not this is a "recover" calculation.
Definition: MooseApp.C:1884
std::string getRestartRecoverFileBase() const
The file_base for the recovery file.
Definition: MooseApp.h:494

◆ interiorLowerDBlocks()

const std::set<SubdomainID>& MooseMesh::interiorLowerDBlocks ( ) const
inline

◆ isBoundaryElem() [1/2]

bool MooseMesh::isBoundaryElem ( dof_id_type  elem_id) const

Returns true if the requested element is in the list of boundary elements, false otherwise.

Definition at line 3671 of file MooseMesh.C.

Referenced by BoundaryMarker::computeElementMarker().

3672 {
3673  bool found_elem = false;
3674  for (const auto & it : _bnd_elem_ids)
3675  {
3676  if (it.second.find(elem_id) != it.second.end())
3677  {
3678  found_elem = true;
3679  break;
3680  }
3681  }
3682  return found_elem;
3683 }
std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > _bnd_elem_ids
Map of set of elem IDs connected to each boundary.
Definition: MooseMesh.h:1572

◆ isBoundaryElem() [2/2]

bool MooseMesh::isBoundaryElem ( dof_id_type  elem_id,
BoundaryID  bnd_id 
) const

Returns true if the requested element is in the list of boundary elements for the specified boundary, false otherwise.

Definition at line 3686 of file MooseMesh.C.

3687 {
3688  bool found_elem = false;
3689  auto it = _bnd_elem_ids.find(bnd_id);
3690  if (it != _bnd_elem_ids.end())
3691  if (it->second.find(elem_id) != it->second.end())
3692  found_elem = true;
3693  return found_elem;
3694 }
std::unordered_map< boundary_id_type, std::unordered_set< dof_id_type > > _bnd_elem_ids
Map of set of elem IDs connected to each boundary.
Definition: MooseMesh.h:1572

◆ isBoundaryFullyExternalToSubdomains()

bool MooseMesh::isBoundaryFullyExternalToSubdomains ( BoundaryID  bid,
const std::set< SubdomainID > &  blk_group 
) const

Returns whether a boundary (given by its id) is not crossing through a group of blocks, by which we mean that elements on both sides of the boundary are in those blocks.

Parameters
bidthe id of the boundary of interest
blk_groupthe group of blocks potentially traversed
Returns
whether the boundary does not cross between the subdomains in the group

Definition at line 1423 of file MooseMesh.C.

1425 {
1426  mooseAssert(_bnd_elem_range, "Boundary element range is not initialized");
1427 
1428  // Loop over all side elements of the mesh, select those on the boundary
1429  for (const auto & bnd_elem : *_bnd_elem_range)
1430  {
1431  const auto & [elem_ptr, elem_side, elem_bid] = *bnd_elem;
1432  if (elem_bid == bid)
1433  {
1434  // If an element is internal to the group of subdomain, check the neighbor
1435  if (blk_group.find(elem_ptr->subdomain_id()) != blk_group.end())
1436  {
1437  const auto * const neighbor = elem_ptr->neighbor_ptr(elem_side);
1438 
1439  // If we did not ghost the neighbor, we cannot decide
1440  if (neighbor == libMesh::remote_elem)
1441  mooseError("Insufficient level of geometrical ghosting to determine "
1442  "if a boundary is internal to the mesh");
1443  // If the neighbor does not exist, then we are on the edge of the mesh
1444  if (!neighbor)
1445  continue;
1446  // If the neighbor is also in the group of subdomain,
1447  // then the boundary cuts the subdomains
1448  if (blk_group.find(neighbor->subdomain_id()) != blk_group.end())
1449  return false;
1450  }
1451  }
1452  }
1453  return true;
1454 }
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > > _bnd_elem_range
Definition: MooseMesh.h:1529
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
const RemoteElem * remote_elem

◆ isBoundaryNode() [1/2]

bool MooseMesh::isBoundaryNode ( dof_id_type  node_id) const

Returns true if the requested node is in the list of boundary nodes, false otherwise.

Definition at line 3645 of file MooseMesh.C.

Referenced by LowerBoundNodalKernel::computeQpJacobian(), UpperBoundNodalKernel::computeQpJacobian(), LowerBoundNodalKernel::computeQpOffDiagJacobian(), UpperBoundNodalKernel::computeQpOffDiagJacobian(), LowerBoundNodalKernel::computeQpResidual(), UpperBoundNodalKernel::computeQpResidual(), and NodalNormalsPreprocessor::execute().

3646 {
3647  bool found_node = false;
3648  for (const auto & it : _bnd_node_ids)
3649  {
3650  if (it.second.find(node_id) != it.second.end())
3651  {
3652  found_node = true;
3653  break;
3654  }
3655  }
3656  return found_node;
3657 }
std::map< boundary_id_type, std::set< dof_id_type > > _bnd_node_ids
Map of sets of node IDs in each boundary.
Definition: MooseMesh.h:1564

◆ isBoundaryNode() [2/2]

bool MooseMesh::isBoundaryNode ( dof_id_type  node_id,
BoundaryID  bnd_id 
) const

Returns true if the requested node is in the list of boundary nodes for the specified boundary, false otherwise.

Definition at line 3660 of file MooseMesh.C.

3661 {
3662  bool found_node = false;
3663  std::map<boundary_id_type, std::set<dof_id_type>>::const_iterator it = _bnd_node_ids.find(bnd_id);
3664  if (it != _bnd_node_ids.end())
3665  if (it->second.find(node_id) != it->second.end())
3666  found_node = true;
3667  return found_node;
3668 }
std::map< boundary_id_type, std::set< dof_id_type > > _bnd_node_ids
Map of sets of node IDs in each boundary.
Definition: MooseMesh.h:1564

◆ isCustomPartitionerRequested()

bool MooseMesh::isCustomPartitionerRequested ( ) const

Setter and getter for _custom_partitioner_requested.

Definition at line 3785 of file MooseMesh.C.

3786 {
3788 }
bool _custom_partitioner_requested
Definition: MooseMesh.h:1468

◆ isDisplaced() [1/2]

void MooseMesh::isDisplaced ( bool  is_displaced)
inline

Set whether this mesh is a displaced mesh.

Definition at line 1226 of file MooseMesh.h.

1226 { _is_displaced = is_displaced; }
bool _is_displaced
Whether this mesh is displaced.
Definition: MooseMesh.h:1892

◆ isDisplaced() [2/2]

bool MooseMesh::isDisplaced ( ) const
inline

whether this mesh is a displaced mesh

Definition at line 1231 of file MooseMesh.h.

1231 { return _is_displaced; }
bool _is_displaced
Whether this mesh is displaced.
Definition: MooseMesh.h:1892

◆ isDistributedMesh()

virtual bool MooseMesh::isDistributedMesh ( ) const
inlinevirtual

◆ isFiniteVolumeInfoDirty()

bool MooseMesh::isFiniteVolumeInfoDirty ( ) const
inline
Returns
whether the finite volume information is dirty

Definition at line 1322 of file MooseMesh.h.

Referenced by SideIntegralPostprocessor::initialSetup(), and FEProblemBase::meshChanged().

1322 { return _finite_volume_info_dirty; }
bool _finite_volume_info_dirty
Definition: MooseMesh.h:1642

◆ isKokkosObject()

bool MooseObject::isKokkosObject ( ) const
inlineinherited

Get whether this object is a Kokkos functor The parameter is set by the Kokkos base classes:

Definition at line 65 of file MooseObject.h.

Referenced by BlockRestrictable::initializeBlockRestrictable(), and BoundaryRestrictable::initializeBoundaryRestrictable().

const InputParameters & parameters() const
Get the parameters of the object.
Definition: MooseBase.h:131
static const std::string kokkos_object_param
The name of the parameter that indicates an object is a Kokkos functor.
Definition: MooseBase.h:64
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ isLowerD()

bool MooseMesh::isLowerD ( const SubdomainID  subdomain_id) const
inline
Returns
Whether the subdomain indicated by subdomain_id is a lower-dimensional manifold of some higher-dimensional subdomain, or in implementation speak, whether the elements of this subdomain have non-null interior parents

Definition at line 2240 of file MooseMesh.h.

Referenced by ProjectionAux::computeValue(), ProjectionAux::elemOnNodeVariableIsDefinedOn(), MooseVariableBase::MooseVariableBase(), and ProjectionAux::ProjectionAux().

2241 {
2242  return libmesh_map_find(_sub_to_data, subdomain_id).is_lower_d;
2243 }
std::unordered_map< SubdomainID, SubdomainData > _sub_to_data
Holds a map from subdomain ids to associated data.
Definition: MooseMesh.h:1827

◆ isParallelTypeForced()

bool MooseMesh::isParallelTypeForced ( ) const
inline

Tell the user if the distribution was overriden for any reason.

Definition at line 1009 of file MooseMesh.h.

1009 { return _parallel_type_overridden; }
bool _parallel_type_overridden
Definition: MooseMesh.h:1452

◆ isParamSetByUser()

bool MooseBase::isParamSetByUser ( const std::string &  name) const
inlineinherited

Test if the supplied parameter is set by a user, as opposed to not set or set to default.

Parameters
nameThe name of the parameter to test

Definition at line 205 of file MooseBase.h.

Referenced by SetupDebugAction::act(), DiffusionCG::addFEBCs(), DiffusionPhysicsBase::addInitialConditions(), MFEMMesh::buildMesh(), MFEMDomainSubMesh::buildSubMesh(), MFEMBoundarySubMesh::buildSubMesh(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< false >::ConservativeAdvectionBCTempl(), MooseApp::copyInputs(), DiffusionPhysicsBase::DiffusionPhysicsBase(), MooseApp::errorCheck(), MFEMVectorFESpace::getFECName(), MooseBase::getRenamedParam(), DefaultConvergenceBase::getSharedExecutionerParam(), AddVariableAction::init(), PhysicsBase::initializePhysics(), ElementSubdomainModifierBase::initialSetup(), MatrixSymmetryCheck::MatrixSymmetryCheck(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), SolutionInvalidityOutput::output(), Output::Output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), PetscExternalPartitioner::partition(), prepare(), SolutionUserObjectBase::readXda(), PhysicsBase::reportPotentiallyMissedParameters(), MooseApp::runInputFile(), MooseApp::runInputs(), MFEMSolverBase::setPreconditioner(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), TagVectorAux::TagVectorAux(), TimedSubdomainModifier::TimedSubdomainModifier(), XYDelaunayGenerator::XYDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

206  {
207  return _pars.isParamSetByUser(name);
208  }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.

◆ isParamValid()

bool MooseBase::isParamValid ( const std::string &  name) const
inlineinherited

Test if the supplied parameter is valid.

Parameters
nameThe name of the parameter to test

Definition at line 199 of file MooseBase.h.

Referenced by HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), CopyNodalVarsAction::act(), SetupMeshAction::act(), SetupDebugAction::act(), ComposeTimeStepperAction::act(), AddVariableAction::act(), CreateDisplacedProblemAction::act(), SetAdaptivityOptionsAction::act(), CommonOutputAction::act(), DiffusionCG::addFEKernels(), DiffusionFV::addFVBCs(), DiffusionFV::addFVKernels(), DiffusionPhysicsBase::addInitialConditions(), CylinderComponent::addMeshGenerators(), AddPeriodicBCAction::AddPeriodicBCAction(), DiffusionPhysicsBase::addPostprocessors(), AdvectiveFluxAux::AdvectiveFluxAux(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayVarReductionAux::ArrayVarReductionAux(), AddPeriodicBCAction::autoTranslationBoundaries(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), Boundary2DDelaunayGenerator::Boundary2DDelaunayGenerator(), TimedSubdomainModifier::buildFromFile(), ParsedChainControl::buildFunction(), GeneratedMesh::buildMesh(), buildTypedMesh(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), LibmeshPartitioner::clone(), SampledOutput::cloneMesh(), CombinerGenerator::CombinerGenerator(), FunctorAux::computeValue(), ConservativeAdvectionBCTempl< false >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), FEProblemSolve::convergenceSetup(), CopyMeshPartitioner::CopyMeshPartitioner(), CSVReaderVectorPostprocessor::CSVReaderVectorPostprocessor(), CutMeshByLevelSetGeneratorBase::CutMeshByLevelSetGeneratorBase(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), DGKernelBase::DGKernelBase(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), Eigenvalue::Eigenvalue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), PIDTransientControl::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), Exodus::Exodus(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FileOutput::FileOutput(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FVInterfaceKernel::FVInterfaceKernel(), FVMassMatrix::FVMassMatrix(), AddMetaDataGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), ElementGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), SubdomainPerElementGenerator::generate(), GeneratedMeshGenerator::generate(), BlockDeletionGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), SideSetsFromNodeSetsGenerator::generate(), MeshExtruderGenerator::generate(), ParsedExtraElementIDGenerator::generate(), XYZDelaunayGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), SubdomainBoundingBoxGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), PropertyReadFile::getFileNames(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBase::getRenamedParam(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), Terminator::handleMessage(), HFEMDirichletBC::HFEMDirichletBC(), EigenExecutionerBase::init(), IterationAdaptiveDT::init(), Eigenvalue::init(), AdvancedOutput::initExecutionTypes(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), MultiAppVariableValueSampleTransfer::initialSetup(), ParsedConvergence::initialSetup(), SolutionScalarAux::initialSetup(), PiecewiseTabularBase::initialSetup(), SolutionAux::initialSetup(), Console::initialSetup(), MooseParsedVectorFunction::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), MooseParsedGradFunction::initialSetup(), MooseParsedFunction::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::IterationAdaptiveDT(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), MassMatrix::MassMatrix(), MatCoupledForce::MatCoupledForce(), MeshGeneratorComponent::MeshGeneratorComponent(), MFEMProblemSolve::MFEMProblemSolve(), MooseMesh(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableFV< Real >::MooseVariableFV(), MortarConstraintBase::MortarConstraintBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldNearestLocationTransfer::MultiAppGeneralFieldNearestLocationTransfer(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiSystemSolveObject::MultiSystemSolveObject(), NodeSetsGeneratorBase::NodeSetsGeneratorBase(), EigenExecutionerBase::normalizeSolution(), Output::Output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), ParsedCurveGenerator::ParsedCurveGenerator(), PetscOutput::PetscOutput(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), PIDTransientControl::PIDTransientControl(), PiecewiseTabularBase::PiecewiseTabularBase(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), prepare(), MooseBase::queryParam(), MultiApp::readCommandLineArguments(), SolutionUserObjectBase::readExodusII(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), ReporterPointSource::ReporterPointSource(), PhysicsBase::reportPotentiallyMissedParameters(), ParsedSubdomainMeshGenerator::setBlockName(), setCoordSystem(), FileOutput::setFileBase(), FileOutput::setFileBaseInternal(), Split::setup(), SideSetsGeneratorBase::setup(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), Output::setWallTimeIntervalFromCommandLineParam(), SideDiffusiveFluxIntegralTempl< is_ad, Real >::SideDiffusiveFluxIntegralTempl(), SideSetsGeneratorBase::SideSetsGeneratorBase(), SolutionUserObjectBase::SolutionUserObjectBase(), Terminator::Terminator(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), MultiAppDofCopyTransfer::transfer(), TransformGenerator::TransformGenerator(), TransientBase::TransientBase(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), XYDelaunayGenerator::XYDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

199 { return _pars.isParamValid(name); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ isPartitionerForced()

bool MooseMesh::isPartitionerForced ( ) const
inline

Tell the user if the partitioner was overriden for any reason.

Definition at line 1029 of file MooseMesh.h.

1029 { return _partitioner_overridden; }
bool _partitioner_overridden
Definition: MooseMesh.h:1464

◆ isRegularOrthogonal()

bool MooseMesh::isRegularOrthogonal ( )
inline

Getter to query if the mesh was detected to be regular and orthogonal.

Definition at line 1059 of file MooseMesh.h.

Referenced by AddPeriodicBCAction::setPeriodicVars().

1059 { return _regular_orthogonal_mesh; }
bool _regular_orthogonal_mesh
Boolean indicating whether this mesh was detected to be regular and orthogonal.
Definition: MooseMesh.h:1604

◆ isSemiLocal()

bool MooseMesh::isSemiLocal ( Node *const  node) const

Returns true if the node is semi-local.

Parameters
nodeNode pointer
Returns
true is the node is semi-local, false otherwise

Definition at line 1019 of file MooseMesh.C.

1020 {
1021  return _semilocal_node_list.find(node) != _semilocal_node_list.end();
1022 }
std::set< Node * > _semilocal_node_list
Used for generating the semilocal node range.
Definition: MooseMesh.h:1515
virtual const Node & node(const dof_id_type i) const
Various accessors (pointers/references) for Node "i".
Definition: MooseMesh.C:847

◆ isSplit()

bool MooseMesh::isSplit ( ) const
inline
Returns
Whether or not this mesh comes from a split mesh

Definition at line 1345 of file MooseMesh.h.

1345 { return _is_split; }
const bool _is_split
Whether or not we are using a (pre-)split mesh (automatically DistributedMesh)
Definition: MooseMesh.h:1613

◆ isTranslatedPeriodic()

bool MooseMesh::isTranslatedPeriodic ( unsigned int  nonlinear_var_num,
unsigned int  component 
) const

Returns whether this generated mesh is periodic in the given dimension for the given variable.

Parameters
nonlinear_var_num- The nonlinear variable number
component- An integer representing the desired component (dimension)

Definition at line 2301 of file MooseMesh.C.

Referenced by minPeriodicVector().

2302 {
2303  mooseAssert(component < dimension(), "Requested dimension out of bounds");
2304 
2305  if (_periodic_dim.find(nonlinear_var_num) != _periodic_dim.end())
2306  return _periodic_dim.at(nonlinear_var_num)[component];
2307  else
2308  return false;
2309 }
virtual unsigned int dimension() const
Returns MeshBase::mesh_dimension(), (not MeshBase::spatial_dimension()!) of the underlying libMesh me...
Definition: MooseMesh.C:2980
std::map< unsigned int, std::vector< bool > > _periodic_dim
A map of vectors indicating which dimensions are periodic in a regular orthogonal mesh for the specif...
Definition: MooseMesh.h:1653

◆ lengthUnit()

const MooseUnits & MooseMesh::lengthUnit ( ) const
Returns
the length unit of this mesh provided through the coordinate transformation object

Definition at line 4410 of file MooseMesh.C.

4411 {
4412  mooseAssert(_coord_transform, "This must be non-null");
4413  return _coord_transform->lengthUnit();
4414 }
std::unique_ptr< MooseAppCoordTransform > _coord_transform
A coordinate transformation object that describes how to transform this problem&#39;s coordinate system i...
Definition: MooseMesh.h:1911

◆ localNodesBegin() [1/2]

MeshBase::node_iterator MooseMesh::localNodesBegin ( )

Calls local_nodes_begin/end() on the underlying libMesh mesh object.

Definition at line 3107 of file MooseMesh.C.

3108 {
3109  return getMesh().local_nodes_begin();
3110 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ localNodesBegin() [2/2]

MeshBase::const_node_iterator MooseMesh::localNodesBegin ( ) const

Definition at line 3119 of file MooseMesh.C.

3120 {
3121  return getMesh().local_nodes_begin();
3122 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ localNodesEnd() [1/2]

MeshBase::node_iterator MooseMesh::localNodesEnd ( )

Definition at line 3113 of file MooseMesh.C.

3114 {
3115  return getMesh().local_nodes_end();
3116 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ localNodesEnd() [2/2]

MeshBase::const_node_iterator MooseMesh::localNodesEnd ( ) const

Definition at line 3125 of file MooseMesh.C.

3126 {
3127  return getMesh().local_nodes_end();
3128 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ mapPoints()

void MooseMesh::mapPoints ( const std::vector< Point > &  from,
const std::vector< Point > &  to,
std::vector< QpMap > &  qp_map 
)
private

Find the closest points that map "from" to "to" and fill up "qp_map".

Essentially, for each point in "from" find the closest point in "to".

Parameters
fromThe reference positions in the parent of the the points we're mapping from
toThe reference positions in the parent of the the points we're mapping to
qp_mapThis will be filled with QpMap objects holding the mappings.

Definition at line 2640 of file MooseMesh.C.

Referenced by buildPRefinementAndCoarseningMaps(), and findAdaptivityQpMaps().

2643 {
2644  unsigned int n_from = from.size();
2645  unsigned int n_to = to.size();
2646 
2647  qp_map.resize(n_from);
2648 
2649  for (unsigned int i = 0; i < n_from; ++i)
2650  {
2651  const Point & from_point = from[i];
2652 
2653  QpMap & current_map = qp_map[i];
2654 
2655  for (unsigned int j = 0; j < n_to; ++j)
2656  {
2657  const Point & to_point = to[j];
2658  Real distance = (from_point - to_point).norm();
2659 
2660  if (distance < current_map._distance)
2661  {
2662  current_map._distance = distance;
2663  current_map._from = i;
2664  current_map._to = j;
2665  }
2666  }
2667  }
2668 }
Helper object for holding qp mapping info.
Definition: MooseMesh.h:73
unsigned int _to
The qp to map to.
Definition: MooseMesh.h:82
Real distance(const Point &p)
unsigned int _from
The qp to map from.
Definition: MooseMesh.h:79
auto norm(const T &a) -> decltype(std::abs(a))
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real _distance
The distance between them.
Definition: MooseMesh.h:85

◆ markFiniteVolumeInfoDirty()

void MooseMesh::markFiniteVolumeInfoDirty ( )
inline

Mark the finite volume information as dirty.

Definition at line 1317 of file MooseMesh.h.

1317 { _finite_volume_info_dirty = true; }
bool _finite_volume_info_dirty
Definition: MooseMesh.h:1642

◆ maxElementID()

dof_id_type MooseMesh::maxElementID ( unsigned int  elem_id_index) const
inline

Return the maximum element ID for an extra element integer with its accessing index.

Definition at line 1122 of file MooseMesh.h.

1122 { return _max_ids[elem_id_index]; }
std::vector< dof_id_type > _max_ids
Maximum integer ID for each extra element integer.
Definition: MooseMesh.h:1873

◆ maxElemId()

dof_id_type MooseMesh::maxElemId ( ) const
virtual

Definition at line 3173 of file MooseMesh.C.

Referenced by SolutionUserObjectBase::pointValueGradientWrapper(), and SolutionUserObjectBase::pointValueWrapper().

3174 {
3175  return getMesh().max_elem_id();
3176 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual dof_id_type max_elem_id() const=0

◆ maxHLevel()

unsigned int MooseMesh::maxHLevel ( ) const
inline

Returns the maximum h-refinement level of all elements.

Definition at line 1380 of file MooseMesh.h.

1380 { return _max_h_level; }
unsigned int _max_h_level
Maximum h-refinement level of all elements.
Definition: MooseMesh.h:1924

◆ maxNodeId()

dof_id_type MooseMesh::maxNodeId ( ) const
virtual

Calls max_node/elem_id() on the underlying libMesh mesh object.

This may be larger than n_nodes/elem() in cases where the id numbering is not contiguous.

Definition at line 3167 of file MooseMesh.C.

3168 {
3169  return getMesh().max_node_id();
3170 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual dof_id_type max_node_id() const=0

◆ maxPLevel()

unsigned int MooseMesh::maxPLevel ( ) const
inline

Returns the maximum p-refinement level of all elements.

Definition at line 1375 of file MooseMesh.h.

1375 { return _max_p_level; }
unsigned int _max_p_level
Maximum p-refinement level of all elements.
Definition: MooseMesh.h:1922

◆ meshBoundaryIds()

const std::set< BoundaryID > & MooseMesh::meshBoundaryIds ( ) const

Returns a read-only reference to the set of boundary IDs currently present in the Mesh.

Definition at line 3257 of file MooseMesh.C.

Referenced by BoundaryRestrictable::isBoundarySubset().

3258 {
3259  return _mesh_boundary_ids;
3260 }
std::set< BoundaryID > _mesh_boundary_ids
A set of boundary IDs currently present in the mesh.
Definition: MooseMesh.h:1551

◆ meshChanged()

void MooseMesh::meshChanged ( )

Declares that the MooseMesh has changed, invalidates cached data and rebuilds caches.

Sets a flag so that clients of the MooseMesh also know when it has changed.

Definition at line 909 of file MooseMesh.C.

Referenced by DisplacedProblem::init(), FEProblemBase::init(), DisplacedProblem::meshChanged(), and FEProblemBase::meshChanged().

910 {
911  TIME_SECTION("meshChanged", 3, "Updating Because Mesh Changed");
912 
913  update();
914 
915  // Delete all of the cached ranges
916  _active_local_elem_range.reset();
917  _active_node_range.reset();
919  _local_node_range.reset();
920  _bnd_node_range.reset();
921  _bnd_elem_range.reset();
922 
923  // Rebuild the ranges
929 
930  // Call the callback function onMeshChanged
931  onMeshChanged();
932 }
std::unique_ptr< libMesh::NodeRange > _active_node_range
Definition: MooseMesh.h:1524
libMesh::ConstElemRange * getActiveLocalElementRange()
Return pointers to range objects for various types of ranges (local nodes, boundary elems...
Definition: MooseMesh.C:1288
virtual void onMeshChanged()
Declares a callback function that is executed at the conclusion of meshChanged(). ...
Definition: MooseMesh.C:935
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > > _bnd_elem_range
Definition: MooseMesh.h:1529
std::unique_ptr< libMesh::ConstElemRange > _active_local_elem_range
A range for use with threading.
Definition: MooseMesh.h:1521
libMesh::ConstNodeRange * getLocalNodeRange()
Definition: MooseMesh.C:1325
void update()
Calls buildNodeListFromSideList(), buildNodeList(), and buildBndElemList().
Definition: MooseMesh.C:641
libMesh::NodeRange * getActiveNodeRange()
Definition: MooseMesh.C:1302
libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > * getBoundaryElementRange()
Definition: MooseMesh.C:1353
std::unique_ptr< libMesh::ConstNodeRange > _local_node_range
Definition: MooseMesh.h:1525
libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > * getBoundaryNodeRange()
Definition: MooseMesh.C:1339
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > > _bnd_node_range
Definition: MooseMesh.h:1527
std::unique_ptr< SemiLocalNodeRange > _active_semilocal_node_range
Definition: MooseMesh.h:1523

◆ meshNodesetIds()

const std::set< BoundaryID > & MooseMesh::meshNodesetIds ( ) const

Returns a read-only reference to the set of nodesets currently present in the Mesh.

Definition at line 3269 of file MooseMesh.C.

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

3270 {
3271  return _mesh_nodeset_ids;
3272 }
std::set< BoundaryID > _mesh_nodeset_ids
Definition: MooseMesh.h:1553

◆ meshSidesetIds()

const std::set< BoundaryID > & MooseMesh::meshSidesetIds ( ) const

Returns a read-only reference to the set of sidesets currently present in the Mesh.

Definition at line 3263 of file MooseMesh.C.

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

3264 {
3265  return _mesh_sideset_ids;
3266 }
std::set< BoundaryID > _mesh_sideset_ids
Definition: MooseMesh.h:1552

◆ meshSubdomains()

const std::set< SubdomainID > & MooseMesh::meshSubdomains ( ) const

◆ messagePrefix()

std::string MooseBase::messagePrefix ( const bool  hit_prefix = true) const
inlineinherited
Returns
A prefix to be used in messages that contain the input file location associated with this object (if any) and the name and type of the object.

Definition at line 256 of file MooseBase.h.

Referenced by MooseBase::callMooseError(), MooseBase::errorPrefix(), MooseBase::mooseDeprecated(), MooseBase::mooseInfo(), and MooseBase::mooseWarning().

257  {
258  return messagePrefix(_pars, hit_prefix);
259  }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:256

◆ minElementID()

dof_id_type MooseMesh::minElementID ( unsigned int  elem_id_index) const
inline

Return the minimum element ID for an extra element integer with its accessing index.

Definition at line 1127 of file MooseMesh.h.

1127 { return _min_ids[elem_id_index]; }
std::vector< dof_id_type > _min_ids
Minimum integer ID for each extra element integer.
Definition: MooseMesh.h:1875

◆ minPeriodicDistance()

Real MooseMesh::minPeriodicDistance ( unsigned int  nonlinear_var_num,
Point  p,
Point  q 
) const

This function returns the distance between two points on the mesh taking into account periodicity for the given variable number.

Parameters
nonlinear_var_num- The nonlinear variable number
p,q- The points for which to compute a minimum distance
Returns
Real - The L2 distance between p and q

Definition at line 2337 of file MooseMesh.C.

2338 {
2339  return minPeriodicVector(nonlinear_var_num, p, q).norm();
2340 }
auto norm() const -> decltype(std::norm(Real()))
RealVectorValue minPeriodicVector(unsigned int nonlinear_var_num, Point p, Point q) const
This function returns the minimum vector between two points on the mesh taking into account periodici...
Definition: MooseMesh.C:2312

◆ minPeriodicVector()

RealVectorValue MooseMesh::minPeriodicVector ( unsigned int  nonlinear_var_num,
Point  p,
Point  q 
) const

This function returns the minimum vector between two points on the mesh taking into account periodicity for the given variable number.

Parameters
nonlinear_var_num- The nonlinear variable number
p,q- The points between which to compute a minimum vector
Returns
RealVectorValue - The vector pointing from p to q

Definition at line 2312 of file MooseMesh.C.

Referenced by minPeriodicDistance().

2313 {
2314  for (unsigned int i = 0; i < dimension(); ++i)
2315  {
2316  // check to see if we're closer in real or periodic space in x, y, and z
2317  if (isTranslatedPeriodic(nonlinear_var_num, i))
2318  {
2319  // Need to test order before differencing
2320  if (p(i) > q(i))
2321  {
2322  if (p(i) - q(i) > _half_range(i))
2323  p(i) -= _half_range(i) * 2;
2324  }
2325  else
2326  {
2327  if (q(i) - p(i) > _half_range(i))
2328  p(i) += _half_range(i) * 2;
2329  }
2330  }
2331  }
2332 
2333  return q - p;
2334 }
RealVectorValue _half_range
A convenience vector used to hold values in each dimension representing half of the range...
Definition: MooseMesh.h:1658
bool isTranslatedPeriodic(unsigned int nonlinear_var_num, unsigned int component) const
Returns whether this generated mesh is periodic in the given dimension for the given variable...
Definition: MooseMesh.C:2301
virtual unsigned int dimension() const
Returns MeshBase::mesh_dimension(), (not MeshBase::spatial_dimension()!) of the underlying libMesh me...
Definition: MooseMesh.C:2980

◆ mooseDeprecated() [1/2]

template<typename... Args>
void SolutionInvalidInterface::mooseDeprecated ( Args &&...  args) const
inlineinherited

Definition at line 87 of file SolutionInvalidInterface.h.

Referenced by FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::advanceMultiApps(), MultiApp::appProblem(), ChangeOverTimestepPostprocessor::ChangeOverTimestepPostprocessor(), AddVariableAction::determineType(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), elem(), UserForcingFunction::f(), FaceFaceConstraint::FaceFaceConstraint(), FunctionDT::FunctionDT(), RandomICBase::generateRandom(), getBoundariesToElems(), Control::getExecuteOptions(), FEProblemBase::getNonlinearSystem(), FEProblemBase::getUserObjects(), FEProblemBase::hasPostprocessor(), MultiAppNearestNodeTransfer::MultiAppNearestNodeTransfer(), MultiAppShapeEvaluationTransfer::MultiAppShapeEvaluationTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NodalScalarKernel::NodalScalarKernel(), node(), FixedPointSolve::numPicardIts(), RelationshipManager::operator>=(), PercentChangePostprocessor::PercentChangePostprocessor(), ReferenceResidualConvergence::ReferenceResidualConvergence(), Residual::Residual(), setBoundaryToNormalMap(), Exodus::setOutputDimension(), TagVectorAux::TagVectorAux(), UserForcingFunction::UserForcingFunction(), and VariableResidual::VariableResidual().

88  {
89  _si_moose_base.MooseBase::mooseDeprecated(std::forward<Args>(args)...);
90  flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": deprecation");
91  }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ mooseDeprecated() [2/2]

template<typename... Args>
void MooseBase::mooseDeprecated ( Args &&...  args) const
inlineinherited

Definition at line 314 of file MooseBase.h.

Referenced by DataFileInterface::getDataFileName(), DataFileInterface::getDataFileNameByName(), MooseApp::getRecoverFileBase(), MooseApp::hasRecoverFileBase(), and MooseApp::setupOptions().

315  {
317  _console, false, true, messagePrefix(true), std::forward<Args>(args)...);
318  }
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, Args &&... args)
Definition: MooseError.h:265
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:256

◆ mooseDocumentedError()

template<typename... Args>
void MooseBase::mooseDocumentedError ( const std::string &  repo_name,
const unsigned int  issue_num,
Args &&...  args 
) const
inlineinherited

Definition at line 277 of file MooseBase.h.

Referenced by ArrayDGLowerDKernel::ArrayDGLowerDKernel(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayLowerDIntegratedBC::ArrayLowerDIntegratedBC(), DGLowerDKernel::DGLowerDKernel(), HFEMDirichletBC::HFEMDirichletBC(), and LowerDIntegratedBC::LowerDIntegratedBC().

280  {
282  repo_name, issue_num, argumentsToString(std::forward<Args>(args)...)),
283  /* with_prefix = */ true);
284  }
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr) const
External method for calling moose error with added object context.
Definition: MooseBase.C:105
std::string formatMooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, const std::string &msg)
Formats a documented error.
Definition: MooseError.C:128

◆ mooseError()

template<typename... Args>
void MooseBase::mooseError ( Args &&...  args) const
inlineinherited

Emits an error prefixed with object name and type and optionally a file path to the top-level block parameter if available.

Definition at line 271 of file MooseBase.h.

Referenced by CopyMeshPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), PetscExternalPartitioner::_do_partition(), MultiAppGeneralFieldTransfer::acceptPointInOriginMesh(), AutoCheckpointAction::act(), SetupMeshCompleteAction::act(), CheckIntegrityAction::act(), CreateExecutionerAction::act(), AddBoundsVectorsAction::act(), AddMeshGeneratorAction::act(), AddFVICAction::act(), AddICAction::act(), AddVectorPostprocessorAction::act(), InitProblemAction::act(), CheckFVBCAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), CombineComponentsMeshes::act(), SetupMeshAction::act(), SplitMeshAction::act(), AdaptivityAction::act(), AddTimeStepperAction::act(), ChainControlSetupAction::act(), CSGOnlyAction::act(), DeprecatedBlockAction::act(), SetupPredictorAction::act(), SetupTimeStepperAction::act(), CreateDisplacedProblemAction::act(), SetAdaptivityOptionsAction::act(), MaterialDerivativeTestAction::act(), MaterialOutputAction::act(), AddMFEMSubMeshAction::act(), AddPeriodicBCAction::act(), CommonOutputAction::act(), Action::Action(), FEProblemBase::adaptMesh(), ADArrayReaction::ADArrayReaction(), MooseVariableFV< Real >::adCurlSln(), MooseVariableFV< Real >::adCurlSlnNeighbor(), AddActionComponentAction::AddActionComponentAction(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), DiffusionCG::addBoundaryConditionsFromComponents(), PhysicsComponentInterface::addBoundaryConditionsFromComponents(), FEProblemBase::addConstraint(), FEProblemBase::addDamper(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), DistributedRectilinearMeshGenerator::addElement(), MooseApp::addExecutor(), FEProblemBase::addFunction(), SubProblem::addFunctor(), FEProblemBase::addFVInitialCondition(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), FEProblemBase::addInitialCondition(), PhysicsComponentInterface::addInitialConditionsFromComponents(), FEProblemBase::addInterfaceKernel(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblem::addLineSearch(), FEProblemBase::addLineSearch(), MFEMProblem::addMaterial(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), SubProblem::addPiecewiseByBlockLambdaFunctor(), DiracKernelBase::addPoint(), DistributedRectilinearMeshGenerator::addPoint(), DiracKernelBase::addPointWithValidId(), FEProblemBase::addPostprocessor(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), addQuadratureNode(), Action::addRelationshipManager(), FEProblemBase::addReporter(), FEProblemBase::addScalarKernel(), WebServerControl::addServerAction(), AddVariableAction::addVariable(), FEProblemBase::addVectorPostprocessor(), SubProblem::addVectorTag(), MooseLinearVariableFV< Real >::adError(), ADInterfaceKernelTempl< T >::ADInterfaceKernelTempl(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), MooseVariableScalar::adUDot(), Output::advancedExecuteOn(), AdvectiveFluxAux::AdvectiveFluxAux(), MooseVariableBase::allDofIndices(), NEML2ModelExecutor::applyPredictor(), MooseApp::appNameToLibName(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayConstantIC::ArrayConstantIC(), ArrayDGKernel::ArrayDGKernel(), ArrayDiffusion::ArrayDiffusion(), ArrayFunctionIC::ArrayFunctionIC(), ArrayReaction::ArrayReaction(), ArrayTimeDerivative::ArrayTimeDerivative(), MooseApp::attachRelationshipManagers(), AddPeriodicBCAction::autoTranslationBoundaries(), AuxKernelBase::AuxKernelBase(), Function::average(), Axisymmetric2D3DSolutionFunction::Axisymmetric2D3DSolutionFunction(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), Boundary2DDelaunayGenerator::Boundary2DDelaunayGenerator(), BoundingValueElementDamper::BoundingValueElementDamper(), BoundingValueNodalDamper::BoundingValueNodalDamper(), BreakMeshByBlockGeneratorBase::BreakMeshByBlockGeneratorBase(), buildCoarseningMap(), MultiApp::buildComm(), DistributedRectilinearMeshGenerator::buildCube(), PiecewiseTabularInterface::buildFromFile(), TimedSubdomainModifier::buildFromFile(), PiecewiseTabularInterface::buildFromJSON(), TimedSubdomainModifier::buildFromParameters(), PiecewiseTabularInterface::buildFromXY(), PiecewiseLinearBase::buildInterpolation(), buildLowerDMesh(), TiledMesh::buildMesh(), GeneratedMesh::buildMesh(), SpiralAnnularMesh::buildMesh(), MeshGeneratorMesh::buildMesh(), ImageMeshGenerator::buildMesh3D(), ImageMesh::buildMesh3D(), buildRefinementMap(), MaterialBase::buildRequiredMaterials(), buildTypedMesh(), cacheFaceInfoVariableOwnership(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), EigenExecutionerBase::chebyshev(), SubProblem::checkBlockMatProps(), PhysicsBase::checkBlockRestrictionIdentical(), ComponentBoundaryConditionInterface::checkBoundaryConditionsAllRequested(), SubProblem::checkBoundaryMatProps(), PhysicsBase::checkComponentType(), IterationCountConvergence::checkConvergence(), checkCoordinateSystems(), DiffusionLHDGAssemblyHelper::checkCoupling(), FEProblemBase::checkDependMaterialsHelper(), FEProblemBase::checkDisplacementOrders(), FEProblemBase::checkDuplicatePostprocessorVariableNames(), DefaultConvergenceBase::checkDuplicateSetSharedExecutionerParams(), checkDuplicateSubdomainNames(), FEProblemBase::checkExceptionAndStopSolve(), NEML2ModelExecutor::checkExecutionStage(), MaterialBase::checkExecutionStage(), MeshGenerator::checkGetMesh(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), Steady::checkIntegrity(), EigenExecutionerBase::checkIntegrity(), Eigenvalue::checkIntegrity(), DefaultMultiAppFixedPointConvergence::checkIterationType(), DefaultNonlinearConvergence::checkIterationType(), DefaultSteadyStateConvergence::checkIterationType(), ExplicitTimeIntegrator::checkLinearConvergence(), MooseApp::checkMetaDataIntegrity(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), PostprocessorInterface::checkParam(), FEProblemBase::checkProblemIntegrity(), Sampler::checkReinitStatus(), MooseApp::checkReservedCapability(), MultiAppGeneralFieldNearestLocationTransfer::checkRestrictionsForSource(), MultiAppPostprocessorToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppScalarToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorTransfer::checkSiblingsTransferSupported(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MultiAppMFEMCopyTransfer::checkSiblingsTransferSupported(), MultiAppCopyTransfer::checkSiblingsTransferSupported(), MultiAppTransfer::checkSiblingsTransferSupported(), MFEMSolverBase::checkSpectralEquivalence(), MaterialBase::checkStatefulSanity(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), FEProblemBase::checkUserObjects(), Moose::PetscSupport::checkUserProvidedPetscOption(), DomainUserObject::checkVariable(), MultiAppTransfer::checkVariable(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), LibmeshPartitioner::clone(), clone(), CombinerGenerator::CombinerGenerator(), ComparisonPostprocessor::comparisonIsTrue(), MooseVariableFieldBase::componentName(), CompositeFunction::CompositeFunction(), ElementH1ErrorFunctionAux::compute(), NodalPatchRecovery::compute(), FEProblemBase::computeBounds(), VariableCondensationPreconditioner::computeDInverseDiag(), CompositionDT::computeDT(), ArrayDGKernel::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighResidual(), InternalSideIntegralPostprocessor::computeFaceInfoIntegral(), SideIntegralPostprocessor::computeFaceInfoIntegral(), MooseVariableFieldBase::computeFaceValues(), TimeSequenceStepperBase::computeFailedDT(), IterationAdaptiveDT::computeFailedDT(), TimeStepper::computeFailedDT(), computeFiniteVolumeCoords(), HistogramVectorPostprocessor::computeHistogram(), ArrayKernel::computeJacobian(), ArrayIntegratedBC::computeJacobian(), FVFluxKernel::computeJacobian(), NodalConstraint::computeJacobian(), FEProblemBase::computeJacobianTags(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), EigenProblem::computeMatricesTags(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), ArrayKernel::computeOffDiagJacobian(), ArrayIntegratedBC::computeOffDiagJacobian(), FVElementalKernel::computeOffDiagJacobian(), Moose::Kokkos::ResidualObject::computeOffDiagJacobian(), MortarScalarBase::computeOffDiagJacobianScalar(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), MaterialBase::computeProperties(), SideFVFluxBCIntegral::computeQpIntegral(), ScalarKernel::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), NodalEqualValueConstraint::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), NodeElemConstraint::computeQpJacobian(), ADArrayNodalKernel::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), ScalarKernel::computeQpResidual(), MassMatrix::computeQpResidual(), HDGKernel::computeQpResidual(), DiffusionLHDGDirichletBC::computeQpResidual(), DiffusionLHDGPrescribedGradientBC::computeQpResidual(), NodalEqualValueConstraint::computeQpResidual(), IPHDGBC::computeQpResidual(), KernelValue::computeQpResidual(), TorchScriptMaterial::computeQpValues(), InterfaceQpValueUserObject::computeRealValue(), ArrayKernel::computeResidual(), ArrayIntegratedBC::computeResidual(), FVFluxBC::computeResidual(), FVFluxKernel::computeResidual(), NodalConstraint::computeResidual(), FVFluxKernel::computeResidualAndJacobian(), ResidualObject::computeResidualAndJacobian(), FEProblemBase::computeResidualAndJacobian(), HDGKernel::computeResidualAndJacobianOnSide(), FEProblemBase::computeResidualInternal(), FEProblemBase::computeResidualTag(), FEProblemBase::computeResidualTags(), FEProblemBase::computeResidualType(), KernelScalarBase::computeScalarOffDiagJacobian(), ADKernelScalarBase::computeScalarQpResidual(), ADMortarScalarBase::computeScalarQpResidual(), MortarScalarBase::computeScalarQpResidual(), KernelScalarBase::computeScalarQpResidual(), TimeStepper::computeStep(), ActuallyExplicitEuler::computeTimeDerivatives(), ExplicitEuler::computeTimeDerivatives(), ImplicitEuler::computeTimeDerivatives(), BDF2::computeTimeDerivatives(), NewmarkBeta::computeTimeDerivatives(), CentralDifference::computeTimeDerivatives(), CrankNicolson::computeTimeDerivatives(), LStableDirk2::computeTimeDerivatives(), LStableDirk3::computeTimeDerivatives(), ImplicitMidpoint::computeTimeDerivatives(), ExplicitTVDRK2::computeTimeDerivatives(), AStableDirk4::computeTimeDerivatives(), LStableDirk4::computeTimeDerivatives(), ExplicitRK2::computeTimeDerivatives(), MultiAppGeometricInterpolationTransfer::computeTransformation(), BuildArrayVariableAux::computeValue(), TagVectorArrayVariableAux::computeValue(), NearestNodeValueAux::computeValue(), ProjectionAux::computeValue(), PenetrationAux::computeValue(), ConcentricCircleMesh::ConcentricCircleMesh(), ConditionalEnableControl::ConditionalEnableControl(), ConservativeAdvectionBCTempl< false >::ConservativeAdvectionBCTempl(), TimeStepper::constrainStep(), LibtorchNeuralNetControl::controlNeuralNet(), TransientBase::convergedToSteadyState(), ParsedConvergence::convertRealToBool(), MooseApp::copyInputs(), CopyMeshPartitioner::CopyMeshPartitioner(), CoupledForceNodalKernel::CoupledForceNodalKernel(), MultiApp::createApp(), MooseApp::createExecutors(), AddVariableAction::createInitialConditionAction(), MooseApp::createRMFromTemplateAndInit(), Function::curl(), MooseVariableFV< Real >::curlPhi(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), SidesetInfoVectorPostprocessor::dataHelper(), ReporterTransferInterface::declareClone(), Moose::Kokkos::MaterialBase::declareKokkosPropertyByName(), MeshGenerator::declareMeshProperty(), ReporterTransferInterface::declareVectorClone(), DefaultSteadyStateConvergence::DefaultSteadyStateConvergence(), FunctorRelationshipManager::delete_remote_elements(), deleteRemoteElements(), BicubicSplineFunction::derivative(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), detectPairedSidesets(), MooseApp::determineLibtorchDeviceType(), FEProblemBase::determineSolverSystem(), DGKernel::DGKernel(), MeshDiagnosticsGenerator::diagnosticsLog(), DistributedPositions::DistributedPositions(), Function::div(), FunctorBinnedValuesDivision::divisionIndex(), MooseVariableFV< Real >::divPhi(), FunctorRelationshipManager::dofmap_reinit(), EigenProblem::doFreeNonlinearPowerIterations(), FEProblemBase::duplicateVariableCheck(), MooseApp::dynamicAllRegistration(), MooseApp::dynamicAppRegistration(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), Eigenvalues::Eigenvalues(), ElementalVariableValue::ElementalVariableValue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementIntegerAux::ElementIntegerAux(), ElementMaterialSampler::ElementMaterialSampler(), ElementQualityAux::ElementQualityAux(), ElementUOAux::ElementUOAux(), ExtraIDIntegralVectorPostprocessor::elementValue(), DistributedRectilinearMeshGenerator::elemId(), ProjectionAux::elemOnNodeVariableIsDefinedOn(), EigenKernel::enabled(), MooseApp::errorCheck(), errorIfDistributedMesh(), MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp(), SideIntegralPostprocessor::errorNoFaceInfo(), SideIntegralFunctorPostprocessorTempl< false >::errorNoFaceInfo(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), FixedPointSolve::examineFixedPointConvergence(), MultiAppGeneralFieldTransfer::examineReceivedValueConflicts(), RealToBoolChainControl::execute(), RestartableDataReporter::execute(), DiscreteElementUserObject::execute(), PositionsFunctorValueSampler::execute(), MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppScalarToAuxScalarTransfer::execute(), NodalValueSampler::execute(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppPostprocessorTransfer::execute(), ElementQualityChecker::execute(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), FindValueOnLine::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppMFEMCopyTransfer::execute(), MultiAppCopyTransfer::execute(), MultiAppUserObjectTransfer::execute(), MultiAppGeometricInterpolationTransfer::execute(), InterfaceQpUserObjectBase::execute(), TransientBase::execute(), LeastSquaresFit::execute(), VectorPostprocessorComparison::execute(), LeastSquaresFitHistory::execute(), WebServerControl::execute(), Eigenvalue::execute(), TimeExtremeValue::execute(), DomainUserObject::execute(), FEProblemBase::execute(), FEProblemBase::executeControls(), MooseApp::executeExecutioner(), MultiAppVectorPostprocessorTransfer::executeFromMultiapp(), MultiAppVectorPostprocessorTransfer::executeToMultiapp(), Exodus::Exodus(), ExplicitSSPRungeKutta::ExplicitSSPRungeKutta(), MultiAppGeneralFieldTransfer::extractOutgoingPoints(), NEML2ModelExecutor::extractOutputs(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemSolve::FEProblemSolve(), FileOutput::FileOutput(), NEML2ModelExecutor::fillInputs(), QuadraturePointMultiApp::fillPositions(), CentroidMultiApp::fillPositions(), MultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), VerifyNodalUniqueID::finalize(), ParsedVectorReporter::finalize(), VerifyElementUniqueID::finalize(), ParsedVectorVectorRealReductionReporter::finalize(), DiscreteElementUserObject::finalize(), ElementQualityChecker::finalize(), MemoryUsage::finalize(), PointSamplerBase::finalize(), DiscreteVariableResidualNorm::finalize(), NearestPointAverage::finalize(), NearestPointIntegralVariablePostprocessor::finalize(), MooseApp::finalizeRestore(), Transfer::find_sys(), BreakMeshByBlockGeneratorBase::findFreeBoundaryId(), FunctionDT::FunctionDT(), FunctionMaterialBase< is_ad >::FunctionMaterialBase(), FunctionScalarAux::FunctionScalarAux(), FunctionScalarIC::FunctionScalarIC(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVMassMatrix::FVMassMatrix(), FVMatAdvection::FVMatAdvection(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), GapValueAux::GapValueAux(), WorkBalance::gather(), ElementSubdomainModifierBase::gatherPatchElements(), Boundary2DDelaunayGenerator::General2DDelaunay(), ElementOrderConversionGenerator::generate(), MoveNodeGenerator::generate(), PlaneIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), SideSetsFromNormalsGenerator::generate(), SmoothMeshGenerator::generate(), SubdomainPerElementGenerator::generate(), TiledMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), MeshRepairGenerator::generate(), SideSetsFromPointsGenerator::generate(), StitchMeshGenerator::generate(), GeneratedMeshGenerator::generate(), FlipSidesetGenerator::generate(), CoarsenBlockGenerator::generate(), Boundary2DDelaunayGenerator::generate(), BreakMeshByBlockGenerator::generate(), MeshDiagnosticsGenerator::generate(), ParsedGenerateNodeset::generate(), SideSetsFromBoundingBoxGenerator::generate(), StackGenerator::generate(), XYZDelaunayGenerator::generate(), AdvancedExtruderGenerator::generate(), AllSideSetsByNormalsGenerator::generate(), CombinerGenerator::generate(), MeshCollectionGenerator::generate(), MeshExtruderGenerator::generate(), SpiralAnnularMeshGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), CutMeshByLevelSetGeneratorBase::generate(), PatternedMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), BoundingBoxNodeSetGenerator::generate(), MeshGenerator::generateCSG(), MeshGenerator::generateData(), GeneratedMesh::GeneratedMesh(), GeneratedMeshGenerator::GeneratedMeshGenerator(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), CircularBoundaryCorrectionGenerator::generateRadialCorrectionFactor(), RandomICBase::generateRandom(), GenericConstantMaterialTempl< is_ad >::GenericConstantMaterialTempl(), GenericConstantVectorMaterialTempl< is_ad >::GenericConstantVectorMaterialTempl(), GenericFunctionMaterialTempl< is_ad >::GenericFunctionMaterialTempl(), GenericFunctionVectorMaterialTempl< is_ad >::GenericFunctionVectorMaterialTempl(), GenericFunctorGradientMaterialTempl< is_ad >::GenericFunctorGradientMaterialTempl(), GenericFunctorMaterialTempl< is_ad >::GenericFunctorMaterialTempl(), GenericFunctorTimeDerivativeMaterialTempl< is_ad >::GenericFunctorTimeDerivativeMaterialTempl(), GenericVectorFunctorMaterialTempl< is_ad >::GenericVectorFunctorMaterialTempl(), DisplacedProblem::getActualFieldVariable(), FEProblemBase::getActualFieldVariable(), DisplacedProblem::getArrayVariable(), FEProblemBase::getArrayVariable(), getAxisymmetricRadialCoord(), NEML2BatchIndexGenerator::getBatchIndex(), getBlockConnectedBlocks(), VariableOldValueBounds::getBound(), getBoundaryID(), MultiApp::getBoundingBox(), ChainControl::getChainControlDataByName(), WebServerControl::getClientInfo(), getCoarseningMap(), NodalPatchRecoveryBase::getCoefficients(), MultiApp::getCommandLineArgs(), MooseVariableBase::getContinuity(), Control::getControllableParameterByName(), FEProblemBase::getConvergence(), getCoordSystem(), PhysicsBase::getCoupledPhysics(), PropertyReadFile::getData(), DataFileInterface::getDataFilePath(), TransfiniteMeshGenerator::getDiscreteEdge(), FEProblemBase::getDistribution(), MooseVariableBase::getDofIndices(), VariableCondensationPreconditioner::getDofToCondense(), TransfiniteMeshGenerator::getEdge(), GhostingUserObject::getElementalValue(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), PropertyReadFile::getElementData(), getElementIDIndex(), Material::getElementIDNeighbor(), Material::getElementIDNeighborByName(), getElemIDMapping(), getElemIDsOnBlocks(), MultiAppFieldTransfer::getEquationSystem(), WebServerControl::Response::getError(), MultiApp::getExecutioner(), MooseApp::getExecutor(), MFEMVectorFESpace::getFECName(), MultiAppTransfer::getFromMultiApp(), MultiAppTransfer::getFromMultiAppInfo(), FEProblemBase::getFunction(), SubProblem::getFunctor(), FEProblemBase::getFVMatsAndDependencies(), getGeneralAxisymmetricCoordAxis(), MaterialPropertyInterface::getGenericMaterialPropertyByName(), DistributedRectilinearMeshGenerator::getGhostNeighbors(), DistributedRectilinearMeshGenerator::getIndices(), FEProblemBase::getKokkosFunction(), FunctionInterface::getKokkosFunctionByName(), MaterialPropertyInterface::getKokkosMaterialPropertyByName(), FEProblemBase::getLinearConvergenceNames(), SolutionUserObjectBase::getLocalVarIndex(), Material::getMaterialByName(), FEProblemBase::getMaterialData(), FEProblemBase::getMaterialPropertyStorageConsumers(), SubProblem::getMatrixTagID(), AnnularMesh::getMaxInDimension(), GeneratedMesh::getMaxInDimension(), FEProblemBase::getMaxQps(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), AnnularMesh::getMinInDimension(), GeneratedMesh::getMinInDimension(), MultiAppTransfer::getMultiApp(), FEProblemBase::getMultiAppFixedPointConvergenceName(), DistributedRectilinearMeshGenerator::getNeighbors(), Times::getNextTime(), getNodeBlockIds(), PropertyReadFile::getNodeData(), getNodeList(), FEProblemBase::getNonlinearConvergenceNames(), EigenProblem::getNonlinearEigenSystem(), FEProblemBase::getNonlinearSystem(), NEML2ModelExecutor::getOutput(), NEML2ModelExecutor::getOutputDerivative(), NEML2ModelExecutor::getOutputParameterDerivative(), getPairedBoundaryMapping(), MaterialOutputAction::getParams(), ImageMeshGenerator::GetPixelInfo(), ImageMesh::GetPixelInfo(), PlaneIDMeshGenerator::getPlaneID(), Positions::getPosition(), Positions::getPositions(), FEProblemBase::getPositionsObject(), Positions::getPositionsVector2D(), Positions::getPositionsVector3D(), Positions::getPositionsVector4D(), PostprocessorInterface::getPostprocessorValueByNameInternal(), Times::getPreviousTime(), ComponentMaterialPropertyInterface::getPropertyValue(), InterfaceQpUserObjectBase::getQpValue(), getRefinementMap(), MooseBase::getRenamedParam(), ReporterInterface::getReporterContextBaseByName(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), MooseApp::getRMClone(), FEProblemBase::getSampler(), DisplacedProblem::getScalarVariable(), FEProblemBase::getScalarVariable(), MooseObject::getSharedPtr(), InterfaceQpUserObjectBase::getSideAverageValue(), PhysicsBase::getSolverSystem(), DisplacedProblem::getStandardVariable(), FEProblemBase::getStandardVariable(), FEProblemBase::getSteadyStateConvergenceName(), getSubdomainBoundaryIds(), TimedSubdomainModifier::getSubdomainIDAndCheck(), DisplacedProblem::getSystem(), FEProblemBase::getSystem(), FEProblemBase::getSystemBase(), Times::getTimeAtIndex(), FEProblemBase::getTimeFromStateArg(), TransientBase::getTimeIntegratorNames(), Times::getTimes(), MultiAppTransfer::getToMultiApp(), MultiAppTransfer::getToMultiAppInfo(), getUniqueCoordSystem(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), UserObjectInterface::getUserObjectBaseByName(), UserObjectInterface::getUserObjectName(), VectorPostprocessorComponent::getValue(), NumRelationshipManagers::getValue(), Residual::getValue(), SideAverageValue::getValue(), JSONFileReader::getValue(), LineValueSampler::getValue(), FindValueOnLine::getValueAtPoint(), SubProblem::getVariableHelper(), JSONFileReader::getVector(), VectorPostprocessorInterface::getVectorPostprocessorName(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), DisplacedProblem::getVectorVariable(), FEProblemBase::getVectorVariable(), GhostingFromUOAux::GhostingFromUOAux(), MultiApp::globalAppToLocal(), MooseParsedVectorFunction::gradient(), Function::gradient(), FEProblemBase::handleException(), Terminator::handleMessage(), MooseVariableBase::hasDoFsOnNodes(), PostprocessorInterface::hasPostprocessor(), PostprocessorInterface::hasPostprocessorByName(), ReporterInterface::hasReporterValue(), ReporterInterface::hasReporterValueByName(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), HDGKernel::HDGKernel(), TransientBase::incrementStepOrReject(), FixedPointIterationAdaptiveDT::init(), CrankNicolson::init(), CSVTimeSequenceStepper::init(), EigenExecutionerBase::init(), ExplicitTimeIntegrator::init(), TransientBase::init(), FEProblem::init(), AddAuxVariableAction::init(), IterationAdaptiveDT::init(), Eigenvalue::init(), AddVariableAction::init(), init(), Sampler::init(), FEProblemBase::init(), MultiApp::init(), FEProblemBase::initialAdaptMesh(), NestedDivision::initialize(), ReporterPositions::initialize(), DistributedPositions::initialize(), TransformedPositions::initialize(), ElementGroupCentroidPositions::initialize(), FunctorPositions::initialize(), ReporterTimes::initialize(), FunctorTimes::initialize(), ParsedDownSelectionPositions::initialize(), ParsedConvergence::initializeConstantSymbol(), PhysicsBase::initializePhysics(), SteffensenSolve::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), IntegralPreservingFunctionIC::initialSetup(), ChainControlDataPostprocessor::initialSetup(), MultiAppConservativeTransfer::initialSetup(), PiecewiseLinearBase::initialSetup(), FullSolveMultiApp::initialSetup(), PiecewiseLinear::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), CoarsenedPiecewiseLinear::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), LinearFVAdvection::initialSetup(), SolutionScalarAux::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), LinearFVDiffusion::initialSetup(), ExplicitTimeIntegrator::initialSetup(), SolutionAux::initialSetup(), ReferenceResidualConvergence::initialSetup(), NodalVariableValue::initialSetup(), Axisymmetric2D3DSolutionFunction::initialSetup(), ElementSubdomainModifierBase::initialSetup(), Exodus::initialSetup(), CSV::initialSetup(), MooseParsedFunction::initialSetup(), SolutionUserObjectBase::initialSetup(), FEProblemBase::initialSetup(), SubProblem::initialSetup(), AdvancedOutput::initOutputList(), AdvancedOutput::initShowHideLists(), Function::integral(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceIntegralVariableValuePostprocessor::InterfaceIntegralVariableValuePostprocessor(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), InterfaceTimeKernel::InterfaceTimeKernel(), InternalSideIndicatorBase::InternalSideIndicatorBase(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), EigenExecutionerBase::inversePowerIteration(), InversePowerMethod::InversePowerMethod(), Sampler::isAdaptiveSamplingCompleted(), isBoundaryFullyExternalToSubdomains(), MooseVariableBase::isNodal(), IterationAdaptiveDT::IterationAdaptiveDT(), IterationCountConvergence::IterationCountConvergence(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), MooseApp::libNameToAppName(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), LinearCombinationPostprocessor::LinearCombinationPostprocessor(), LinearNodalConstraint::LinearNodalConstraint(), LineMaterialSamplerBase< Real >::LineMaterialSamplerBase(), LineSearch::lineSearch(), LineValueSampler::LineValueSampler(), MooseApp::loadLibraryAndDependencies(), MultiAppGeneralFieldTransfer::locatePointReceivers(), LowerBoundNodalKernel::LowerBoundNodalKernel(), MooseLinearVariableFV< Real >::lowerDError(), PNGOutput::makePNG(), ReporterPointMarker::markerSetup(), SubProblem::markFamilyPRefinement(), MassMatrix::MassMatrix(), Material::Material(), MaterialRealTensorValueAuxTempl< is_ad >::MaterialRealTensorValueAuxTempl(), MaterialRealVectorValueAuxTempl< T, is_ad, is_functor >::MaterialRealVectorValueAuxTempl(), MaterialStdVectorRealGradientAux::MaterialStdVectorRealGradientAux(), Distribution::median(), FunctorRelationshipManager::mesh_reinit(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshExtruderGenerator::MeshExtruderGenerator(), MeshRepairGenerator::MeshRepairGenerator(), MFEMCrossProductAux::MFEMCrossProductAux(), MFEMDotProductAux::MFEMDotProductAux(), SetupMeshAction::modifyParamsForUseSplit(), MeshMetaDataInterface::mooseErrorInternal(), MooseLinearVariableFV< Real >::MooseLinearVariableFV(), MooseMesh(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableConstMonomial::MooseVariableConstMonomial(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppMFEMCopyTransfer::MultiAppMFEMCopyTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NearestNodeDistanceAux::NearestNodeDistanceAux(), FEProblemBase::needsPreviousNewtonIteration(), NewmarkBeta::NewmarkBeta(), NodalConstraint::NodalConstraint(), MooseVariableFV< Real >::nodalDofIndex(), MooseVariableFV< Real >::nodalDofIndexNeighbor(), MooseLinearVariableFV< Real >::nodalError(), MooseVariableFV< Real >::nodalMatrixTagValue(), NodalPatchRecoveryAuxBase::NodalPatchRecoveryAuxBase(), NodalScalarKernel::NodalScalarKernel(), MooseVariableFV< Real >::nodalValueArray(), MooseVariableFV< Real >::nodalValueOldArray(), MooseVariableFV< Real >::nodalValueOlderArray(), NodalVariableValue::NodalVariableValue(), MooseVariableFV< Real >::nodalVectorTagValue(), DistributedRectilinearMeshGenerator::nodeId(), MooseVariableFV< Real >::numberOfDofsNeighbor(), NumDOFs::NumDOFs(), NumFailedTimeSteps::NumFailedTimeSteps(), DistributedRectilinearMeshGenerator::numNeighbors(), NumNonlinearIterations::NumNonlinearIterations(), NumVars::NumVars(), Output::onInterval(), FunctorRelationshipManager::operator()(), RelationshipManager::operator==(), ActionComponent::outerSurfaceArea(), ActionComponent::outerSurfaceBoundaries(), XDA::output(), SolutionHistory::output(), Exodus::output(), Output::Output(), AdvancedOutput::outputElementalVariables(), AdvancedOutput::outputInput(), MooseApp::outputMachineReadableData(), AdvancedOutput::outputNodalVariables(), AdvancedOutput::outputPostprocessors(), AdvancedOutput::outputReporters(), AdvancedOutput::outputScalarVariables(), Exodus::outputSetup(), AdvancedOutput::outputSystemInformation(), Console::outputVectorPostprocessors(), AdvancedOutput::outputVectorPostprocessors(), DistributedRectilinearMeshGenerator::paritionSquarely(), PiecewiseBilinear::parse(), ParsedConvergence::ParsedConvergence(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedODEKernel::ParsedODEKernel(), MultiAppConservativeTransfer::performAdjustment(), ExplicitTimeIntegrator::performExplicitSolve(), PetscExternalPartitioner::PetscExternalPartitioner(), MooseVariableFV< Real >::phiLowerSize(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), PIDTransientControl::PIDTransientControl(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), PiecewiseMulticonstant::PiecewiseMulticonstant(), PiecewiseMultiInterpolation::PiecewiseMultiInterpolation(), PiecewiseTabularBase::PiecewiseTabularBase(), PiecewiseTabularInterface::PiecewiseTabularInterface(), CutMeshByLevelSetGeneratorBase::pointPairLevelSetInterception(), SolutionUserObjectBase::pointValueGradientWrapper(), SolutionUserObjectBase::pointValueWrapper(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessorByName(), LStableDirk2::postResidual(), LStableDirk3::postResidual(), ImplicitMidpoint::postResidual(), ExplicitTVDRK2::postResidual(), AStableDirk4::postResidual(), LStableDirk4::postResidual(), ExplicitRK2::postResidual(), EigenProblem::postScaleEigenVector(), VariableCondensationPreconditioner::preallocateCondensedJacobian(), ADKernelValueTempl< T >::precomputeQpJacobian(), FunctorKernel::precomputeQpResidual(), Predictor::Predictor(), TransientBase::preExecute(), prepare(), prepared(), ElementSubdomainModifierBase::prepareVariableForReinitialization(), FixedPointSolve::printFixedPointConvergenceReason(), PseudoTimestep::PseudoTimestep(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readExodusII(), SolutionUserObjectBase::readXda(), CoarsenBlockGenerator::recursiveCoarsen(), MooseApp::recursivelyCreateExecutors(), FunctorRelationshipManager::redistribute(), ReferenceResidualConvergence::ReferenceResidualConvergence(), MooseApp::registerRestartableData(), MooseApp::registerRestartableNameWithFilter(), Sampler::reinit(), RelativeSolutionDifferenceNorm::RelativeSolutionDifferenceNorm(), MFEMTransient::relativeSolutionDifferenceNorm(), MooseApp::removeRelationshipManager(), PhysicsBase::reportPotentiallyMissedParameters(), MooseApp::restore(), RinglebMesh::RinglebMesh(), RinglebMeshGenerator::RinglebMeshGenerator(), MooseApp::run(), MooseApp::runInputs(), PiecewiseMultiInterpolation::sample(), ScalarComponentIC::ScalarComponentIC(), MortarScalarBase::scalarVariable(), DistributedRectilinearMeshGenerator::scaleNodalPositions(), BicubicSplineFunction::secondDerivative(), MooseVariableFV< Real >::secondPhi(), MooseVariableFV< Real >::secondPhiFace(), MooseVariableFV< Real >::secondPhiFaceNeighbor(), MooseVariableFV< Real >::secondPhiNeighbor(), FunctorRelationshipManager::set_mesh(), MooseVariableBase::setActiveTags(), DistributedRectilinearMeshGenerator::setBoundaryNames(), setCoordSystem(), FEProblemBase::setCoupling(), PiecewiseBase::setData(), FileOutput::setFileBaseInternal(), setGeneralAxisymmetricCoordAxes(), FEProblemSolve::setInnerSolve(), MeshGenerator::setMeshProperty(), MooseApp::setMFEMDevice(), FVPointValueConstraint::setMyElem(), FEProblemBase::setNonlocalCouplingMatrix(), Sampler::setNumberOfCols(), Sampler::setNumberOfRandomSeeds(), Sampler::setNumberOfRows(), Exodus::setOutputDimensionInExodusWriter(), AddPeriodicBCAction::setPeriodicVars(), MFEMSolverBase::setPreconditioner(), MultiAppGeneralFieldTransfer::setSolutionVectorValues(), Split::setup(), TransientMultiApp::setupApp(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), TimeSequenceStepperBase::setupSequence(), TransientBase::setupTimeIntegrator(), TimePeriodBase::setupTimes(), IntegratedBCBase::shouldApply(), PhysicsBase::shouldCreateIC(), PhysicsBase::shouldCreateTimeDerivative(), PhysicsBase::shouldCreateVariable(), SideAdvectiveFluxIntegralTempl< is_ad >::SideAdvectiveFluxIntegralTempl(), SideDiffusiveFluxIntegralTempl< is_ad, Real >::SideDiffusiveFluxIntegralTempl(), SideSetsFromNormalsGenerator::SideSetsFromNormalsGenerator(), SideSetsFromPointsGenerator::SideSetsFromPointsGenerator(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), MooseVariableBase::sizeMatrixTagData(), SolutionTimeAdaptiveDT::SolutionTimeAdaptiveDT(), SolutionUserObjectBase::SolutionUserObjectBase(), ExplicitTVDRK2::solve(), ExplicitRK2::solve(), TimeIntegrator::solve(), FEProblemBase::solverSysNum(), FullSolveMultiApp::solveStep(), SpatialAverageBase::SpatialAverageBase(), UserObject::spatialPoints(), NearestPointAverage::spatialValue(), NearestPointIntegralVariablePostprocessor::spatialValue(), MeshDivisionFunctorReductionVectorPostprocessor::spatialValue(), UserObject::spatialValue(), SpiralAnnularMesh::SpiralAnnularMesh(), SpiralAnnularMeshGenerator::SpiralAnnularMeshGenerator(), WebServerControl::startServer(), StitchedMesh::StitchedMesh(), MultiAppGeometricInterpolationTransfer::subdomainIDsNode(), Constraint::subdomainSetup(), NodalUserObject::subdomainSetup(), GeneralUserObject::subdomainSetup(), MaterialBase::subdomainSetup(), FEProblemBase::swapBackMaterialsNeighbor(), DisplacedProblem::systemBaseLinear(), Console::systemInfoFlags(), FEProblemBase::systemNumForVariable(), TerminateChainControl::terminate(), Terminator::Terminator(), CutMeshByLevelSetGeneratorBase::tet4ElemCutter(), ThreadedGeneralUserObject::threadJoin(), DiscreteElementUserObject::threadJoin(), GeneralUserObject::threadJoin(), Function::timeDerivative(), TimedSubdomainModifier::TimedSubdomainModifier(), TimeExtremeValue::TimeExtremeValue(), Function::timeIntegral(), MooseLinearVariableFV< Real >::timeIntegratorError(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriodBase::TimePeriodBase(), VectorPostprocessorVisualizationAux::timestepSetup(), MultiAppDofCopyTransfer::transfer(), MultiAppMFEMCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), TransformedPositions::TransformedPositions(), FEProblemBase::trustUserCouplingMatrix(), MooseVariableScalar::uDot(), MooseVariableScalar::uDotDot(), MooseVariableScalar::uDotDotOld(), FEProblemBase::uDotDotOldRequested(), MooseVariableScalar::uDotOld(), FEProblemBase::uDotOldRequested(), MooseBase::uniqueName(), Positions::unrollMultiDPositions(), ScalarKernelBase::uOld(), AuxScalarKernel::uOld(), Checkpoint::updateCheckpointFiles(), EqualValueBoundaryConstraint::updateConstrainedNodes(), SolutionUserObjectBase::updateExodusBracketingTimeIndices(), FEProblemBase::updateMaxQps(), MFEMHypreAMS::updateSolver(), MFEMHypreADS::updateSolver(), MFEMHyprePCG::updateSolver(), MFEMHypreFGMRES::updateSolver(), MFEMGMRESSolver::updateSolver(), MFEMCGSolver::updateSolver(), MFEMHypreGMRES::updateSolver(), MFEMSuperLU::updateSolver(), UpperBoundNodalKernel::UpperBoundNodalKernel(), NearestPointAverage::userObjectValue(), NearestPointIntegralVariablePostprocessor::userObjectValue(), BoundingBoxIC::value(), PiecewiseConstantFromCSV::value(), IntegralPreservingFunctionIC::value(), Axisymmetric2D3DSolutionFunction::value(), Function::value(), ValueRangeMarker::ValueRangeMarker(), ValueThresholdMarker::ValueThresholdMarker(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VariableTimeIntegrationAux::VariableTimeIntegrationAux(), AddVariableAction::variableType(), VariableValueVolumeHistogram::VariableValueVolumeHistogram(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), VectorNodalBC::VectorNodalBC(), SubProblem::vectorTagName(), SubProblem::vectorTagType(), MooseParsedGradFunction::vectorValue(), MooseParsedFunction::vectorValue(), Function::vectorValue(), SubProblem::verifyVectorTags(), ActionComponent::volume(), VTKOutput::VTKOutput(), WebServerControl::WebServerControl(), MooseApp::writeRestartableMetaData(), DOFMapOutput::writeStreamToFile(), and Console::writeStreamToFile().

272  {
273  callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ true);
274  }
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr) const
External method for calling moose error with added object context.
Definition: MooseBase.C:105

◆ mooseErrorNonPrefixed()

template<typename... Args>
void MooseBase::mooseErrorNonPrefixed ( Args &&...  args) const
inlineinherited

Emits an error without the prefixing included in mooseError().

Definition at line 290 of file MooseBase.h.

291  {
292  callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ false);
293  }
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr) const
External method for calling moose error with added object context.
Definition: MooseBase.C:105

◆ mooseInfo()

template<typename... Args>
void MooseBase::mooseInfo ( Args &&...  args) const
inlineinherited

Definition at line 321 of file MooseBase.h.

Referenced by SetupRecoverFileBaseAction::act(), AStableDirk4::AStableDirk4(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MultiAppGeneralFieldNearestLocationTransfer::evaluateInterpValuesNearestNode(), PIDTransientControl::execute(), Executioner::Executioner(), ExplicitRK2::ExplicitRK2(), ExplicitTVDRK2::ExplicitTVDRK2(), DataFileInterface::getDataFilePath(), MultiAppTransfer::getPointInTargetAppFrame(), ImplicitMidpoint::ImplicitMidpoint(), ParsedDownSelectionPositions::initialize(), PropertyReadFile::initialize(), MultiAppGeneralFieldTransfer::initialSetup(), InversePowerMethod::InversePowerMethod(), LStableDirk2::LStableDirk2(), LStableDirk3::LStableDirk3(), LStableDirk4::LStableDirk4(), PNGOutput::makeMeshFunc(), NonlinearEigen::NonlinearEigen(), SolutionInvalidityOutput::output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), MooseBase::paramInfo(), ProjectionAux::ProjectionAux(), ReferenceResidualConvergence::ReferenceResidualConvergence(), MFEMDataCollection::registerFields(), FEProblemBase::setRestartFile(), MooseApp::setupOptions(), SolutionUserObjectBase::SolutionUserObjectBase(), SymmetryTransformGenerator::SymmetryTransformGenerator(), TransientBase::takeStep(), and TransientBase::TransientBase().

322  {
323  moose::internal::mooseInfoStream(_console, messagePrefix(true), std::forward<Args>(args)...);
324  }
void mooseInfoStream(S &oss, Args &&... args)
Definition: MooseError.h:258
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:256

◆ mooseWarning() [1/2]

template<typename... Args>
void SolutionInvalidInterface::mooseWarning ( Args &&...  args) const
inlineinherited

Definition at line 73 of file SolutionInvalidInterface.h.

Referenced by CopyMeshPartitioner::_do_partition(), AddKernelAction::act(), MeshOnlyAction::act(), AddFunctionAction::act(), MaterialOutputAction::act(), CommonOutputAction::act(), MFEMProblem::addFunction(), addPeriodicVariable(), DiracKernelBase::addPoint(), BoundaryMarker::BoundaryMarker(), DistributedRectilinearMeshGenerator::buildCube(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), CartesianMeshGenerator::CartesianMeshGenerator(), CheckOutputAction::checkConsoleOutput(), MultiAppTransfer::checkMultiAppExecuteOn(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), SampledOutput::cloneMesh(), MultiAppGeneralFieldTransfer::closestToPosition(), VariableValueElementSubdomainModifier::computeSubdomainID(), GapValueAux::computeValue(), MultiApp::createApp(), DebugResidualAux::DebugResidualAux(), MeshDiagnosticsGenerator::diagnosticsLog(), CylindricalGridDivision::divisionIndex(), SphericalGridDivision::divisionIndex(), CartesianGridDivision::divisionIndex(), ElementMaterialSampler::ElementMaterialSampler(), Postprocessor::evaluateDotWarning(), MeshDivisionFunctorReductionVectorPostprocessor::execute(), ElementQualityChecker::finalize(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), SubdomainPerElementGenerator::generate(), StitchMeshGenerator::generate(), ParsedGenerateSideset::generate(), MultiAppTransfer::getAppInfo(), FunctorBinnedValuesDivision::getBinIndex(), MFEMVectorFESpace::getFECName(), PointSamplerBase::getLocalElemContainingPoint(), FEProblemBase::getMaterial(), LineValueSampler::getValue(), Terminator::handleMessage(), IndicatorMarker::IndicatorMarker(), SphericalGridDivision::initialize(), CylindricalGridDivision::initialize(), ElementGroupCentroidPositions::initialize(), CartesianGridDivision::initialize(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), BoundsBase::initialSetup(), ReferenceResidualConvergence::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), FEProblemBase::initialSetup(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), LeastSquaresFit::LeastSquaresFit(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::mesh(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), NewmarkBeta::NewmarkBeta(), NodalPatchRecovery::NodalPatchRecovery(), NonlocalIntegratedBC::NonlocalIntegratedBC(), NonlocalKernel::NonlocalKernel(), Output::Output(), MaterialOutputAction::outputHelper(), MultiAppGeneralFieldTransfer::outputValueConflicts(), PiecewiseConstantFromCSV::PiecewiseConstantFromCSV(), Executioner::problem(), PropertyReadFile::readData(), TestSourceStepper::rejectStep(), PhysicsBase::reportPotentiallyMissedParameters(), MaterialBase::resetQpProperties(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), setCoordSystem(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), FEProblemBase::sizeZeroes(), TransientMultiApp::solveStep(), Tecplot::Tecplot(), TimeDerivativeAux::TimeDerivativeAux(), Checkpoint::updateCheckpointFiles(), SampledOutput::updateSample(), PiecewiseConstantFromCSV::value(), and VariableCondensationPreconditioner::VariableCondensationPreconditioner().

74  {
75  _si_moose_base.MooseBase::mooseWarning(std::forward<Args>(args)...);
76  flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": warning");
77  }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ mooseWarning() [2/2]

template<typename... Args>
void MooseBase::mooseWarning ( Args &&...  args) const
inlineinherited

Emits a warning prefixed with object name and type.

Definition at line 299 of file MooseBase.h.

Referenced by DataFileInterface::getDataFilePath(), MooseApp::loadLibraryAndDependencies(), and MooseBase::paramWarning().

300  {
301  moose::internal::mooseWarningStream(_console, messagePrefix(true), std::forward<Args>(args)...);
302  }
void mooseWarningStream(S &oss, Args &&... args)
Definition: MooseError.h:210
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:256

◆ mooseWarningNonPrefixed() [1/2]

template<typename... Args>
void SolutionInvalidInterface::mooseWarningNonPrefixed ( Args &&...  args) const
inlineinherited

Definition at line 80 of file SolutionInvalidInterface.h.

81  {
82  _si_moose_base.MooseBase::mooseWarningNonPrefixed(std::forward<Args>(args)...);
83  flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": warning");
84  }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ mooseWarningNonPrefixed() [2/2]

template<typename... Args>
void MooseBase::mooseWarningNonPrefixed ( Args &&...  args) const
inlineinherited

Emits a warning without the prefixing included in mooseWarning().

Definition at line 308 of file MooseBase.h.

309  {
310  moose::internal::mooseWarningStream(_console, std::forward<Args>(args)...);
311  }
void mooseWarningStream(S &oss, Args &&... args)
Definition: MooseError.h:210
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ nActiveElem()

virtual dof_id_type MooseMesh::nActiveElem ( ) const
inlinevirtual

Reimplemented in MFEMMesh.

Definition at line 321 of file MooseMesh.h.

321 { return _mesh->n_active_elem(); }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ nActiveLocalElem()

virtual dof_id_type MooseMesh::nActiveLocalElem ( ) const
inlinevirtual

Reimplemented in MFEMMesh.

Definition at line 322 of file MooseMesh.h.

322 { return _mesh->n_active_local_elem(); }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ name()

const std::string& MooseBase::name ( ) const
inlineinherited

Get the name of the class.

Returns
The name of the class

Definition at line 103 of file MooseBase.h.

Referenced by AddElementalFieldAction::act(), CopyNodalVarsAction::act(), AdaptivityAction::act(), AddTimeStepperAction::act(), CSGOnlyAction::act(), DeprecatedBlockAction::act(), SetupTimeIntegratorAction::act(), AddActionComponentAction::act(), SetupResidualDebugAction::act(), DisplayGhostingAction::act(), MaterialOutputAction::act(), AddPeriodicBCAction::act(), FEProblemBase::addAnyRedistributers(), Executioner::addAttributeReporter(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), DisplacedProblem::addAuxVariable(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), PhysicsComponentInterface::addComponent(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), Registry::addDataFilePath(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFESpace(), MFEMProblem::addFunction(), FEProblemBase::addFunction(), SubProblem::addFunctor(), MFEMProblem::addFunctorMaterial(), FEProblemBase::addFunctorMaterial(), FunctorMaterial::addFunctorProperty(), FunctorMaterial::addFunctorPropertyByBlocks(), FEProblemBase::addFVBC(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVKernel(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), FEProblemBase::addIndicator(), MFEMProblem::addInitialCondition(), FEProblemBase::addInitialCondition(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), DiffusionLHDGKernel::additionalROVariables(), IPHDGAssemblyHelper::additionalROVariables(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblemBase::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), ComponentMaterialPropertyInterface::addMaterials(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), ComponentMeshTransformHelper::addMeshGenerators(), CylinderComponent::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMPreconditioner(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), InitialConditionWarehouse::addObject(), FEProblemBase::addObject(), ComponentPhysicsInterface::addPhysics(), SubProblem::addPiecewiseByBlockLambdaFunctor(), MFEMProblem::addPostprocessor(), FEProblemBase::addPostprocessor(), InitialConditionBase::addPostprocessorDependencyHelper(), AuxKernelBase::addPostprocessorDependencyHelper(), UserObject::addPostprocessorDependencyHelper(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), Action::addRelationshipManager(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), WebServerControl::addServerActionsInternal(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addTransfer(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), InitialConditionBase::addUserObjectDependencyHelper(), AuxKernelBase::addUserObjectDependencyHelper(), UserObject::addUserObjectDependencyHelper(), DisplacedProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), AuxKernelBase::addVectorPostprocessorDependencyHelper(), UserObject::addVectorPostprocessorDependencyHelper(), MooseLinearVariableFV< Real >::adError(), Output::advancedExecuteOn(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), MooseVariableBase::allDofIndices(), MooseApp::appBinaryName(), MooseApp::appendMeshGenerator(), Registry::appNameFromAppPath(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayDGKernel::ArrayDGKernel(), ArrayParsedAux::ArrayParsedAux(), PhysicsBase::assignBlocks(), AStableDirk4::AStableDirk4(), AuxKernelBase::AuxKernelBase(), Function::average(), MultiApp::backup(), Boundary2DDelaunayGenerator::Boundary2DDelaunayGenerator(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), MFEMFESpace::buildFEC(), PiecewiseTabularInterface::buildFromFile(), PiecewiseTabularInterface::buildFromXY(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MooseBase::callMooseError(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), PhysicsBase::checkBlockRestrictionIdentical(), PhysicsBase::checkComponentType(), ParsedConvergence::checkConvergence(), DefaultNonlinearConvergence::checkConvergence(), FEProblemBase::checkDependMaterialsHelper(), SamplerBase::checkForStandardFieldVariableType(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), Moose::Kokkos::Material::checkMaterialProperty(), Material::checkMaterialProperty(), MooseApp::checkMetaDataIntegrity(), Damper::checkMinDamping(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), Checkpoint::checkpointInfo(), DomainUserObject::checkVariable(), BlockRestrictable::checkVariable(), Coupleable::checkWritableVar(), MooseVariableFieldBase::componentName(), CompositeFunction::CompositeFunction(), MaterialBase::computeProperties(), FEProblemBase::computeUserObjectByName(), VectorPostprocessorVisualizationAux::computeValue(), MooseBase::connectControllableParams(), ConstantPostprocessor::ConstantPostprocessor(), Coupleable::coupledName(), CommonOutputAction::create(), MultiApp::createApp(), MooseApp::createExecutors(), MeshGeneratorSystem::createMeshGeneratorOrder(), MooseApp::createRecoverablePerfGraph(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), DebugResidualAux::DebugResidualAux(), MaterialBase::declareADProperty(), MeshGenerator::declareMeshesForSubByName(), MeshGenerator::declareNullMeshName(), MaterialBase::declareProperty(), DOFMapOutput::demangle(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), Registry::determineDataFilePath(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DomainUserObject::DomainUserObject(), DumpObjectsProblem::dumpObjectHelper(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementMaterialSampler::ElementMaterialSampler(), ElementValueSampler::ElementValueSampler(), EigenKernel::enabled(), errorIfDistributedMesh(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), SideValueSampler::execute(), RestartableDataReporter::execute(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppProjectionTransfer::execute(), MultiAppUserObjectTransfer::execute(), WebServerControl::execute(), MultiAppGeneralFieldTransfer::execute(), ActionWarehouse::executeActionsWithAction(), Exodus::Exodus(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), MultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), PointSamplerBase::finalize(), ChainControl::fullControlDataName(), FunctionArrayAux::FunctionArrayAux(), FunctionDT::FunctionDT(), FunctionIC::functionName(), FVFunctionIC::functionName(), FunctorPositions::FunctorPositions(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), GapValueAux::GapValueAux(), MooseServer::gatherDocumentSymbols(), BoundaryDeletionGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), BreakMeshByBlockGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), SideSetsFromNodeSetsGenerator::generate(), StitchBoundaryMeshGenerator::generate(), StitchMeshGenerator::generate(), ParsedExtraElementIDGenerator::generate(), XYDelaunayGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), InterfaceMaterial::getADMaterialProperty(), Material::getADMaterialProperty(), MultiAppTransfer::getAppInfo(), MultiApp::getBoundingBox(), MooseBase::getCheckedPointerParam(), MooseApp::getCheckpointDirectories(), Control::getControllableParameterByName(), Control::getControllableValue(), Control::getControllableValueByName(), FEProblemBase::getConvergence(), MeshGenerator::getCSGBase(), MeshGenerator::getCSGBasesByName(), Registry::getDataFilePath(), UserObject::getDependObjects(), DistributionInterface::getDistribution(), FEProblemBase::getDistribution(), DistributionInterface::getDistributionByName(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), MultiApp::getExecutioner(), MooseApp::getExecutor(), FEProblemBase::getExecutor(), OutputWarehouse::getFileNumbers(), FEProblemBase::getFunction(), SubProblem::getFunctor(), NodalPatchRecovery::getGenericMaterialProperty(), InterfaceMaterial::getGenericMaterialProperty(), AuxKernelTempl< Real >::getGenericMaterialProperty(), Material::getGenericMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialPropertyByName(), Material::getGenericOptionalMaterialProperty(), MaterialBase::getGenericZeroMaterialProperty(), MFEMProblem::getGridFunction(), FEProblemBase::getKokkosFunction(), SolutionUserObjectBase::getLocalVarIndex(), Marker::getMarkerValue(), Material::getMaterial(), FEProblemBase::getMaterial(), Material::getMaterialByName(), NodalPatchRecovery::getMaterialProperty(), InterfaceMaterial::getMaterialProperty(), AuxKernelTempl< Real >::getMaterialProperty(), Material::getMaterialProperty(), SubProblem::getMaterialPropertyBlockNames(), SubProblem::getMaterialPropertyBoundaryNames(), NodalPatchRecovery::getMaterialPropertyOld(), AuxKernelTempl< Real >::getMaterialPropertyOld(), InterfaceMaterial::getMaterialPropertyOld(), Material::getMaterialPropertyOld(), NodalPatchRecovery::getMaterialPropertyOlder(), AuxKernelTempl< Real >::getMaterialPropertyOlder(), InterfaceMaterial::getMaterialPropertyOlder(), Material::getMaterialPropertyOlder(), MFEMGeneralUserObject::getMatrixCoefficient(), MFEMGeneralUserObject::getMatrixCoefficientByName(), MeshGenerator::getMesh(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshesByName(), MooseApp::getMeshGenerator(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), ActionWarehouse::getMooseAppName(), MultiAppTransfer::getMultiApp(), InterfaceMaterial::getNeighborADMaterialProperty(), InterfaceMaterial::getNeighborMaterialProperty(), InterfaceMaterial::getNeighborMaterialPropertyOld(), InterfaceMaterial::getNeighborMaterialPropertyOlder(), MooseServer::getObjectParameters(), Material::getOptionalADMaterialProperty(), Material::getOptionalMaterialProperty(), Material::getOptionalMaterialPropertyOld(), Material::getOptionalMaterialPropertyOlder(), OutputWarehouse::getOutput(), MooseBase::getParam(), FEProblemBase::getPositionsObject(), FEProblemBase::getPostprocessorValueByName(), ComponentMaterialPropertyInterface::getPropertyValue(), ReporterData::getReporterInfo(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), FEProblemBase::getSampler(), MFEMGeneralUserObject::getScalarCoefficient(), MFEMGeneralUserObject::getScalarCoefficientByName(), TimedSubdomainModifier::getSubdomainIDAndCheck(), TransientBase::getTimeStepperName(), ProjectedStatefulMaterialStorageAction::getTypeEnum(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), MFEMGeneralUserObject::getVectorCoefficient(), MFEMGeneralUserObject::getVectorCoefficientByName(), Terminator::handleMessage(), Control::hasControllableParameterByName(), FEProblemBase::hasConvergence(), FEProblemBase::hasFunction(), SubProblem::hasFunctor(), SubProblem::hasFunctorWithType(), MooseApp::hasMeshGenerator(), AdvancedOutput::hasOutputHelper(), FEProblemBase::hasPostprocessor(), FEProblemBase::hasPostprocessorValueByName(), MooseApp::hasRelationshipManager(), MooseApp::hasRestartableDataMap(), MooseApp::hasRestartableMetaData(), FEProblemBase::hasUserObject(), IterationAdaptiveDT::init(), AddVariableAction::init(), AdvancedOutput::init(), AdvancedOutput::initExecutionTypes(), AttribName::initFrom(), NestedDivision::initialize(), TransformedPositions::initialize(), BoundaryRestrictable::initializeBoundaryRestrictable(), JSONOutput::initialSetup(), SideFVFluxBCIntegral::initialSetup(), SolutionScalarAux::initialSetup(), MultiAppProjectionTransfer::initialSetup(), NodalVariableValue::initialSetup(), Console::initialSetup(), SolutionUserObjectBase::initialSetup(), AdvancedOutput::initOutputList(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), Function::integral(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), MeshGenerator::isChildMeshGenerator(), DerivativeMaterialInterface< JvarMapKernelInterface< GenericKernelGrad< is_ad > > >::isNotObjectVariable(), MeshGenerator::isNullMeshName(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MeshGenerator::isParentMeshGenerator(), LinearCombinationFunction::LinearCombinationFunction(), FEProblemBase::logAdd(), MooseLinearVariableFV< Real >::lowerDError(), Marker::Marker(), MaterialBase::markMatPropRequested(), Material::Material(), MaterialDerivativeTestKernelBase< Real >::MaterialDerivativeTestKernelBase(), Distribution::median(), MemoryUsageReporter::MemoryUsageReporter(), MeshGenerator::meshPropertyPrefix(), MooseBase::messagePrefix(), OutputWarehouse::mooseConsole(), SolutionInvalidInterface::mooseDeprecated(), MooseVariableBase::MooseVariableBase(), MooseVariableInterface< Real >::MooseVariableInterface(), SolutionInvalidInterface::mooseWarning(), SolutionInvalidInterface::mooseWarningNonPrefixed(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MooseLinearVariableFV< Real >::nodalError(), NodalPatchRecoveryAuxBase::NodalPatchRecoveryAuxBase(), NodalValueSampler::NodalValueSampler(), Registry::objData(), MeshGenerator::Comparator::operator()(), ProgressOutput::output(), DOFMapOutput::output(), Output::Output(), AdvancedOutput::outputElementalVariables(), ConsoleUtils::outputExecutionInformation(), MaterialOutputAction::outputHelper(), AdvancedOutput::outputInput(), AdvancedOutput::outputNodalVariables(), Exodus::outputPostprocessors(), AdvancedOutput::outputPostprocessors(), TableOutput::outputReporter(), AdvancedOutput::outputReporters(), AdvancedOutput::outputScalarVariables(), AdvancedOutput::outputSystemInformation(), AdvancedOutput::outputVectorPostprocessors(), SolutionInvalidInterface::paramWarning(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedODEKernel::ParsedODEKernel(), ComponentPhysicsInterface::physicsExists(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), MooseApp::possiblyLoadRestartableMetaData(), PhysicsBase::prefix(), prepare(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), PerfGraphLivePrint::printStats(), FEProblemBase::projectInitialConditionOnCustomRange(), MooseBase::queryParam(), MultiApp::readCommandLineArguments(), Receiver::Receiver(), Executor::Result::record(), AppFactory::reg(), Registry::registerObjectsTo(), FEProblemBase::registerRandomInterface(), MooseApp::registerRestartableDataMapName(), MooseApp::registerRestartableNameWithFilter(), MaterialBase::resetQpProperties(), MultiApp::restore(), ScalarComponentIC::ScalarComponentIC(), MultiApp::setAppOutputFileBase(), FEProblemBase::setAuxKernelParamsAndLog(), setBoundaryName(), Control::setControllableValue(), Control::setControllableValueByName(), OutputWarehouse::setFileNumbers(), FEProblemBase::setPostprocessorValueByName(), FEProblemBase::setResidualObjectParamsAndLog(), setSubdomainName(), NodeSetsGeneratorBase::setup(), Split::setup(), SideSetsGeneratorBase::setup(), TransientMultiApp::setupApp(), FullSolveMultiApp::showStatusMessage(), SideSetExtruderGenerator::SideSetExtruderGenerator(), TransientMultiApp::solveStep(), UserObject::spatialValue(), StitchedMesh::StitchedMesh(), SubProblem::storeBoundaryDelayedCheckMatProp(), SubProblem::storeBoundaryMatPropName(), MaterialBase::storeBoundaryZeroMatProp(), SubProblem::storeBoundaryZeroMatProp(), SubProblem::storeSubdomainDelayedCheckMatProp(), SubProblem::storeSubdomainMatPropName(), MaterialBase::storeSubdomainZeroMatProp(), SubProblem::storeSubdomainZeroMatProp(), ConstraintWarehouse::subdomainsCovered(), MaterialBase::subdomainSetup(), TaggingInterface::TaggingInterface(), MooseLinearVariableFV< Real >::timeIntegratorError(), VectorPostprocessorVisualizationAux::timestepSetup(), ElementSubdomainModifierBase::timestepSetup(), to_json(), MultiAppDofCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), TransientMultiApp::TransientMultiApp(), MooseServer::traverseParseTreeAndFillSymbols(), MooseBase::typeAndName(), MooseBase::uniqueParameterName(), FVFluxBC::uOnGhost(), FVFluxBC::uOnUSub(), UserObject::UserObject(), UserObjectInterface::userObjectName(), ParsedAux::validateGenericVectorNames(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), Convergence::verboseOutput(), AdvancedOutput::wantOutput(), Coupleable::writableCoupledValue(), Coupleable::writableVariable(), Console::write(), and MooseApp::writeRestartableMetaData().

104  {
105  mooseAssert(_name.size(), "Empty name");
106  return _name;
107  }
const std::string & _name
The name of this class.
Definition: MooseBase.h:363

◆ needGhostGhostedBoundaries()

void MooseMesh::needGhostGhostedBoundaries ( bool  needghost)
inline

Whether or not we want to ghost ghosted boundaries.

Definition at line 612 of file MooseMesh.h.

Referenced by DistributedRectilinearMeshGenerator::generate().

612 { _need_ghost_ghosted_boundaries = needghost; }
bool _need_ghost_ghosted_boundaries
A parallel mesh generator such as DistributedRectilinearMeshGenerator already make everything ready...
Definition: MooseMesh.h:1868

◆ needsPrepareForUse()

void MooseMesh::needsPrepareForUse ( )

If this method is called, we will call libMesh's prepare_for_use method when we call Moose's prepare method.

This should only be set when the mesh structure is changed by MeshGenerators (i.e. Element deletion).

Definition at line 3245 of file MooseMesh.C.

3246 {
3247  prepared(false);
3248 }
bool prepared() const
Setter/getter for whether the mesh is prepared.
Definition: MooseMesh.C:3217

◆ needsRemoteElemDeletion() [1/2]

void MooseMesh::needsRemoteElemDeletion ( bool  need_delete)
inline

Set whether we need to delete remote elements.

Definition at line 1082 of file MooseMesh.h.

1082 { _need_delete = need_delete; }
bool _need_delete
Whether we need to delete remote elements after init&#39;ing the EquationSystems.
Definition: MooseMesh.h:1856

◆ needsRemoteElemDeletion() [2/2]

bool MooseMesh::needsRemoteElemDeletion ( ) const
inline

Whether we need to delete remote elements.

Definition at line 1087 of file MooseMesh.h.

1087 { return _need_delete; }
bool _need_delete
Whether we need to delete remote elements after init&#39;ing the EquationSystems.
Definition: MooseMesh.h:1856

◆ nElem()

dof_id_type MooseMesh::nElem ( ) const
virtual

Definition at line 3161 of file MooseMesh.C.

Referenced by PropertyReadFile::getElementData(), and PropertyReadFile::readData().

3162 {
3163  return getMesh().n_elem();
3164 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual dof_id_type n_elem() const=0

◆ nFace()

unsigned int MooseMesh::nFace ( ) const
inline

accessors for the FaceInfo objects

Definition at line 1165 of file MooseMesh.h.

1165 { return _face_info.size(); }
std::vector< const FaceInfo * > _face_info
Holds only those FaceInfo objects that have processor_id equal to this process&#39;s id, e.g.
Definition: MooseMesh.h:1635

◆ nLocalNodes()

virtual dof_id_type MooseMesh::nLocalNodes ( ) const
inlinevirtual

Definition at line 320 of file MooseMesh.h.

320 { return _mesh->n_local_nodes(); }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ nNodes()

dof_id_type MooseMesh::nNodes ( ) const
virtual

Calls n_nodes/elem() on the underlying libMesh mesh object.

Definition at line 3155 of file MooseMesh.C.

Referenced by PropertyReadFile::getNodeData(), and PropertyReadFile::readData().

3156 {
3157  return getMesh().n_nodes();
3158 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual dof_id_type n_nodes() const=0

◆ node() [1/2]

const Node & MooseMesh::node ( const dof_id_type  i) const
virtual

Various accessors (pointers/references) for Node "i".

If the requested node is a remote node on a distributed mesh, only the query accessors are valid to call, and they return NULL.

Definition at line 847 of file MooseMesh.C.

Referenced by addUniqueNode(), GeneratedMesh::buildMesh(), buildPeriodicNodeMap(), cacheInfo(), detectOrthogonalDimRanges(), getNodeBlockIds(), isSemiLocal(), and updateActiveSemiLocalNodeRange().

848 {
849  mooseDeprecated("MooseMesh::node() is deprecated, please use MooseMesh::nodeRef() instead");
850  return nodeRef(i);
851 }
virtual const Node & nodeRef(const dof_id_type i) const
Definition: MooseMesh.C:861
void mooseDeprecated(Args &&... args) const

◆ node() [2/2]

Node & MooseMesh::node ( const dof_id_type  i)
virtual

Definition at line 854 of file MooseMesh.C.

855 {
856  mooseDeprecated("MooseMesh::node() is deprecated, please use MooseMesh::nodeRef() instead");
857  return nodeRef(i);
858 }
virtual const Node & nodeRef(const dof_id_type i) const
Definition: MooseMesh.C:861
void mooseDeprecated(Args &&... args) const

◆ nodePtr() [1/2]

const Node * MooseMesh::nodePtr ( const dof_id_type  i) const
virtual

Definition at line 875 of file MooseMesh.C.

Referenced by ElementSubdomainModifierBase::reinitializedNodeRange().

876 {
877  return &nodeRef(i);
878 }
virtual const Node & nodeRef(const dof_id_type i) const
Definition: MooseMesh.C:861

◆ nodePtr() [2/2]

Node * MooseMesh::nodePtr ( const dof_id_type  i)
virtual

Definition at line 881 of file MooseMesh.C.

882 {
883  return &nodeRef(i);
884 }
virtual const Node & nodeRef(const dof_id_type i) const
Definition: MooseMesh.C:861

◆ nodeRef() [1/2]

const Node & MooseMesh::nodeRef ( const dof_id_type  i) const
virtual

◆ nodeRef() [2/2]

Node & MooseMesh::nodeRef ( const dof_id_type  i)
virtual

Definition at line 869 of file MooseMesh.C.

870 {
871  return const_cast<Node &>(const_cast<const MooseMesh *>(this)->nodeRef(i));
872 }
virtual const Node & nodeRef(const dof_id_type i) const
Definition: MooseMesh.C:861
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition: MooseMesh.h:92

◆ nodeSetNodes()

const std::map< boundary_id_type, std::vector< dof_id_type > > & MooseMesh::nodeSetNodes ( ) const
inline
Returns
A map from nodeset ids to the vector of node ids in the nodeset

Definition at line 2228 of file MooseMesh.h.

2229 {
2230  return _node_set_nodes;
2231 }
std::map< boundary_id_type, std::vector< dof_id_type > > _node_set_nodes
list of nodes that belongs to a specified nodeset: indexing [nodeset_id] -> [array of node ids] ...
Definition: MooseMesh.h:1583

◆ nodeToActiveSemilocalElemMap()

const std::map< dof_id_type, std::vector< dof_id_type > > & MooseMesh::nodeToActiveSemilocalElemMap ( )

If not already created, creates a map from every node to all active semilocal elements to which they are connected.

Semilocal elements include local elements and elements that share at least one node with a local element.

Note
Extra ghosted elements are not included in this map!

Definition at line 1256 of file MooseMesh.C.

Referenced by FEProblemBase::initialSetup().

1257 {
1258  if (!_node_to_active_semilocal_elem_map_built) // Guard the creation with a double checked lock
1259  {
1260  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1261 
1262  // This is allowing the timing to be run even with threads
1263  // This is safe because all threads will be waiting on this section when it runs
1264  // NOTE: Do not copy this construction to other places without thinking REALLY hard about it
1265  // The PerfGraph is NOT threadsafe and will cause all kinds of havok if care isn't taken
1267  Threads::in_threads = false;
1268  TIME_SECTION("nodeToActiveSemilocalElemMap", 5, "Building SemiLocalElemMap");
1270 
1272  {
1273  for (const auto & elem :
1274  as_range(getMesh().semilocal_elements_begin(), getMesh().semilocal_elements_end()))
1275  if (elem->active())
1276  for (unsigned int n = 0; n < elem->n_nodes(); n++)
1278 
1280  true; // MUST be set at the end for double-checked locking to work!
1281  }
1282  }
1283 
1285 }
bool _node_to_active_semilocal_elem_map_built
Definition: MooseMesh.h:1537
bool in_threads
dof_id_type id() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual unsigned int n_nodes() const=0
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
bool active() const
dof_id_type node_id(const unsigned int i) const
std::map< dof_id_type, std::vector< dof_id_type > > _node_to_active_semilocal_elem_map
A map of all of the current nodes to the active elements that they are connected to.
Definition: MooseMesh.h:1536

◆ nodeToElemMap()

const std::map< dof_id_type, std::vector< dof_id_type > > & MooseMesh::nodeToElemMap ( )

If not already created, creates a map from every node to all elements to which they are connected.

Definition at line 1228 of file MooseMesh.C.

Referenced by NodalPatchRecovery::compute(), NodalPatchRecoveryAuxBase::computeValue(), ProjectionAux::computeValue(), PenetrationLocator::detectPenetration(), DMMooseGetEmbedding_Private(), ProjectionAux::elemOnNodeVariableIsDefinedOn(), NonlinearSystemBase::findImplicitGeometricCouplingEntries(), NearestNodeLocator::findNodes(), ElementSubdomainModifierBase::findReinitializedElemsAndNodes(), ElementSubdomainModifierBase::gatherPatchElements(), NodePositions::initialize(), ActivateElementsUserObjectBase::isNewlyActivated(), LinearNodalConstraint::LinearNodalConstraint(), ElementSubdomainModifierBase::nodeIsNewlyReinitialized(), GhostHigherDLowerDPointNeighbors::operator()(), EqualValueBoundaryConstraint::updateConstrainedNodes(), RandomData::updateGenerators(), and NearestNodeLocator::updatePatch().

1229 {
1230  if (!_node_to_elem_map_built) // Guard the creation with a double checked lock
1231  {
1232  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
1233 
1235  {
1236  // This is allowing the timing to be run even with threads
1237  // This is safe because all threads will be waiting on this section when it runs
1238  // NOTE: Do not copy this construction to other places without thinking REALLY hard about it
1239  // The PerfGraph is NOT threadsafe and will cause all kinds of havok if care isn't taken
1241  Threads::in_threads = false;
1242  TIME_SECTION("nodeToElemMap", 5, "Building Node To Elem Map");
1244 
1245  for (const auto & elem : getMesh().active_element_ptr_range())
1246  for (unsigned int n = 0; n < elem->n_nodes(); n++)
1247  _node_to_elem_map[elem->node_id(n)].push_back(elem->id());
1248 
1249  _node_to_elem_map_built = true; // MUST be set at the end for double-checked locking to work!
1250  }
1251  }
1252  return _node_to_elem_map;
1253 }
bool _node_to_elem_map_built
Definition: MooseMesh.h:1533
std::map< dof_id_type, std::vector< dof_id_type > > _node_to_elem_map
A map of all of the current nodes to the elements that they are connected to.
Definition: MooseMesh.h:1532
bool in_threads
dof_id_type id() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual unsigned int n_nodes() const=0
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
dof_id_type node_id(const unsigned int i) const

◆ nPartitions()

virtual unsigned int MooseMesh::nPartitions ( ) const
inlinevirtual

Definition at line 324 of file MooseMesh.h.

324 { return _mesh->n_partitions(); }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ nSubdomains()

virtual SubdomainID MooseMesh::nSubdomains ( ) const
inlinevirtual

Reimplemented in MFEMMesh.

Definition at line 323 of file MooseMesh.h.

323 { return _mesh->n_subdomains(); }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ onMeshChanged()

void MooseMesh::onMeshChanged ( )
virtual

Declares a callback function that is executed at the conclusion of meshChanged().

Ther user can implement actions required after changing the mesh here.

Definition at line 935 of file MooseMesh.C.

Referenced by meshChanged().

936 {
937 }

◆ operator const libMesh::MeshBase &()

MooseMesh::operator const libMesh::MeshBase & ( ) const

Definition at line 3519 of file MooseMesh.C.

3519 { return getMesh(); }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ operator libMesh::MeshBase &()

MooseMesh::operator libMesh::MeshBase & ( )

Implicit conversion operator from MooseMesh -> libMesh::MeshBase.

Definition at line 3517 of file MooseMesh.C.

3517 { return getMesh(); }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528

◆ operator=()

MooseMesh& MooseMesh::operator= ( const MooseMesh other_mesh)
delete

◆ ownedElemInfoBegin()

MooseMesh::elem_info_iterator MooseMesh::ownedElemInfoBegin ( )

Iterators to owned faceInfo objects.

These faceInfo-s are required for the face loops and to filter out the faceInfo-s that are not owned by this processor in case we have a distributed mesh and we included FaceInfo objects that are on processor boundaries

Definition at line 1578 of file MooseMesh.C.

Referenced by LinearSystem::computeGradients(), LinearSystem::computeLinearSystemInternal(), and FEProblemBase::projectSolution().

1579 {
1580  return elem_info_iterator(_elem_info.begin(),
1581  _elem_info.end(),
1583 }
std::vector< const ElemInfo * > _elem_info
Holds only those ElemInfo objects that have processor_id equal to this process&#39;s id, e.g.
Definition: MooseMesh.h:1627

◆ ownedElemInfoEnd()

MooseMesh::elem_info_iterator MooseMesh::ownedElemInfoEnd ( )

Definition at line 1586 of file MooseMesh.C.

Referenced by LinearSystem::computeGradients(), LinearSystem::computeLinearSystemInternal(), and FEProblemBase::projectSolution().

1587 {
1588  return elem_info_iterator(_elem_info.end(),
1589  _elem_info.end(),
1591 }
std::vector< const ElemInfo * > _elem_info
Holds only those ElemInfo objects that have processor_id equal to this process&#39;s id, e.g.
Definition: MooseMesh.h:1627

◆ ownedFaceInfoBegin()

MooseMesh::face_info_iterator MooseMesh::ownedFaceInfoBegin ( )

Iterators to owned faceInfo objects.

These faceInfo-s are required for the face loops and to filter out the faceInfo-s that are not owned by this processor in case we have a distributed mesh and we included FaceInfo objects that are on processor boundaries

Definition at line 1560 of file MooseMesh.C.

Referenced by LinearSystem::computeGradients(), NonlinearSystemBase::computeJacobianInternal(), LinearSystem::computeLinearSystemInternal(), NonlinearSystemBase::computeResidualAndJacobianInternal(), and NonlinearSystemBase::computeResidualInternal().

1561 {
1562  return face_info_iterator(
1563  _face_info.begin(),
1564  _face_info.end(),
1566 }
std::vector< const FaceInfo * > _face_info
Holds only those FaceInfo objects that have processor_id equal to this process&#39;s id, e.g.
Definition: MooseMesh.h:1635
processor_id_type processor_id() const

◆ ownedFaceInfoEnd()

MooseMesh::face_info_iterator MooseMesh::ownedFaceInfoEnd ( )

Definition at line 1569 of file MooseMesh.C.

Referenced by LinearSystem::computeGradients(), NonlinearSystemBase::computeJacobianInternal(), LinearSystem::computeLinearSystemInternal(), NonlinearSystemBase::computeResidualAndJacobianInternal(), and NonlinearSystemBase::computeResidualInternal().

1570 {
1571  return face_info_iterator(
1572  _face_info.end(),
1573  _face_info.end(),
1575 }
std::vector< const FaceInfo * > _face_info
Holds only those FaceInfo objects that have processor_id equal to this process&#39;s id, e.g.
Definition: MooseMesh.h:1635
processor_id_type processor_id() const

◆ paramError()

template<typename... Args>
void MooseBase::paramError ( const std::string &  param,
Args...  args 
) const
inherited

Emits an error prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseError - only printing a message using the given args.

Definition at line 439 of file MooseBase.h.

Referenced by HierarchicalGridPartitioner::_do_partition(), AutoCheckpointAction::act(), SetupDebugAction::act(), AddPeriodicBCAction::act(), CommonOutputAction::act(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), NEML2ModelExecutor::addGatheredParameter(), NEML2ModelExecutor::addGatheredVariable(), ADDGKernel::ADDGKernel(), CylinderComponent::addMeshGenerators(), AddPeriodicBCAction::AddPeriodicBCAction(), ReporterPointSource::addPoints(), ADIntegratedBCTempl< T >::ADIntegratedBCTempl(), ADKernelTempl< T >::ADKernelTempl(), ADPenaltyPeriodicSegmentalConstraint::ADPenaltyPeriodicSegmentalConstraint(), ADPeriodicSegmentalConstraint::ADPeriodicSegmentalConstraint(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), ADVectorFunctionDirichletBC::ADVectorFunctionDirichletBC(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), ArrayBodyForce::ArrayBodyForce(), ArrayDGKernel::ArrayDGKernel(), ArrayDGLowerDKernel::ArrayDGLowerDKernel(), ArrayDirichletBC::ArrayDirichletBC(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayIntegratedBC::ArrayIntegratedBC(), ArrayKernel::ArrayKernel(), ArrayLowerDIntegratedBC::ArrayLowerDIntegratedBC(), ArrayParsedAux::ArrayParsedAux(), ArrayPenaltyDirichletBC::ArrayPenaltyDirichletBC(), ArrayReactionNodalKernelTempl< is_ad >::ArrayReactionNodalKernelTempl(), ArrayVacuumBC::ArrayVacuumBC(), ArrayVarReductionAux::ArrayVarReductionAux(), ParsedSubdomainIDsGenerator::assignElemSubdomainID(), AuxKernelBase::AuxKernelBase(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BlockDeletionGenerator::BlockDeletionGenerator(), BlockWeightedPartitioner::BlockWeightedPartitioner(), BoundsBase::BoundsBase(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), BuildArrayVariableAux::BuildArrayVariableAux(), MFEMMesh::buildMesh(), CartesianGridDivision::CartesianGridDivision(), checkComponent(), MeshGenerator::checkGetMesh(), ComponentInitialConditionInterface::checkInitialConditionsAllRequested(), BatchMeshGeneratorAction::checkInputParameterType(), PhysicsBase::checkIntegrityEarly(), PostprocessorInterface::checkParam(), FEProblemBase::checkProblemIntegrity(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), Coupleable::checkVar(), MultiAppTransfer::checkVariable(), CircularBoundaryCorrectionGenerator::CircularBoundaryCorrectionGenerator(), CircularBoundaryCorrectionGenerator::circularCenterCalculator(), MultiAppGeneralFieldTransfer::closestToPosition(), CoarsenBlockGenerator::CoarsenBlockGenerator(), CombinerGenerator::CombinerGenerator(), ComponentInitialConditionInterface::ComponentInitialConditionInterface(), ComponentMaterialPropertyInterface::ComponentMaterialPropertyInterface(), CompositionDT::CompositionDT(), FunctorAux::computeValue(), ConcentricCircleMeshGenerator::ConcentricCircleMeshGenerator(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< false >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), ConstantVectorPostprocessor::ConstantVectorPostprocessor(), ContainsPointAux::ContainsPointAux(), CopyValueAux::CopyValueAux(), Coupleable::Coupleable(), CoupledForceTempl< is_ad >::CoupledForceTempl(), CoupledValueFunctionMaterialTempl< is_ad >::CoupledValueFunctionMaterialTempl(), MultiApp::createApp(), MeshGeneratorSystem::createMeshGenerator(), CylindricalGridDivision::CylindricalGridDivision(), DebugResidualAux::DebugResidualAux(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), AccumulateReporter::declareLateValues(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DGLowerDKernel::DGLowerDKernel(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), ElementAdaptivityLevelAux::ElementAdaptivityLevelAux(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementLengthAux::ElementLengthAux(), ElementLpNormAux::ElementLpNormAux(), ExtraIDIntegralVectorPostprocessor::elementValue(), ElementValueSampler::ElementValueSampler(), ElementVectorL2Error::ElementVectorL2Error(), EqualValueEmbeddedConstraintTempl< is_ad >::EqualValueEmbeddedConstraintTempl(), ReporterPointSource::errorCheck(), StitchMeshGeneratorBase::errorMissingBoundary(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), ExtraElementIDAux::ExtraElementIDAux(), ExtraElementIntegerDivision::ExtraElementIntegerDivision(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FileMeshGenerator::FileMeshGenerator(), FillBetweenCurvesGenerator::FillBetweenCurvesGenerator(), FillBetweenSidesetsGenerator::FillBetweenSidesetsGenerator(), ReporterPointSource::fillPoint(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), InternalSideIndicatorBase::finalize(), ForcingFunctionAux::ForcingFunctionAux(), FullSolveMultiApp::FullSolveMultiApp(), FunctionArrayAux::FunctionArrayAux(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FunctorADConverterTempl< T >::FunctorADConverterTempl(), FunctorAux::FunctorAux(), FunctorBinnedValuesDivision::FunctorBinnedValuesDivision(), FunctorCoordinatesFunctionAux::FunctorCoordinatesFunctionAux(), FunctorElementalGradientAuxTempl< is_ad >::FunctorElementalGradientAuxTempl(), FunctorExtremaPositions::FunctorExtremaPositions(), FunctorIC::FunctorIC(), FunctorPositions::FunctorPositions(), FunctorVectorElementalAuxTempl< is_ad >::FunctorVectorElementalAuxTempl(), FVAdvection::FVAdvection(), FVFluxBC::FVFluxBC(), FVInterfaceKernel::FVInterfaceKernel(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), FVTwoVarContinuityConstraint::FVTwoVarContinuityConstraint(), Boundary2DDelaunayGenerator::General2DDelaunay(), BoundaryDeletionGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), ExtraNodesetGenerator::generate(), AddMetaDataGenerator::generate(), BlockToMeshConverterGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), ElementsToTetrahedronsConverter::generate(), FillBetweenCurvesGenerator::generate(), FillBetweenSidesetsGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), PlaneIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), BlockDeletionGenerator::generate(), Boundary2DDelaunayGenerator::generate(), BoundaryElementConversionGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), AdvancedExtruderGenerator::generate(), BreakMeshByElementGenerator::generate(), CircularBoundaryCorrectionGenerator::generate(), CombinerGenerator::generate(), MeshCollectionGenerator::generate(), MeshExtruderGenerator::generate(), ParsedCurveGenerator::generate(), ParsedExtraElementIDGenerator::generate(), StackGenerator::generate(), XYZDelaunayGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), PatternedMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), GeneratedMeshGenerator::GeneratedMeshGenerator(), GenericConstantStdVectorMaterialTempl< is_ad >::GenericConstantStdVectorMaterialTempl(), GenericFunctorGradientMaterialTempl< is_ad >::GenericFunctorGradientMaterialTempl(), GenericFunctorMaterialTempl< is_ad >::GenericFunctorMaterialTempl(), GenericFunctorTimeDerivativeMaterialTempl< is_ad >::GenericFunctorTimeDerivativeMaterialTempl(), GenericVectorFunctorMaterialTempl< is_ad >::GenericVectorFunctorMaterialTempl(), PropertyReadFile::getBlockData(), ComponentBoundaryConditionInterface::getBoundaryCondition(), MultiApp::getCommandLineArgs(), PropertyReadFile::getData(), PropertyReadFile::getFileNames(), Sampler::getGlobalSamples(), ComponentInitialConditionInterface::getInitialCondition(), NEML2Action::getInputParameterMapping(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), Sampler::getLocalSamples(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), Sampler::getNextLocalRow(), FEProblemSolve::getParamFromNonlinearSystemVectorParam(), PostprocessorInterface::getPostprocessorNameInternal(), PostprocessorInterface::getPostprocessorValueInternal(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), UserObjectInterface::getUserObjectBase(), UserObjectInterface::getUserObjectName(), HFEMDirichletBC::HFEMDirichletBC(), AddVariableAction::init(), MultiApp::init(), DistributedPositions::initialize(), BlockWeightedPartitioner::initialize(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), PhysicsBase::initializePhysics(), JSONOutput::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), SideFVFluxBCIntegral::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), HistogramVectorPostprocessor::initialSetup(), ReferenceResidualConvergence::initialSetup(), PiecewiseConstantFromCSV::initialSetup(), LibtorchControlValuePostprocessor::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), ElementSubdomainModifierBase::initialSetup(), SampledOutput::initSample(), AddMetaDataGenerator::inputChecker(), IntegratedBC::IntegratedBC(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceValueUserObjectAux::InterfaceValueUserObjectAux(), InternalSideIndicatorBase::InternalSideIndicatorBase(), InterpolatedStatefulMaterialTempl< T >::InterpolatedStatefulMaterialTempl(), InversePowerMethod::InversePowerMethod(), IterationAdaptiveDT::IterationAdaptiveDT(), MultiApp::keepSolutionDuringRestore(), Kernel::Kernel(), KokkosBoundNodalKernel< KokkosUpperBoundNodalKernel >::KokkosBoundNodalKernel(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), LinearCombinationFunction::LinearCombinationFunction(), LinearFVAdvectionDiffusionFunctorRobinBC::LinearFVAdvectionDiffusionFunctorRobinBC(), LowerDIntegratedBC::LowerDIntegratedBC(), PNGOutput::makeMeshFunc(), MatCoupledForce::MatCoupledForce(), MaterialADConverterTempl< T >::MaterialADConverterTempl(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MatrixSymmetryCheck::MatrixSymmetryCheck(), PatternedMeshGenerator::mergeSubdomainNameMaps(), MeshCollectionGenerator::MeshCollectionGenerator(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshDivisionAux::MeshDivisionAux(), MeshGenerator::MeshGenerator(), MeshGeneratorComponent::MeshGeneratorComponent(), MFEMDotProductAux::MFEMDotProductAux(), MFEMGenericFunctorMaterial::MFEMGenericFunctorMaterial(), MFEMGenericFunctorVectorMaterial::MFEMGenericFunctorVectorMaterial(), MFEMSumAux::MFEMSumAux(), MooseLinearVariableFV< Real >::MooseLinearVariableFV(), MooseMesh(), UserObjectInterface::mooseObjectError(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MortarConstraintBase::MortarConstraintBase(), MortarNodalAuxKernelTempl< ComputeValueType >::MortarNodalAuxKernelTempl(), MultiApp::moveApp(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldNearestLocationTransfer::MultiAppGeneralFieldNearestLocationTransfer(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppGeometricInterpolationTransfer::MultiAppGeometricInterpolationTransfer(), MultiAppNearestNodeTransfer::MultiAppNearestNodeTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorToAuxScalarTransfer::MultiAppPostprocessorToAuxScalarTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppProjectionTransfer::MultiAppProjectionTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppScalarToAuxScalarTransfer::MultiAppScalarToAuxScalarTransfer(), MultiAppShapeEvaluationTransfer::MultiAppShapeEvaluationTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiAppVectorPostprocessorTransfer::MultiAppVectorPostprocessorTransfer(), MultiSystemSolveObject::MultiSystemSolveObject(), NearestNodeValueAux::NearestNodeValueAux(), NEML2Action::NEML2Action(), NestedDivision::NestedDivision(), NodalBC::NodalBC(), NodalEqualValueConstraint::NodalEqualValueConstraint(), NodalKernel::NodalKernel(), NodalPatchRecoveryAux::NodalPatchRecoveryAux(), NodalValueSampler::NodalValueSampler(), Output::Output(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), ParsedPostprocessor::ParsedPostprocessor(), ParsedReporterBase::ParsedReporterBase(), ParsedScalarReporter::ParsedScalarReporter(), ParsedVectorRealReductionReporter::ParsedVectorRealReductionReporter(), ParsedVectorReporter::ParsedVectorReporter(), ParsedVectorVectorRealReductionReporter::ParsedVectorVectorRealReductionReporter(), PatternedMeshGenerator::PatternedMeshGenerator(), PenaltyPeriodicSegmentalConstraint::PenaltyPeriodicSegmentalConstraint(), PeriodicSegmentalConstraint::PeriodicSegmentalConstraint(), PIDTransientControl::PIDTransientControl(), PlaneDeletionGenerator::PlaneDeletionGenerator(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), PointwiseRenormalizeVector::PointwiseRenormalizeVector(), PolyLineMeshGenerator::PolyLineMeshGenerator(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessor(), LibmeshPartitioner::prepareBlocksForSubdomainPartitioner(), ProjectedMaterialPropertyNodalPatchRecoveryAux::ProjectedMaterialPropertyNodalPatchRecoveryAux(), ProjectionAux::ProjectionAux(), PropertyReadFile::PropertyReadFile(), RandomIC::RandomIC(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readExodusII(), SolutionUserObjectBase::readXda(), ReferenceResidualConvergence::ReferenceResidualConvergence(), RefineBlockGenerator::RefineBlockGenerator(), RefineSidesetGenerator::RefineSidesetGenerator(), RenameBlockGenerator::RenameBlockGenerator(), RenameBoundaryGenerator::RenameBoundaryGenerator(), ReporterPointSource::ReporterPointSource(), FEProblemBase::restoreSolutions(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), FEProblemBase::setLinearConvergenceNames(), FEProblemBase::setNonlinearConvergenceNames(), setPartitioner(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupParameterDerivativeMappings(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SideValueSampler::SideValueSampler(), SingleRankPartitioner::SingleRankPartitioner(), SphericalGridDivision::SphericalGridDivision(), StitchBoundaryMeshGenerator::StitchBoundaryMeshGenerator(), StitchMeshGenerator::StitchMeshGenerator(), SymmetryTransformGenerator::SymmetryTransformGenerator(), TagVectorAux::TagVectorAux(), Terminator::Terminator(), TimeDerivativeAux::TimeDerivativeAux(), Transfer::Transfer(), TransformGenerator::TransformGenerator(), TransientMultiApp::TransientMultiApp(), ParsedCurveGenerator::tSectionSpaceDefiner(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), TimeSequenceStepperBase::updateSequence(), UserObject::UserObject(), Checkpoint::validateExecuteOn(), ParsedAux::validateGenericVectorNames(), ParsedMaterialBase::validateVectorNames(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), VolumeAux::VolumeAux(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), XYMeshLineCutter::XYMeshLineCutter(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

440 {
441  _pars.paramError(param, std::forward<Args>(args)...);
442 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
void paramError(const std::string &param, Args... args) const
Emits a parameter error prefixed with the parameter location and object information if available...

◆ parameters()

const InputParameters& MooseBase::parameters ( ) const
inlineinherited

Get the parameters of the object.

Returns
The parameters of the object

Definition at line 131 of file MooseBase.h.

Referenced by MeshOnlyAction::act(), SplitMeshAction::act(), SetupDebugAction::act(), CSGOnlyAction::act(), AddActionComponentAction::act(), CommonOutputAction::act(), Action::Action(), FEProblemBase::addAnyRedistributers(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), MFEMProblem::addAuxVariable(), DisplacedProblem::addAuxVariable(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), FEProblemBase::addDefaultMultiAppFixedPointConvergence(), ReferenceResidualProblem::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), FEProblemBase::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultSteadyStateConvergence(), FEProblemBase::addDefaultSteadyStateConvergence(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MFEMProblem::addFESpace(), MFEMProblem::addFunction(), FEProblemBase::addFunction(), MFEMProblem::addFunctorMaterial(), FEProblemBase::addFunctorMaterial(), FEProblemBase::addFVBC(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVKernel(), MFEMProblem::addGridFunction(), FEProblemBase::addHDGKernel(), FEProblemBase::addIndicator(), MFEMProblem::addInitialCondition(), FEProblemBase::addInitialCondition(), DiffusionPhysicsBase::addInitialConditions(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblem::addLineSearch(), FEProblemBase::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMeshDivision(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), MFEMProblem::addMFEMPreconditioner(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), FEProblemBase::addObject(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), MFEMProblem::addPostprocessor(), FEProblemBase::addPostprocessor(), FEProblemBase::addPredictor(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), MFEMProblem::addSubMesh(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addTransfer(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), MFEMProblem::addVariable(), DisplacedProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), AdvancedOutput::AdvancedOutput(), ADVectorFunctionDirichletBC::ADVectorFunctionDirichletBC(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), Action::associateWithParameter(), AuxKernelBase::AuxKernelBase(), AuxScalarKernel::AuxScalarKernel(), BoundsBase::BoundsBase(), buildTypedMesh(), PostprocessorInterface::checkParam(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), SampledOutput::cloneMesh(), LibtorchNeuralNetControl::conditionalParameterError(), Console::Console(), MooseMeshUtils::copyIntoMesh(), CommonOutputAction::create(), MultiApp::createApp(), Postprocessor::declareValue(), DumpObjectsProblem::deduceNecessaryParameters(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DumpObjectsProblem::dumpObjectHelper(), DumpObjectsProblem::DumpObjectsProblem(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), ElementMaterialSampler::ElementMaterialSampler(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), Executor::Executor(), Exodus::Exodus(), ElementSubdomainModifierBase::extrapolatePolynomial(), FEProblem::FEProblem(), FixedPointSolve::FixedPointSolve(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), GapValueAux::GapValueAux(), ParsedSubdomainGeneratorBase::generate(), ActionWarehouse::getCurrentActionName(), ExecutorInterface::getExecutor(), Material::getMaterial(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), UserObjectInterface::getUserObjectName(), AuxKernelBase::getVariableHelper(), VectorPostprocessorInterface::getVectorPostprocessorName(), GhostingUserObject::GhostingUserObject(), MeshGeneratorSystem::hasDataDrivenAllowed(), AttribSystem::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), FullSolveMultiApp::initialSetup(), FEProblemBase::initNullSpaceVectors(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceIntegralVariableValuePostprocessor::InterfaceIntegralVariableValuePostprocessor(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MooseObject::isKokkosObject(), isValid(), IterationAdaptiveDT::IterationAdaptiveDT(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), MFEMCGSolver::MFEMCGSolver(), MFEMGMRESSolver::MFEMGMRESSolver(), MFEMHypreADS::MFEMHypreADS(), MFEMHypreAMS::MFEMHypreAMS(), MFEMHypreBoomerAMG::MFEMHypreBoomerAMG(), MFEMHypreFGMRES::MFEMHypreFGMRES(), MFEMHypreGMRES::MFEMHypreGMRES(), MFEMHyprePCG::MFEMHyprePCG(), MFEMOperatorJacobiSmoother::MFEMOperatorJacobiSmoother(), MFEMSuperLU::MFEMSuperLU(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableInterface< Real >::MooseVariableInterface(), MultiApp::MultiApp(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NodeFaceConstraint::NodeFaceConstraint(), ConsoleUtils::outputLegacyInformation(), OverlayMeshGenerator::OverlayMeshGenerator(), MooseServer::parseDocumentForDiagnostics(), ParsedReporterBase::ParsedReporterBase(), ParsedScalarReporter::ParsedScalarReporter(), PenetrationAux::PenetrationAux(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), NEML2Action::printSummary(), ProjectedStatefulMaterialStorageAction::processProperty(), PropertyReadFile::PropertyReadFile(), PseudoTimestep::PseudoTimestep(), RandomIC::RandomIC(), ReferenceResidualConvergence::ReferenceResidualConvergence(), InputParameterWarehouse::removeInputParameters(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblem::setInputParametersFEProblem(), FEProblemBase::setInputParametersFEProblem(), FEProblemBase::setResidualObjectParamsAndLog(), SideSetsGeneratorBase::setup(), NonlinearSystemBase::shouldEvaluatePreSMOResidual(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), Moose::PetscSupport::storePetscOptions(), DumpObjectsProblem::stringifyParameters(), TaggingInterface::TaggingInterface(), Transfer::Transfer(), TransientBase::TransientBase(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), and MooseApp::~MooseApp().

131 { return _pars; }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366

◆ paramInfo()

template<typename... Args>
void MooseBase::paramInfo ( const std::string &  param,
Args...  args 
) const
inherited

Emits an informational message prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseInfo - only printing a message using the given args.

Definition at line 453 of file MooseBase.h.

Referenced by GridPartitioner::_do_partition(), ComboMarker::ComboMarker(), Control::Control(), FunctorIC::FunctorIC(), and TransientMultiApp::TransientMultiApp().

454 {
455  mooseInfo(_pars.paramMessage(param, std::forward<Args>(args)...));
456 }
std::string paramMessage(const std::string &param, Args... args) const
void mooseInfo(Args &&... args) const
Definition: MooseBase.h:321
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366

◆ paramWarning() [1/2]

template<typename... Args>
void SolutionInvalidInterface::paramWarning ( const std::string &  param,
Args...  args 
) const
inlineinherited

◆ paramWarning() [2/2]

template<typename... Args>
void MooseBase::paramWarning ( const std::string &  param,
Args...  args 
) const
inherited

Emits a warning prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseWarning - only printing a message using the given args.

Definition at line 446 of file MooseBase.h.

447 {
448  mooseWarning(_pars.paramMessage(param, std::forward<Args>(args)...));
449 }
std::string paramMessage(const std::string &param, Args... args) const
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:299

◆ partitionerName()

const MooseEnum& MooseMesh::partitionerName ( ) const
inline

Definition at line 1024 of file MooseMesh.h.

1024 { return _partitioner_name; }
MooseEnum _partitioner_name
The partitioner used on this mesh.
Definition: MooseMesh.h:1463

◆ partitioning()

MooseEnum MooseMesh::partitioning ( )
static

returns MooseMesh partitioning options so other classes can use it

Definition at line 3978 of file MooseMesh.C.

3979 {
3980  MooseEnum partitioning("default=-3 metis=-2 parmetis=-1 linear=0 centroid hilbert_sfc morton_sfc",
3981  "default");
3982  return partitioning;
3983 }
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
static MooseEnum partitioning()
returns MooseMesh partitioning options so other classes can use it
Definition: MooseMesh.C:3978

◆ perfGraph()

PerfGraph & PerfGraphInterface::perfGraph ( )
inherited

Get the PerfGraph.

Definition at line 78 of file PerfGraphInterface.C.

Referenced by CommonOutputAction::act(), PerfGraphData::finalize(), and PerfGraphOutput::output().

79 {
80  return _pg_moose_app.perfGraph();
81 }
MooseApp & _pg_moose_app
The MooseApp that owns the PerfGraph.
PerfGraph & perfGraph()
Get the PerfGraph for this app.
Definition: MooseApp.h:173

◆ prepare()

bool MooseMesh::prepare ( const MeshBase mesh_to_clone)

Calls prepare_for_use() if the underlying MeshBase object isn't prepared, then communicates various boundary information on parallel meshes.

Also calls update() internally. Instead of calling prepare_for_use on the currently held MeshBase object, a mesh_to_clone can be provided. If it is provided (e.g. this method is given a non-null argument), then _mesh will be assigned a clone of the mesh_to_clone. The provided mesh_to_clone must already be prepared

Parameters
mesh_to_cloneIf nonnull, we will clone this mesh instead of preparing our current one
Returns
Whether the libMesh mesh was prepared. This should really only be relevant in MOOSE framework contexts where we need to make a decision about what to do with the displaced mesh. If the reference mesh base object has prepare_for_use called (e.g. this method returns true when called for the reference mesh), then we must pass the reference mesh base object into this method when we call this for the displaced mesh. This is because the displaced mesh must be an exact clone of the reference mesh. We have seen that prepare_for_use called on two previously identical meshes can result in two different meshes even with Metis partitioning

Definition at line 431 of file MooseMesh.C.

432 {
433  TIME_SECTION("prepare", 2, "Preparing Mesh", true);
434 
435  bool called_prepare_for_use = false;
436 
437  mooseAssert(_mesh, "The MeshBase has not been constructed");
438 
439  if (!dynamic_cast<DistributedMesh *>(&getMesh()) || _is_nemesis)
440  // For whatever reason we do not want to allow renumbering here nor ever in the future?
441  getMesh().allow_renumbering(false);
442 
443  if (mesh_to_clone)
444  {
445  mooseAssert(mesh_to_clone->is_prepared(),
446  "The mesh we wish to clone from must already be prepared");
447  _mesh = mesh_to_clone->clone();
448  _moose_mesh_prepared = false;
449  }
450  else if (!_mesh->is_prepared())
451  {
452  _mesh->prepare_for_use();
453  _moose_mesh_prepared = false;
454  called_prepare_for_use = true;
455  }
456 
458  return called_prepare_for_use;
459 
460  // Collect (local) subdomain IDs
461  _mesh_subdomains.clear();
462  for (const auto & elem : getMesh().element_ptr_range())
464 
465  // add explicitly requested subdomains
466  if (isParamValid("add_subdomain_ids") && !isParamValid("add_subdomain_names"))
467  {
468  // only subdomain ids are explicitly given
469  const auto & add_subdomain_id = getParam<std::vector<SubdomainID>>("add_subdomain_ids");
470  _mesh_subdomains.insert(add_subdomain_id.begin(), add_subdomain_id.end());
471  }
472  else if (isParamValid("add_subdomain_ids") && isParamValid("add_subdomain_names"))
473  {
474  const auto add_subdomain =
475  getParam<SubdomainID, SubdomainName>("add_subdomain_ids", "add_subdomain_names");
476  for (const auto & [sub_id, sub_name] : add_subdomain)
477  {
478  // add subdomain id
479  _mesh_subdomains.insert(sub_id);
480  // set name of the subdomain just added
481  setSubdomainName(sub_id, sub_name);
482  }
483  }
484  else if (isParamValid("add_subdomain_names"))
485  {
486  // the user has defined add_subdomain_names, but not add_subdomain_ids
487  const auto & add_subdomain_names = getParam<std::vector<SubdomainName>>("add_subdomain_names");
488 
489  // to define subdomain ids, we need the largest subdomain id defined yet.
490  subdomain_id_type offset = 0;
491  if (!_mesh_subdomains.empty())
492  offset = *_mesh_subdomains.rbegin();
493 
494  // add all subdomains (and auto-assign ids)
495  for (const SubdomainName & sub_name : add_subdomain_names)
496  {
497  // to avoid two subdomains with the same ID (notably on recover)
499  continue;
500  const auto sub_id = ++offset;
501  // add subdomain id
502  _mesh_subdomains.insert(sub_id);
503  // set name of the subdomain just added
504  setSubdomainName(sub_id, sub_name);
505  }
506  }
507 
508  // Make sure nodesets have been generated
510 
511  // Collect (local) boundary IDs
512  const std::set<BoundaryID> & local_bids = getMesh().get_boundary_info().get_boundary_ids();
513  _mesh_boundary_ids.insert(local_bids.begin(), local_bids.end());
514 
515  const std::set<BoundaryID> & local_node_bids =
517  _mesh_nodeset_ids.insert(local_node_bids.begin(), local_node_bids.end());
518 
519  const std::set<BoundaryID> & local_side_bids =
521  _mesh_sideset_ids.insert(local_side_bids.begin(), local_side_bids.end());
522 
523  // Add explicitly requested sidesets/nodesets
524  // This is done *after* the side boundaries (e.g. "right", ...) have been generated.
525  auto add_sets = [this](const bool sidesets, auto & set_ids)
526  {
527  const std::string type = sidesets ? "sideset" : "nodeset";
528  const std::string id_param = "add_" + type + "_ids";
529  const std::string name_param = "add_" + type + "_names";
530 
531  if (isParamValid(id_param))
532  {
533  const auto & add_ids = getParam<std::vector<BoundaryID>>(id_param);
534  _mesh_boundary_ids.insert(add_ids.begin(), add_ids.end());
535  set_ids.insert(add_ids.begin(), add_ids.end());
537  {
538  const auto & add_names = getParam<std::vector<BoundaryName>>(name_param);
539  mooseAssert(add_names.size() == add_ids.size(),
540  "Id and name sets must be the same size when adding.");
541  for (const auto i : index_range(add_ids))
542  setBoundaryName(add_ids[i], add_names[i]);
543  }
544  }
545  else if (isParamValid(name_param))
546  {
547  // the user has defined names, but not ids
548  const auto & add_names = getParam<std::vector<BoundaryName>>(name_param);
549 
550  auto & mesh_ids = sidesets ? _mesh_sideset_ids : _mesh_nodeset_ids;
551 
552  // to define ids, we need the largest id defined yet.
553  boundary_id_type offset = 0;
554  if (!mesh_ids.empty())
555  offset = *mesh_ids.rbegin();
556  if (!_mesh_boundary_ids.empty())
557  offset = std::max(offset, *_mesh_boundary_ids.rbegin());
558 
559  // add all sidesets/nodesets (and auto-assign ids)
560  for (const auto & name : add_names)
561  {
562  // to avoid two sets with the same ID (notably on recover)
564  continue;
565  const auto id = ++offset;
566  // add sideset id
567  _mesh_boundary_ids.insert(id);
568  set_ids.insert(id);
569  // set name of the sideset just added
570  setBoundaryName(id, name);
571  }
572  }
573  };
574 
575  add_sets(true, _mesh_sideset_ids);
576  add_sets(false, _mesh_nodeset_ids);
577 
578  // Communicate subdomain and boundary IDs if this is a parallel mesh
579  if (!getMesh().is_serial())
580  {
585  }
586 
588  {
589  if (!_coord_system_set)
590  setCoordSystem(_provided_coord_blocks, getParam<MultiMooseEnum>("coord_type"));
591  else if (_pars.isParamSetByUser("coord_type"))
592  mooseError(
593  "Trying to set coordinate system type information based on the user input file, but "
594  "the coordinate system type information has already been set programmatically! "
595  "Either remove your coordinate system type information from the input file, or contact "
596  "your application developer");
597  }
598 
599  // Set general axisymmetric axes if provided
600  if (isParamValid("rz_coord_blocks") && isParamValid("rz_coord_origins") &&
601  isParamValid("rz_coord_directions"))
602  {
603  const auto rz_coord_blocks = getParam<std::vector<SubdomainName>>("rz_coord_blocks");
604  const auto rz_coord_origins = getParam<std::vector<Point>>("rz_coord_origins");
605  const auto rz_coord_directions = getParam<std::vector<RealVectorValue>>("rz_coord_directions");
606  if (rz_coord_origins.size() == rz_coord_blocks.size() &&
607  rz_coord_directions.size() == rz_coord_blocks.size())
608  {
609  std::vector<std::pair<Point, RealVectorValue>> rz_coord_axes;
610  for (unsigned int i = 0; i < rz_coord_origins.size(); ++i)
611  rz_coord_axes.push_back(std::make_pair(rz_coord_origins[i], rz_coord_directions[i]));
612 
613  setGeneralAxisymmetricCoordAxes(rz_coord_blocks, rz_coord_axes);
614 
615  if (isParamSetByUser("rz_coord_axis"))
616  mooseError("The parameter 'rz_coord_axis' may not be provided if 'rz_coord_blocks', "
617  "'rz_coord_origins', and 'rz_coord_directions' are provided.");
618  }
619  else
620  mooseError("The parameters 'rz_coord_blocks', 'rz_coord_origins', and "
621  "'rz_coord_directions' must all have the same size.");
622  }
623  else if (isParamValid("rz_coord_blocks") || isParamValid("rz_coord_origins") ||
624  isParamValid("rz_coord_directions"))
625  mooseError("If any of the parameters 'rz_coord_blocks', 'rz_coord_origins', and "
626  "'rz_coord_directions' are provided, then all must be provided.");
627 
629 
630  update();
631 
632  // Check if there is subdomain name duplication for the same subdomain ID
634 
635  _moose_mesh_prepared = true;
636 
637  return called_prepare_for_use;
638 }
const std::set< boundary_id_type > & get_side_boundary_ids() const
bool _is_nemesis
True if a Nemesis Mesh was read in.
Definition: MooseMesh.h:1496
static const std::string name_param
The name of the parameter that contains the object name.
Definition: MooseBase.h:55
std::vector< SubdomainName > _provided_coord_blocks
Set for holding user-provided coordinate system type block names.
Definition: MooseMesh.h:1917
bool is_prepared() const
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
void checkDuplicateSubdomainNames()
Loop through all subdomain IDs and check if there is name duplication used for the subdomains with sa...
Definition: MooseMesh.C:4417
void allow_renumbering(bool allow)
const BoundaryID INVALID_BOUNDARY_ID
Definition: MooseTypes.C:22
const Parallel::Communicator & _communicator
const BoundaryInfo & get_boundary_info() const
virtual std::unique_ptr< MeshBase > clone() const=0
void buildNodeListFromSideList()
Calls BoundaryInfo::build_node_list_from_side_list().
Definition: MooseMesh.C:3035
auto max(const L &left, const R &right)
const std::set< boundary_id_type > & get_node_boundary_ids() const
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
bool _built_from_other_mesh
Whether or not this mesh was built from another mesh.
Definition: MooseMesh.h:1441
int8_t boundary_id_type
void setSubdomainName(SubdomainID subdomain_id, const SubdomainName &name)
This method sets the name for subdomain_id to name.
Definition: MooseMesh.C:1799
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
void update()
Calls buildNodeListFromSideList(), buildNodeList(), and buildBndElemList().
Definition: MooseMesh.C:641
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:93
std::set< BoundaryID > _mesh_nodeset_ids
Definition: MooseMesh.h:1553
void setCoordSystem(const std::vector< SubdomainName > &blocks, const MultiMooseEnum &coord_sys)
Set the coordinate system for the provided blocks to coord_sys.
Definition: MooseMesh.C:4161
std::set< BoundaryID > _mesh_boundary_ids
A set of boundary IDs currently present in the mesh.
Definition: MooseMesh.h:1551
bool _moose_mesh_prepared
True if prepare has been called on the mesh.
Definition: MooseMesh.h:1499
bool _coord_system_set
Whether the coordinate system has been set.
Definition: MooseMesh.h:1914
const std::set< boundary_id_type > & get_boundary_ids() const
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.
void setBoundaryName(BoundaryID boundary_id, BoundaryName name)
This method sets the boundary name of the boundary based on the id parameter.
Definition: MooseMesh.C:1830
std::set< BoundaryID > _mesh_sideset_ids
Definition: MooseMesh.h:1552
void setGeneralAxisymmetricCoordAxes(const std::vector< SubdomainName > &blocks, const std::vector< std::pair< Point, RealVectorValue >> &axes)
Sets the general coordinate axes for axisymmetric blocks.
Definition: MooseMesh.C:4301
bool detectOrthogonalDimRanges(Real tol=1e-6)
This routine determines whether the Mesh is a regular orthogonal mesh (i.e.
Definition: MooseMesh.C:1975
subdomain_id_type subdomain_id() const
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:199
std::set< SubdomainID > _mesh_subdomains
A set of subdomain IDs currently present in the mesh.
Definition: MooseMesh.h:1543
static constexpr subdomain_id_type invalid_subdomain_id
bool isParamSetByUser(const std::string &name) const
Test if the supplied parameter is set by a user, as opposed to not set or set to default.
Definition: MooseBase.h:205
auto index_range(const T &sizable)
BoundaryID getBoundaryID(const BoundaryName &boundary_name) const
Get the associated BoundaryID for the boundary name.
Definition: MooseMesh.C:1742
SubdomainID getSubdomainID(const SubdomainName &subdomain_name) const
Get the associated subdomain ID for the subdomain name.
Definition: MooseMesh.C:1781
void set_union(T &data, const unsigned int root_id) const

◆ prepared() [1/2]

bool MooseMesh::prepared ( ) const

Setter/getter for whether the mesh is prepared.

Definition at line 3217 of file MooseMesh.C.

Referenced by needsPrepareForUse(), GeneratedMesh::prepared(), and AnnularMesh::prepared().

3218 {
3219  return _mesh->is_prepared() && _moose_mesh_prepared;
3220 }
bool _moose_mesh_prepared
True if prepare has been called on the mesh.
Definition: MooseMesh.h:1499
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ prepared() [2/2]

void MooseMesh::prepared ( bool  state)
virtual

If we are explicitly setting the mesh to not prepared, then we've likely modified the mesh and can no longer make assumptions about orthogonality. We really should recheck.

Reimplemented in AnnularMesh, and GeneratedMesh.

Definition at line 3223 of file MooseMesh.C.

3224 {
3225  if (state)
3226  mooseError("We don't have any right to tell the libmesh mesh that it *is* prepared. Only a "
3227  "call to prepare_for_use should tell us that");
3228 
3229  // Some people may call this even before we have a MeshBase object. This isn't dangerous really
3230  // because when the MeshBase object is born, it knows it's in an unprepared state
3231  if (_mesh)
3232  _mesh->set_isnt_prepared();
3233 
3234  // If the libMesh mesh isn't preparead, then our MooseMesh wrapper is also no longer prepared
3235  _moose_mesh_prepared = false;
3236 
3241  _regular_orthogonal_mesh = false;
3242 }
bool _moose_mesh_prepared
True if prepare has been called on the mesh.
Definition: MooseMesh.h:1499
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
bool _regular_orthogonal_mesh
Boolean indicating whether this mesh was detected to be regular and orthogonal.
Definition: MooseMesh.h:1604

◆ printInfo()

void MooseMesh::printInfo ( std::ostream &  os = libMesh::out,
const unsigned int  verbosity = 0 
) const

Calls print_info() on the underlying Mesh.

Definition at line 3542 of file MooseMesh.C.

Referenced by Adaptivity::adaptMesh().

3543 {
3544  os << '\n';
3545  getMesh().print_info(os, verbosity);
3546  os << std::flush;
3547 }
std::basic_ostream< charT, traits > * os
Definition: InfixIterator.h:33
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
void print_info(std::ostream &os=libMesh::out, const unsigned int verbosity=0, const bool global=true) const

◆ queryElemPtr() [1/2]

Elem * MooseMesh::queryElemPtr ( const dof_id_type  i)
virtual

Definition at line 3205 of file MooseMesh.C.

Referenced by PointSamplerBase::getLocalElemContainingPoint(), NodePositions::initialize(), ElementalVariableValue::initialSetup(), DisplacedProblem::reinitElemPhys(), FEProblemBase::reinitElemPhys(), and EqualValueBoundaryConstraint::updateConstrainedNodes().

3206 {
3207  return getMesh().query_elem_ptr(i);
3208 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual const Elem * query_elem_ptr(const dof_id_type i) const=0

◆ queryElemPtr() [2/2]

const Elem * MooseMesh::queryElemPtr ( const dof_id_type  i) const
virtual

Definition at line 3211 of file MooseMesh.C.

3212 {
3213  return getMesh().query_elem_ptr(i);
3214 }
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual const Elem * query_elem_ptr(const dof_id_type i) const=0

◆ queryNodePtr() [1/2]

const Node * MooseMesh::queryNodePtr ( const dof_id_type  i) const
virtual

Definition at line 887 of file MooseMesh.C.

Referenced by NonlinearSystemBase::findImplicitGeometricCouplingEntries(), NodePositions::initialize(), nodeRef(), queryNodePtr(), and EqualValueBoundaryConstraint::updateConstrainedNodes().

888 {
889  if (i > getMesh().max_node_id())
890  {
891  auto it = _quadrature_nodes.find(i);
892  if (it == _quadrature_nodes.end())
893  return nullptr;
894  auto & node_ptr = it->second;
895  mooseAssert(node_ptr, "Uninitialized quadrature node");
896  return node_ptr;
897  }
898 
899  return getMesh().query_node_ptr(i);
900 }
std::map< dof_id_type, Node * > _quadrature_nodes
Definition: MooseMesh.h:1574
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual const Node * query_node_ptr(const dof_id_type i) const=0

◆ queryNodePtr() [2/2]

Node * MooseMesh::queryNodePtr ( const dof_id_type  i)
virtual

Definition at line 903 of file MooseMesh.C.

904 {
905  return const_cast<Node *>(const_cast<const MooseMesh *>(this)->queryNodePtr(i));
906 }
virtual const Node * queryNodePtr(const dof_id_type i) const
Definition: MooseMesh.C:887
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition: MooseMesh.h:92

◆ queryParam()

template<typename T >
const T * MooseBase::queryParam ( const std::string &  name) const
inherited

Query a parameter for the object.

If the parameter is not valid, nullptr will be returned

Parameters
nameThe name of the parameter
Returns
A pointer to the parameter value, if it exists

Definition at line 395 of file MooseBase.h.

396 {
397  return isParamValid(name) ? &getParam<T>(name) : nullptr;
398 }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:199

◆ refinedElementRange()

ConstElemPointerRange * MooseMesh::refinedElementRange ( ) const

Return a range that is suitable for threaded execution over elements that were just refined.

Returns
The Parent elements that are now set to be INACTIVE. Their children are the new elements.

Definition at line 958 of file MooseMesh.C.

Referenced by FEProblemBase::meshChanged().

959 {
960  return _refined_elements.get();
961 }
std::unique_ptr< ConstElemPointerRange > _refined_elements
The elements that were just refined.
Definition: MooseMesh.h:1502

◆ registerInvalidSolutionInternal()

InvalidSolutionID SolutionInvalidInterface::registerInvalidSolutionInternal ( const std::string &  message,
const bool  warning 
) const
protectedinherited

Definition at line 55 of file SolutionInvalidInterface.C.

57 {
59  _si_moose_base.type(), message, warning);
60 }
InvalidSolutionID registerInvalidity(const std::string &object_type, const std::string &message, const bool warning)
Call to register an invalid calculation.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:93
SolutionInvalidityRegistry & getSolutionInvalidityRegistry()
Get the global SolutionInvalidityRegistry singleton.
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ registerTimedSection() [1/2]

PerfID PerfGraphInterface::registerTimedSection ( const std::string &  section_name,
const unsigned int  level 
) const
protectedinherited

Call to register a named section for timing.

Parameters
section_nameThe name of the code section to be timed
levelThe importance of the timer - lower is more important (0 will always come out)
Returns
The ID of the section - use when starting timing

Definition at line 53 of file PerfGraphInterface.C.

55 {
56  const auto timed_section_name = timedSectionName(section_name);
57  if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
58  return moose::internal::getPerfGraphRegistry().registerSection(timed_section_name, level);
59  else
60  return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
61 }
PerfID registerSection(const std::string &section_name, const unsigned int level)
Call to register a named section for timing.
std::string timedSectionName(const std::string &section_name) const
PerfID sectionID(const std::string &section_name) const
Given a name return the PerfID The name of the section.
PerfGraphRegistry & getPerfGraphRegistry()
Get the global PerfGraphRegistry singleton.

◆ registerTimedSection() [2/2]

PerfID PerfGraphInterface::registerTimedSection ( const std::string &  section_name,
const unsigned int  level,
const std::string &  live_message,
const bool  print_dots = true 
) const
protectedinherited

Call to register a named section for timing.

Parameters
section_nameThe name of the code section to be timed
levelThe importance of the timer - lower is more important (0 will always come out)
live_messageThe message to be printed to the screen during execution
print_dotsWhether or not progress dots should be printed for this section
Returns
The ID of the section - use when starting timing

Definition at line 64 of file PerfGraphInterface.C.

68 {
69  const auto timed_section_name = timedSectionName(section_name);
70  if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
72  timedSectionName(section_name), level, live_message, print_dots);
73  else
74  return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
75 }
PerfID registerSection(const std::string &section_name, const unsigned int level)
Call to register a named section for timing.
std::string timedSectionName(const std::string &section_name) const
PerfID sectionID(const std::string &section_name) const
Given a name return the PerfID The name of the section.
PerfGraphRegistry & getPerfGraphRegistry()
Get the global PerfGraphRegistry singleton.

◆ restartableName()

std::string Restartable::restartableName ( const std::string &  data_name) const
protectedinherited

Gets the name of a piece of restartable data given a data name, adding the system name and object name prefix.

This should only be used in this interface and in testing.

Definition at line 78 of file Restartable.C.

Referenced by Restartable::declareRecoverableData(), and Restartable::declareRestartableDataHelper().

79 {
80  return _restartable_system_name + "/" + _restartable_name + "/" + data_name;
81 }
std::string _restartable_name
The name of the object.
Definition: Restartable.h:250
const std::string _restartable_system_name
The system name this object is in.
Definition: Restartable.h:237

◆ safeClone()

virtual std::unique_ptr<MooseMesh> MooseMesh::safeClone ( ) const
pure virtual

A safer version of the clone() method that hands back an allocated object wrapped in a smart pointer.

This makes it much less likely that the caller will leak the memory in question.

Implemented in MFEMMesh, PatternedMesh, StitchedMesh, MeshGeneratorMesh, AnnularMesh, ConcentricCircleMesh, GeneratedMesh, RinglebMesh, SpiralAnnularMesh, ImageMesh, FileMesh, and TiledMesh.

Referenced by SetupMeshAction::act(), and SampledOutput::cloneMesh().

◆ setAxisymmetricCoordAxis()

void MooseMesh::setAxisymmetricCoordAxis ( const MooseEnum rz_coord_axis)

For axisymmetric simulations, set the symmetry coordinate axis.

For r in the x-direction, z in the y-direction the coordinate axis would be y

Definition at line 4293 of file MooseMesh.C.

Referenced by FEProblemBase::setAxisymmetricCoordAxis().

4294 {
4295  _rz_coord_axis = rz_coord_axis;
4296 
4298 }
void updateCoordTransform()
Update the coordinate transformation object based on our coordinate system data.
Definition: MooseMesh.C:4365
unsigned int _rz_coord_axis
Storage for RZ axis selection.
Definition: MooseMesh.h:1904

◆ setBoundaryName()

void MooseMesh::setBoundaryName ( BoundaryID  boundary_id,
BoundaryName  name 
)

This method sets the boundary name of the boundary based on the id parameter.

Definition at line 1830 of file MooseMesh.C.

Referenced by prepare(), and ActivateElementsUserObjectBase::setNewBoundayName().

1831 {
1832  BoundaryInfo & boundary_info = getMesh().get_boundary_info();
1833 
1834  // We need to figure out if this boundary is a sideset or nodeset
1835  if (boundary_info.get_side_boundary_ids().count(boundary_id))
1836  boundary_info.sideset_name(boundary_id) = name;
1837  else
1838  boundary_info.nodeset_name(boundary_id) = name;
1839 }
const std::set< boundary_id_type > & get_side_boundary_ids() const
std::string & nodeset_name(boundary_id_type id)
const BoundaryInfo & get_boundary_info() const
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::string & sideset_name(boundary_id_type id)

◆ setBoundaryToNormalMap() [1/2]

void MooseMesh::setBoundaryToNormalMap ( std::unique_ptr< std::map< BoundaryID, RealVectorValue >>  boundary_map)

Sets the mapping between BoundaryID and normal vector Is called by AddAllSideSetsByNormals.

Definition at line 3281 of file MooseMesh.C.

3283 {
3284  _boundary_to_normal_map = std::move(boundary_map);
3285 }
std::unique_ptr< std::map< BoundaryID, RealVectorValue > > _boundary_to_normal_map
The boundary to normal map - valid only when AddAllSideSetsByNormals is active.
Definition: MooseMesh.h:1557

◆ setBoundaryToNormalMap() [2/2]

void MooseMesh::setBoundaryToNormalMap ( std::map< BoundaryID, RealVectorValue > *  boundary_map)

Definition at line 3288 of file MooseMesh.C.

3289 {
3290  mooseDeprecated("setBoundaryToNormalMap(std::map<BoundaryID, RealVectorValue> * boundary_map) is "
3291  "deprecated, use the unique_ptr version instead");
3292  _boundary_to_normal_map.reset(boundary_map);
3293 }
std::unique_ptr< std::map< BoundaryID, RealVectorValue > > _boundary_to_normal_map
The boundary to normal map - valid only when AddAllSideSetsByNormals is active.
Definition: MooseMesh.h:1557
void mooseDeprecated(Args &&... args) const

◆ setCoordData()

void MooseMesh::setCoordData ( const MooseMesh other_mesh)

Set the coordinate system data to that of other_mesh.

Definition at line 4402 of file MooseMesh.C.

Referenced by DisplacedProblem::DisplacedProblem().

4403 {
4404  _coord_sys = other_mesh._coord_sys;
4405  _rz_coord_axis = other_mesh._rz_coord_axis;
4407 }
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
Definition: MooseMesh.h:1901
std::unordered_map< SubdomainID, std::pair< Point, RealVectorValue > > _subdomain_id_to_rz_coord_axis
Map of subdomain ID to general axisymmetric axis.
Definition: MooseMesh.h:1907
unsigned int _rz_coord_axis
Storage for RZ axis selection.
Definition: MooseMesh.h:1904

◆ setCoordSystem()

void MooseMesh::setCoordSystem ( const std::vector< SubdomainName > &  blocks,
const MultiMooseEnum coord_sys 
)

Set the coordinate system for the provided blocks to coord_sys.

Definition at line 4161 of file MooseMesh.C.

Referenced by prepare(), and FEProblemBase::setCoordSystem().

4163 {
4164  TIME_SECTION("setCoordSystem", 5, "Setting Coordinate System");
4166  {
4167  const std::string param_name = isParamValid("coord_block") ? "coord_block" : "block";
4168  mooseWarning("Supplied blocks in the 'setCoordSystem' method do not match the value of the "
4169  "'Mesh/",
4170  param_name,
4171  "' parameter. Did you provide different parameter values for 'Mesh/",
4172  param_name,
4173  "' and 'Problem/block'?. We will honor the parameter value from 'Mesh/",
4174  param_name,
4175  "'");
4176  mooseAssert(_coord_system_set,
4177  "If we are arriving here due to a bad specification in the Problem block, then we "
4178  "should have already set our coordinate system subdomains from the Mesh block");
4179  return;
4180  }
4181  if (_pars.isParamSetByUser("coord_type") && getParam<MultiMooseEnum>("coord_type") != coord_sys)
4182  mooseError("Supplied coordinate systems in the 'setCoordSystem' method do not match the value "
4183  "of the 'Mesh/coord_type' parameter. Did you provide different parameter values for "
4184  "'coord_type' to 'Mesh' and 'Problem'?");
4185 
4186  // If blocks contain ANY_BLOCK_ID, it should be the only block specified, and coord_sys should
4187  // have one and only one entry. In that case, the same coordinate system will be set for all
4188  // subdomains.
4189  if (blocks.size() == 1 && blocks[0] == "ANY_BLOCK_ID")
4190  {
4191  if (coord_sys.size() > 1)
4192  mooseError("If you specify ANY_BLOCK_ID as the only block, you must also specify a single "
4193  "coordinate system for it.");
4194  if (!_mesh->is_prepared())
4195  mooseError(
4196  "You cannot set the coordinate system for ANY_BLOCK_ID before the mesh is prepared. "
4197  "Please call this method after the mesh is prepared.");
4198  const auto coord_type = coord_sys.size() == 0
4200  : Moose::stringToEnum<Moose::CoordinateSystemType>(coord_sys[0]);
4201  for (const auto sid : meshSubdomains())
4202  _coord_sys[sid] = coord_type;
4203  return;
4204  }
4205 
4206  // If multiple blocks are specified, but one of them is ANY_BLOCK_ID, let's emit a helpful error
4207  if (std::find(blocks.begin(), blocks.end(), "ANY_BLOCK_ID") != blocks.end())
4208  mooseError("You cannot specify ANY_BLOCK_ID together with other blocks in the "
4209  "setCoordSystem() method. If you want to set the same coordinate system for all "
4210  "blocks, use ANY_BLOCK_ID as the only block.");
4211 
4212  auto subdomains = meshSubdomains();
4213  // It's possible that a user has called this API before the mesh is prepared and consequently we
4214  // don't yet have the subdomains in meshSubdomains()
4215  for (const auto & sub_name : blocks)
4216  {
4217  const auto sub_id = getSubdomainID(sub_name);
4218  subdomains.insert(sub_id);
4219  }
4220 
4221  if (coord_sys.size() <= 1)
4222  {
4223  // We will specify the same coordinate system for all blocks
4224  const auto coord_type = coord_sys.size() == 0
4226  : Moose::stringToEnum<Moose::CoordinateSystemType>(coord_sys[0]);
4227  for (const auto sid : subdomains)
4228  _coord_sys[sid] = coord_type;
4229  }
4230  else
4231  {
4232  if (blocks.size() != coord_sys.size())
4233  mooseError("Number of blocks and coordinate systems does not match.");
4234 
4235  for (const auto i : index_range(blocks))
4236  {
4237  SubdomainID sid = getSubdomainID(blocks[i]);
4238  Moose::CoordinateSystemType coord_type =
4239  Moose::stringToEnum<Moose::CoordinateSystemType>(coord_sys[i]);
4240  _coord_sys[sid] = coord_type;
4241  }
4242 
4243  for (const auto & sid : subdomains)
4244  if (_coord_sys.find(sid) == _coord_sys.end())
4245  mooseError("Subdomain '" + Moose::stringify(sid) +
4246  "' does not have a coordinate system specified.");
4247  }
4248 
4249  _coord_system_set = true;
4250 
4252 }
std::vector< SubdomainName > _provided_coord_blocks
Set for holding user-provided coordinate system type block names.
Definition: MooseMesh.h:1917
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
Find a value in an array.
Definition: KokkosUtils.h:42
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
char ** blocks
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
Definition: MooseMesh.h:1901
unsigned int size() const
Return the number of active items in the MultiMooseEnum.
void mooseWarning(Args &&... args) const
void updateCoordTransform()
Update the coordinate transformation object based on our coordinate system data.
Definition: MooseMesh.C:4365
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
bool _coord_system_set
Whether the coordinate system has been set.
Definition: MooseMesh.h:1914
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.
CoordinateSystemType
Definition: MooseTypes.h:858
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:199
auto index_range(const T &sizable)
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition: MooseMesh.C:3251
SubdomainID getSubdomainID(const SubdomainName &subdomain_name) const
Get the associated subdomain ID for the subdomain name.
Definition: MooseMesh.C:1781

◆ setCustomPartitioner()

void MooseMesh::setCustomPartitioner ( libMesh::Partitioner partitioner)

Setter for custom partitioner.

Definition at line 3779 of file MooseMesh.C.

3780 {
3781  _custom_partitioner = partitioner->clone();
3782 }
virtual std::unique_ptr< Partitioner > clone() const=0
std::unique_ptr< libMesh::Partitioner > _custom_partitioner
The custom partitioner.
Definition: MooseMesh.h:1467

◆ setGeneralAxisymmetricCoordAxes()

void MooseMesh::setGeneralAxisymmetricCoordAxes ( const std::vector< SubdomainName > &  blocks,
const std::vector< std::pair< Point, RealVectorValue >> &  axes 
)

Sets the general coordinate axes for axisymmetric blocks.

This method must be used if any of the following are true:

  • There are multiple axisymmetric coordinate systems
  • Any axisymmetric coordinate system axis/direction is not the +X or +Y axis
  • Any axisymmetric coordinate system does not start at (0,0,0)
Parameters
[in]blocksSubdomain names
[in]axesPair of values defining the axisymmetric coordinate axis for each subdomain. The first value is the point on the axis corresponding to the origin. The second value is the direction vector of the axis (normalization not necessary).

Definition at line 4301 of file MooseMesh.C.

Referenced by prepare().

4304 {
4305  // Set the axes for the given blocks
4306  mooseAssert(blocks.size() == axes.size(), "Blocks and axes vectors must be the same length.");
4307  for (const auto i : index_range(blocks))
4308  {
4309  const auto subdomain_id = getSubdomainID(blocks[i]);
4310  const auto it = _coord_sys.find(subdomain_id);
4311  if (it == _coord_sys.end())
4312  mooseError("The block '",
4313  blocks[i],
4314  "' has not set a coordinate system. Make sure to call setCoordSystem() before "
4315  "setGeneralAxisymmetricCoordAxes().");
4316  else
4317  {
4318  if (it->second == Moose::COORD_RZ)
4319  {
4320  const auto direction = axes[i].second;
4321  if (direction.is_zero())
4322  mooseError("Only nonzero vectors may be supplied for RZ directions.");
4323 
4324  _subdomain_id_to_rz_coord_axis[subdomain_id] =
4325  std::make_pair(axes[i].first, direction.unit());
4326  }
4327  else
4328  mooseError("The block '",
4329  blocks[i],
4330  "' was provided in setGeneralAxisymmetricCoordAxes(), but the coordinate system "
4331  "for this block is not 'RZ'.");
4332  }
4333  }
4334 
4335  // Make sure there are no RZ blocks that still do not have axes
4336  const auto all_subdomain_ids = meshSubdomains();
4337  for (const auto subdomain_id : all_subdomain_ids)
4338  if (getCoordSystem(subdomain_id) == Moose::COORD_RZ &&
4339  !_subdomain_id_to_rz_coord_axis.count(subdomain_id))
4340  mooseError("The block '",
4341  getSubdomainName(subdomain_id),
4342  "' was specified to use the 'RZ' coordinate system but was not given in "
4343  "setGeneralAxisymmetricCoordAxes().");
4344 
4346 }
char ** blocks
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
Definition: MooseMesh.h:1901
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
Definition: MooseMesh.C:1813
void updateCoordTransform()
Update the coordinate transformation object based on our coordinate system data.
Definition: MooseMesh.C:4365
const std::map< SubdomainID, Moose::CoordinateSystemType > & getCoordSystem() const
Get the map from subdomain ID to coordinate system type, e.g.
Definition: MooseMesh.C:4287
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
std::unordered_map< SubdomainID, std::pair< Point, RealVectorValue > > _subdomain_id_to_rz_coord_axis
Map of subdomain ID to general axisymmetric axis.
Definition: MooseMesh.h:1907
auto index_range(const T &sizable)
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition: MooseMesh.C:3251
SubdomainID getSubdomainID(const SubdomainName &subdomain_name) const
Get the associated subdomain ID for the subdomain name.
Definition: MooseMesh.C:1781

◆ setGhostedBoundaryInflation()

void MooseMesh::setGhostedBoundaryInflation ( const std::vector< Real > &  inflation)

This sets the inflation amount for the bounding box for each partition for use in ghosting boundaries.

Definition at line 3315 of file MooseMesh.C.

3316 {
3317  _ghosted_boundaries_inflation = inflation;
3318 }
std::vector< Real > _ghosted_boundaries_inflation
Definition: MooseMesh.h:1586

◆ setIsCustomPartitionerRequested()

void MooseMesh::setIsCustomPartitionerRequested ( bool  cpr)

Definition at line 3807 of file MooseMesh.C.

3808 {
3810 }
bool _custom_partitioner_requested
Definition: MooseMesh.h:1468

◆ setMeshBase()

void MooseMesh::setMeshBase ( std::unique_ptr< MeshBase mesh_base)

Method to set the mesh_base object.

If this method is NOT called prior to calling init(), a MeshBase object will be automatically constructed and set.

Definition at line 2918 of file MooseMesh.C.

2919 {
2920  _mesh = std::move(mesh_base);
2921  _mesh->allow_remote_element_removal(_allow_remote_element_removal);
2922 }
bool _allow_remote_element_removal
Whether to allow removal of remote elements.
Definition: MooseMesh.h:1859
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ setMeshBoundaryIDs()

void MooseMesh::setMeshBoundaryIDs ( std::set< BoundaryID boundary_IDs)

Sets the set of BoundaryIDs Is called by AddAllSideSetsByNormals.

Definition at line 3275 of file MooseMesh.C.

3276 {
3277  _mesh_boundary_ids = boundary_IDs;
3278 }
std::set< BoundaryID > _mesh_boundary_ids
A set of boundary IDs currently present in the mesh.
Definition: MooseMesh.h:1551

◆ setParallelType()

void MooseMesh::setParallelType ( ParallelType  parallel_type)
inline

Allow to change parallel type.

Definition at line 2187 of file MooseMesh.h.

Referenced by buildTypedMesh().

2188 {
2189  _parallel_type = parallel_type;
2191 }
ParallelType _parallel_type
Can be set to DISTRIBUTED, REPLICATED, or DEFAULT.
Definition: MooseMesh.h:1445
void determineUseDistributedMesh()
Determine whether to use a distributed mesh.
Definition: MooseMesh.C:2878

◆ setPartitioner()

void MooseMesh::setPartitioner ( MeshBase mesh_base,
MooseEnum partitioner,
bool  use_distributed_mesh,
const InputParameters params,
MooseObject context_obj 
)
static

Method for setting the partitioner on the passed in mesh_base object.

Definition at line 3720 of file MooseMesh.C.

Referenced by setPartitionerHelper().

3725 {
3726  // Set the partitioner based on partitioner name
3727  switch (partitioner)
3728  {
3729  case -3: // default
3730  // We'll use the default partitioner, but notify the user of which one is being used...
3731  if (use_distributed_mesh)
3732  partitioner = "parmetis";
3733  else
3734  partitioner = "metis";
3735  break;
3736 
3737  // No need to explicitily create the metis or parmetis partitioners,
3738  // They are the default for serial and parallel mesh respectively
3739  case -2: // metis
3740  case -1: // parmetis
3741  break;
3742 
3743  case 0: // linear
3744  mesh_base.partitioner().reset(new libMesh::LinearPartitioner);
3745  break;
3746  case 1: // centroid
3747  {
3748  if (!params.isParamValid("centroid_partitioner_direction"))
3749  context_obj.paramError(
3750  "centroid_partitioner_direction",
3751  "If using the centroid partitioner you _must_ specify centroid_partitioner_direction!");
3752 
3753  MooseEnum direction = params.get<MooseEnum>("centroid_partitioner_direction");
3754 
3755  if (direction == "x")
3756  mesh_base.partitioner().reset(
3758  else if (direction == "y")
3759  mesh_base.partitioner().reset(
3761  else if (direction == "z")
3762  mesh_base.partitioner().reset(
3764  else if (direction == "radial")
3765  mesh_base.partitioner().reset(
3767  break;
3768  }
3769  case 2: // hilbert_sfc
3770  mesh_base.partitioner().reset(new libMesh::HilbertSFCPartitioner);
3771  break;
3772  case 3: // morton_sfc
3773  mesh_base.partitioner().reset(new libMesh::MortonSFCPartitioner);
3774  break;
3775  }
3776 }
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:439
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
virtual std::unique_ptr< Partitioner > & partitioner()
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ setPartitionerHelper()

void MooseMesh::setPartitionerHelper ( MeshBase mesh = nullptr)
protected

Definition at line 3708 of file MooseMesh.C.

Referenced by buildTypedMesh().

3709 {
3710  if (_use_distributed_mesh && (_partitioner_name != "default" && _partitioner_name != "parmetis"))
3711  {
3712  _partitioner_name = "parmetis";
3713  _partitioner_overridden = true;
3714  }
3715 
3717 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
static void setPartitioner(MeshBase &mesh_base, MooseEnum &partitioner, bool use_distributed_mesh, const InputParameters &params, MooseObject &context_obj)
Method for setting the partitioner on the passed in mesh_base object.
Definition: MooseMesh.C:3720
MooseEnum _partitioner_name
The partitioner used on this mesh.
Definition: MooseMesh.h:1463
bool _use_distributed_mesh
False by default.
Definition: MooseMesh.h:1450
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
bool _partitioner_overridden
Definition: MooseMesh.h:1464

◆ setPatchUpdateStrategy()

void MooseMesh::setPatchUpdateStrategy ( Moose::PatchUpdateType  patch_update_strategy)

Set the patch size update strategy.

Definition at line 3487 of file MooseMesh.C.

3488 {
3489  _patch_update_strategy = patch_update_strategy;
3490 }
Moose::PatchUpdateType _patch_update_strategy
The patch update strategy.
Definition: MooseMesh.h:1598

◆ setSubdomainName() [1/2]

void MooseMesh::setSubdomainName ( SubdomainID  subdomain_id,
const SubdomainName &  name 
)

This method sets the name for subdomain_id to name.

Definition at line 1799 of file MooseMesh.C.

Referenced by MooseMesh(), and prepare().

1800 {
1801  mooseAssert(name != "ANY_BLOCK_ID", "Cannot set subdomain name to 'ANY_BLOCK_ID'");
1802  getMesh().subdomain_name(subdomain_id) = name;
1803 }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
std::string & subdomain_name(subdomain_id_type id)

◆ setSubdomainName() [2/2]

static void MooseMesh::setSubdomainName ( MeshBase &  mesh,
SubdomainID  subdomain_id,
const SubdomainName &  name 
)
static

This method sets the name for subdomain_id on the provided mesh to name.

◆ setUniformRefineLevel()

void MooseMesh::setUniformRefineLevel ( unsigned int  level,
bool  deletion = true 
)

Set uniform refinement level.

Definition at line 3302 of file MooseMesh.C.

3303 {
3304  _uniform_refine_level = level;
3306 }
unsigned int _uniform_refine_level
The level of uniform refinement requested (set to zero if AMR is disabled)
Definition: MooseMesh.h:1484
bool _skip_deletion_repartition_after_refine
Whether or not skip remote deletion and repartition after uniform refinements.
Definition: MooseMesh.h:1490

◆ setupFiniteVolumeMeshData()

void MooseMesh::setupFiniteVolumeMeshData ( ) const

Sets up the additional data needed for finite volume computations.

This involves building FaceInfo and ElemInfo objects, caching variable associations and elemental DoF indices for FV variables.

Definition at line 4152 of file MooseMesh.C.

Referenced by DisplacedProblem::init(), FEProblemBase::init(), FEProblemBase::meshChanged(), and DisplacedProblem::updateMesh().

4153 {
4158 }
void cacheFVElementalDoFs() const
Cache the DoF indices for FV variables on each element.
Definition: MooseMesh.C:4099
void cacheFaceInfoVariableOwnership() const
Cache if variables live on the elements connected by the FaceInfo objects.
Definition: MooseMesh.C:4021
void buildFiniteVolumeInfo() const
Builds the face and elem info vectors that store meta-data needed for looping over and doing calculat...
Definition: MooseMesh.C:3819
void computeFiniteVolumeCoords() const
Compute the face coordinate value for all FaceInfo and ElemInfo objects.
Definition: MooseMesh.C:3957

◆ sideWithBoundaryID()

unsigned int MooseMesh::sideWithBoundaryID ( const Elem *const  elem,
const BoundaryID  boundary_id 
) const

Calls BoundaryInfo::side_with_boundary_id().

Definition at line 3101 of file MooseMesh.C.

3102 {
3103  return getMesh().get_boundary_info().side_with_boundary_id(elem, boundary_id);
3104 }
unsigned int side_with_boundary_id(const Elem *const elem, const boundary_id_type boundary_id) const
const BoundaryInfo & get_boundary_info() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179

◆ skipDeletionRepartitionAfterRefine()

bool MooseMesh::skipDeletionRepartitionAfterRefine ( ) const
inline

Return a flag indicating whether or not we should skip remote deletion and repartition after uniform refinements.

If the flag is true, uniform refinements will run more efficiently, but at the same time, there might be extra ghosting elements. The number of layers of additional ghosting elements depends on the number of uniform refinement levels. This flag should be used only when you have a "fine enough" coarse mesh and want to refine the mesh by a few levels. Otherwise, it might introduce an unbalanced workload and too large ghosting domain.

Definition at line 2181 of file MooseMesh.h.

2182 {
2184 }
bool _skip_deletion_repartition_after_refine
Whether or not skip remote deletion and repartition after uniform refinements.
Definition: MooseMesh.h:1490

◆ skipNoncriticalPartitioning()

bool MooseMesh::skipNoncriticalPartitioning ( ) const
virtual

Definition at line 4482 of file MooseMesh.C.

4483 {
4484  return _mesh->skip_noncritical_partitioning();
4485 }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ skipPartitioning()

virtual bool MooseMesh::skipPartitioning ( ) const
inlinevirtual

Definition at line 325 of file MooseMesh.h.

325 { return _mesh->skip_partitioning(); }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ skipRefineWhenUseSplit()

bool MooseMesh::skipRefineWhenUseSplit ( ) const
inline

Whether or not skip uniform refinements when using a pre-split mesh.

Definition at line 581 of file MooseMesh.h.

581 { return _skip_refine_when_use_split; }
bool _skip_refine_when_use_split
Whether or not to skip uniform refinements when using a pre-split mesh.
Definition: MooseMesh.h:1487

◆ spatialDimension()

virtual unsigned int MooseMesh::spatialDimension ( ) const
inlinevirtual

Returns MeshBase::spatial_dimension.

Reimplemented in MFEMMesh.

Definition at line 186 of file MooseMesh.h.

186 { return _mesh->spatial_dimension(); }
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
Definition: MooseMesh.h:1455

◆ timedSectionName()

std::string PerfGraphInterface::timedSectionName ( const std::string &  section_name) const
protectedinherited
Returns
The name of the timed section with the name section_name.

Optionally adds a prefix if one is defined.

Definition at line 47 of file PerfGraphInterface.C.

Referenced by PerfGraphInterface::registerTimedSection().

48 {
49  return _prefix.empty() ? "" : (_prefix + "::") + section_name;
50 }
const std::string _prefix
A prefix to use for all sections.

◆ type()

const std::string& MooseBase::type ( ) const
inlineinherited

Get the type of this class.

Returns
the name of the type of this class

Definition at line 93 of file MooseBase.h.

Referenced by CreateProblemDefaultAction::act(), SetupDebugAction::act(), MaterialDerivativeTestAction::act(), MaterialOutputAction::act(), FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addConvergence(), FEProblemBase::addDistribution(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFunction(), FEProblemBase::addFunction(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), MeshGenerator::addMeshSubgenerator(), FEProblemBase::addObject(), MFEMProblem::addPostprocessor(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), WebServerControl::addServerActionsInternal(), FEProblemBase::addTimeIntegrator(), MooseServer::addValuesToList(), DisplacedProblem::addVectorTag(), SubProblem::addVectorTag(), FEProblemBase::advanceMultiApps(), MooseApp::appendMeshGenerator(), AuxKernelBase::AuxKernelBase(), FEProblemBase::backupMultiApps(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BoundaryPreservedMarker::BoundaryPreservedMarker(), DistributedRectilinearMeshGenerator::buildCube(), buildHRefinementAndCoarseningMaps(), buildLowerDMesh(), buildPRefinementAndCoarseningMaps(), PhysicsBase::checkComponentType(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), ADDGKernel::computeElemNeighJacobian(), DGKernel::computeElemNeighJacobian(), ElemElemConstraint::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighJacobian(), ADDGKernel::computeElemNeighResidual(), DGKernel::computeElemNeighResidual(), ElemElemConstraint::computeElemNeighResidual(), ArrayDGKernel::computeElemNeighResidual(), LowerDIntegratedBC::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDJacobian(), DGLowerDKernel::computeLowerDJacobian(), ArrayDGLowerDKernel::computeLowerDJacobian(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayHFEMDirichletBC::computeLowerDQpJacobian(), ArrayHFEMDiffusion::computeLowerDQpJacobian(), HFEMDirichletBC::computeLowerDQpJacobian(), HFEMDiffusion::computeLowerDQpJacobian(), ArrayHFEMDirichletBC::computeLowerDQpOffDiagJacobian(), HFEMDirichletBC::computeLowerDQpOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDQpOffDiagJacobian(), ArrayDGLowerDKernel::computeLowerDQpOffDiagJacobian(), FEProblemBase::computeMultiAppsDT(), ADDGKernel::computeOffDiagElemNeighJacobian(), DGKernel::computeOffDiagElemNeighJacobian(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), DGConvection::computeQpJacobian(), ScalarKernel::computeQpJacobian(), InterfaceDiffusion::computeQpJacobian(), InterfaceReaction::computeQpJacobian(), ArrayDGDiffusion::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), DGDiffusion::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), HFEMTestJump::computeQpOffDiagJacobian(), HFEMTrialJump::computeQpOffDiagJacobian(), ArrayDGKernel::computeQpOffDiagJacobian(), ArrayHFEMDiffusion::computeQpResidual(), DGConvection::computeQpResidual(), HFEMDiffusion::computeQpResidual(), ScalarKernel::computeQpResidual(), InterfaceDiffusion::computeQpResidual(), ADMatInterfaceReaction::computeQpResidual(), InterfaceReaction::computeQpResidual(), ADDGAdvection::computeQpResidual(), ArrayDGDiffusion::computeQpResidual(), CoupledTiedValueConstraint::computeQpResidual(), TiedValueConstraint::computeQpResidual(), DGDiffusion::computeQpResidual(), LinearNodalConstraint::computeQpResidual(), ADDGDiffusion::computeQpResidual(), HFEMTrialJump::computeQpResidual(), EqualValueBoundaryConstraint::computeQpResidual(), HFEMTestJump::computeQpResidual(), FEProblemBase::computeSystems(), FEProblemBase::computeUserObjectByName(), FEProblemBase::computeUserObjects(), FEProblemBase::computeUserObjectsInternal(), DisplacedProblem::createQRules(), FEProblemBase::createQRules(), MooseApp::createRecoverablePerfGraph(), DumpObjectsProblem::deduceNecessaryParameters(), DumpObjectsProblem::dumpObjectHelper(), FEProblemBase::duplicateVariableCheck(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), FEProblemBase::execTransfers(), SteadyBase::execute(), WebServerControl::execute(), ActionWarehouse::executeActionsWithAction(), FEProblemBase::finishMultiAppStep(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), MooseServer::gatherDocumentReferencesLocations(), Boundary2DDelaunayGenerator::General2DDelaunay(), LowerDBlockFromSidesetGenerator::generate(), SubdomainPerElementGenerator::generate(), Boundary2DDelaunayGenerator::generate(), PatternedMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), MultiAppTransfer::getAppInfo(), TransfiniteMeshGenerator::getEdge(), ElementGenerator::getElemType(), MooseServer::getInputLookupDefinitionNodes(), FEProblemBase::getMaterial(), FEProblemBase::getMaterialData(), FEProblemBase::getMaterialPropertyStorageConsumers(), MaterialOutputAction::getParams(), ReporterData::getReporterInfo(), FEProblemBase::getTransfers(), DisplacedProblem::getVectorTags(), SubProblem::getVectorTags(), CommonOutputAction::hasConsole(), FEProblemBase::hasMultiApps(), AdvancedOutput::hasOutput(), FEProblemBase::incrementMultiAppTStep(), AdvancedOutput::initAvailableLists(), FunctorPositions::initialize(), FunctorTimes::initialize(), MultiAppConservativeTransfer::initialSetup(), LinearFVAdvection::initialSetup(), LinearFVDiffusion::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), ArrayDGDiffusion::initQpResidual(), AdvancedOutput::initShowHideLists(), RelationshipManager::isType(), FEProblemBase::logAdd(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MFEMProblem::mesh(), MooseObject::MooseObject(), MultiAppMFEMCopyTransfer::MultiAppMFEMCopyTransfer(), DisplacedProblem::numVectorTags(), SubProblem::numVectorTags(), Console::output(), AdvancedOutput::output(), ConsoleUtils::outputExecutionInformation(), SampledOutput::outputStep(), Output::outputStep(), FEProblemBase::outputStep(), MooseServer::parseDocumentForDiagnostics(), prepare(), ProjectedStatefulMaterialStorageAction::processProperty(), MooseApp::recursivelyCreateExecutors(), SolutionInvalidInterface::registerInvalidSolutionInternal(), FEProblemBase::restoreMultiApps(), MeshRepairGenerator::separateSubdomainsByElementType(), FEProblemBase::setCoupling(), MooseApp::setupOptions(), ExplicitTVDRK2::solve(), ExplicitRK2::solve(), Reporter::store(), MooseBase::typeAndName(), ScalarKernelBase::uOld(), AuxScalarKernel::uOld(), DisplacedProblem::updateGeomSearch(), FEProblemBase::updateGeomSearch(), UserObjectInterface::userObjectType(), and AdvancedOutput::wantOutput().

94  {
95  mooseAssert(_type.size(), "Empty type");
96  return _type;
97  }
const std::string & _type
The type of this class.
Definition: MooseBase.h:360

◆ typeAndName()

std::string MooseBase::typeAndName ( ) const
inherited

Get the class's combined type and name; useful in error handling.

Returns
The type and name of this class in the form '<type()> "<name()>"'.

Definition at line 57 of file MooseBase.C.

Referenced by FEProblemBase::addPostprocessor(), MaterialPropertyStorage::addProperty(), FEProblemBase::addReporter(), FEProblemBase::addVectorPostprocessor(), MeshGeneratorSystem::dataDrivenError(), ReporterContext< std::vector< T > >::finalize(), ReporterData::getReporterInfo(), and WebServerControl::outputMessage().

58 {
59  return type() + std::string(" \"") + name() + std::string("\"");
60 }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:93

◆ uniformRefineLevel()

unsigned int MooseMesh::uniformRefineLevel ( ) const

Returns the level of uniform refinement requested (zero if AMR is disabled).

Definition at line 3296 of file MooseMesh.C.

Referenced by FEProblemBase::initialSetup(), and Adaptivity::uniformRefineWithProjection().

3297 {
3298  return _uniform_refine_level;
3299 }
unsigned int _uniform_refine_level
The level of uniform refinement requested (set to zero if AMR is disabled)
Definition: MooseMesh.h:1484

◆ uniqueName()

MooseObjectName MooseBase::uniqueName ( ) const
inherited
Returns
The unique name for accessing input parameters of this object in the InputParameterWarehouse

Definition at line 69 of file MooseBase.C.

Referenced by MooseBase::connectControllableParams(), and Action::uniqueActionName().

70 {
71  if (!_pars.have_parameter<std::string>(unique_name_param))
72  mooseError("uniqueName(): Object does not have a unique name");
73  return MooseObjectName(_pars.get<std::string>(unique_name_param));
74 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:366
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
static const std::string unique_name_param
The name of the parameter that contains the unique object name.
Definition: MooseBase.h:57
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition: MooseBase.h:271
A class for storing the names of MooseObject by tag and object name.

◆ uniqueParameterName()

MooseObjectParameterName MooseBase::uniqueParameterName ( const std::string &  parameter_name) const
inherited
Returns
The unique parameter name of a valid parameter of this object for accessing parameter controls

Definition at line 63 of file MooseBase.C.

64 {
65  return MooseObjectParameterName(getBase(), name(), parameter_name);
66 }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
A class for storing an input parameter name.
const std::string & getBase() const
Definition: MooseBase.h:147

◆ update()

void MooseMesh::update ( )

Calls buildNodeListFromSideList(), buildNodeList(), and buildBndElemList().

Definition at line 641 of file MooseMesh.C.

Referenced by meshChanged(), prepare(), and EqualValueBoundaryConstraint::updateConstrainedNodes().

642 {
643  TIME_SECTION("update", 3, "Updating Mesh", true);
644 
645  // Rebuild the boundary conditions
647 
648  // Update the node to elem map
649  _node_to_elem_map.clear();
650  _node_to_elem_map_built = false;
653 
654  buildNodeList();
656  cacheInfo();
657  buildElemIDInfo();
658 
659  // this will make moose mesh aware of p-refinement added by mesh generators including
660  // a file mesh generator loading a restart checkpoint file
661  _max_p_level = 0;
662  _max_h_level = 0;
663  for (const auto & elem : getMesh().active_local_element_ptr_range())
664  {
665  if (elem->p_level() > _max_p_level)
667  if (elem->level() > _max_h_level)
668  _max_h_level = elem->level();
669  }
670  comm().max(_max_p_level);
671  comm().max(_max_h_level);
672 
673  // the flag might have been set by calling doingPRefinement(true)
675 
676 #ifdef MOOSE_KOKKOS_ENABLED
678  _kokkos_mesh->update();
679 #endif
680 
682 }
bool _node_to_elem_map_built
Definition: MooseMesh.h:1533
void buildElemIDInfo()
Build extra data for faster access to the information of extra element integers.
Definition: MooseMesh.C:1109
bool _finite_volume_info_dirty
Definition: MooseMesh.h:1642
std::map< dof_id_type, std::vector< dof_id_type > > _node_to_elem_map
A map of all of the current nodes to the elements that they are connected to.
Definition: MooseMesh.h:1532
bool _doing_p_refinement
Whether we have p-refinement (as opposed to h-refinement)
Definition: MooseMesh.h:1920
const Parallel::Communicator & comm() const
unsigned int p_level() const
bool _node_to_active_semilocal_elem_map_built
Definition: MooseMesh.h:1537
void cacheInfo()
Definition: MooseMesh.C:1457
void buildNodeListFromSideList()
Calls BoundaryInfo::build_node_list_from_side_list().
Definition: MooseMesh.C:3035
FEProblemBase & feProblem() const
Definition: MooseApp.C:2043
unsigned int _max_h_level
Maximum h-refinement level of all elements.
Definition: MooseMesh.h:1924
bool hasKokkosObjects() const
Get whether there is any Kokkos object added by actions.
Definition: MooseApp.h:1119
std::unique_ptr< Moose::Kokkos::Mesh > _kokkos_mesh
Pointer to Kokkos mesh object.
Definition: MooseMesh.h:1459
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:357
Executioner * getExecutioner() const
Retrieve the Executioner for this App.
Definition: MooseApp.C:2206
unsigned int level() const
void max(const T &r, T &o, Request &req) const
void buildBndElemList()
Definition: MooseMesh.C:1205
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
bool hasKokkosObjects() const
void buildNodeList()
Calls BoundaryInfo::build_node_list()/build_side_list() and makes separate copies of Nodes/Elems in t...
Definition: MooseMesh.C:1052
std::map< dof_id_type, std::vector< dof_id_type > > _node_to_active_semilocal_elem_map
A map of all of the current nodes to the active elements that they are connected to.
Definition: MooseMesh.h:1536
unsigned int _max_p_level
Maximum p-refinement level of all elements.
Definition: MooseMesh.h:1922

◆ updateActiveSemiLocalNodeRange()

void MooseMesh::updateActiveSemiLocalNodeRange ( std::set< dof_id_type > &  ghosted_elems)

Clears the "semi-local" node list and rebuilds it.

Semi-local nodes consist of all nodes that belong to local and ghost elements.

Definition at line 978 of file MooseMesh.C.

Referenced by FEProblemBase::initialSetup(), FEProblemBase::meshChanged(), and FEProblemBase::possiblyRebuildGeomSearchPatches().

979 {
980  TIME_SECTION("updateActiveSemiLocalNodeRange", 5, "Updating ActiveSemiLocalNode Range");
981 
982  _semilocal_node_list.clear();
983 
984  // First add the nodes connected to local elems
985  ConstElemRange * active_local_elems = getActiveLocalElementRange();
986  for (const auto & elem : *active_local_elems)
987  {
988  for (unsigned int n = 0; n < elem->n_nodes(); ++n)
989  {
990  // Since elem is const here but we require a non-const Node * to
991  // store in the _semilocal_node_list (otherwise things like
992  // UpdateDisplacedMeshThread don't work), we are using a
993  // const_cast. A more long-term fix would be to have
994  // getActiveLocalElementRange return a non-const ElemRange.
995  Node * node = const_cast<Node *>(elem->node_ptr(n));
996 
997  _semilocal_node_list.insert(node);
998  }
999  }
1000 
1001  // Now add the nodes connected to ghosted_elems
1002  for (const auto & ghost_elem_id : ghosted_elems)
1003  {
1004  Elem * elem = getMesh().elem_ptr(ghost_elem_id);
1005  for (unsigned int n = 0; n < elem->n_nodes(); n++)
1006  {
1007  Node * node = elem->node_ptr(n);
1008 
1009  _semilocal_node_list.insert(node);
1010  }
1011  }
1012 
1013  // Now create the actual range
1014  _active_semilocal_node_range = std::make_unique<SemiLocalNodeRange>(_semilocal_node_list.begin(),
1015  _semilocal_node_list.end());
1016 }
std::set< Node * > _semilocal_node_list
Used for generating the semilocal node range.
Definition: MooseMesh.h:1515
libMesh::ConstElemRange * getActiveLocalElementRange()
Return pointers to range objects for various types of ranges (local nodes, boundary elems...
Definition: MooseMesh.C:1288
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3528
virtual unsigned int n_nodes() const=0
virtual const Elem * elem_ptr(const dof_id_type i) const=0
const Node * node_ptr(const unsigned int i) const
virtual const Node & node(const dof_id_type i) const
Various accessors (pointers/references) for Node "i".
Definition: MooseMesh.C:847
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
Definition: MooseMesh.C:3179
std::unique_ptr< SemiLocalNodeRange > _active_semilocal_node_range
Definition: MooseMesh.h:1523

◆ updateCoordTransform()

void MooseMesh::updateCoordTransform ( )
private

Update the coordinate transformation object based on our coordinate system data.

The coordinate transformation will be created if it hasn't been already

Definition at line 4365 of file MooseMesh.C.

Referenced by MooseMesh(), setAxisymmetricCoordAxis(), setCoordSystem(), and setGeneralAxisymmetricCoordAxes().

4366 {
4367  if (!_coord_transform)
4368  _coord_transform = std::make_unique<MooseAppCoordTransform>(*this);
4369  else
4370  _coord_transform->setCoordinateSystem(*this);
4371 }
std::unique_ptr< MooseAppCoordTransform > _coord_transform
A coordinate transformation object that describes how to transform this problem&#39;s coordinate system i...
Definition: MooseMesh.h:1911

◆ usingGeneralAxisymmetricCoordAxes()

bool MooseMesh::usingGeneralAxisymmetricCoordAxes ( ) const

Returns true if general axisymmetric coordinate axes are being used.

Definition at line 4359 of file MooseMesh.C.

Referenced by getAxisymmetricRadialCoord(), and getUniqueCoordSystem().

4360 {
4361  return _subdomain_id_to_rz_coord_axis.size() > 0;
4362 }
std::unordered_map< SubdomainID, std::pair< Point, RealVectorValue > > _subdomain_id_to_rz_coord_axis
Map of subdomain ID to general axisymmetric axis.
Definition: MooseMesh.h:1907

◆ validParams()

InputParameters MooseMesh::validParams ( )
static

Typical "Moose-style" constructor and copy constructor.

Definition at line 82 of file MooseMesh.C.

Referenced by FileMesh::validParams(), TiledMesh::validParams(), SpiralAnnularMesh::validParams(), GeneratedMesh::validParams(), RinglebMesh::validParams(), AnnularMesh::validParams(), ConcentricCircleMesh::validParams(), MeshGeneratorMesh::validParams(), StitchedMesh::validParams(), and PatternedMesh::validParams().

83 {
85 
86  MooseEnum parallel_type("DEFAULT REPLICATED DISTRIBUTED", "DEFAULT");
87  params.addParam<MooseEnum>("parallel_type",
88  parallel_type,
89  "DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is "
90  "specified on the command line "
91  "REPLICATED: Always use libMesh::ReplicatedMesh "
92  "DISTRIBUTED: Always use libMesh::DistributedMesh");
93 
94  params.addParam<bool>(
95  "allow_renumbering",
96  true,
97  "If allow_renumbering=false, node and element numbers are kept fixed until deletion");
98 
99  // TODO: this parameter does not belong here, it's only for FileMesh
100  params.addParam<bool>("nemesis",
101  false,
102  "If nemesis=true and file=foo.e, actually reads "
103  "foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, "
104  "where N = # CPUs, with NemesisIO.");
105 
106  params.addParam<MooseEnum>(
107  "partitioner",
108  partitioning(),
109  "Specifies a mesh partitioner to use when splitting the mesh for a parallel computation.");
110  MooseEnum direction("x y z radial");
111  params.addParam<MooseEnum>("centroid_partitioner_direction",
112  direction,
113  "Specifies the sort direction if using the centroid partitioner. "
114  "Available options: x, y, z, radial");
115 
116  MooseEnum patch_update_strategy("never always auto iteration", "never");
117  params.addParam<MooseEnum>(
118  "patch_update_strategy",
119  patch_update_strategy,
120  "How often to update the geometric search 'patch'. The default is to "
121  "never update it (which is the most efficient but could be a problem "
122  "with lots of relative motion). 'always' will update the patch for all "
123  "secondary nodes at the beginning of every timestep which might be time "
124  "consuming. 'auto' will attempt to determine at the start of which "
125  "timesteps the patch for all secondary nodes needs to be updated automatically."
126  "'iteration' updates the patch at every nonlinear iteration for a "
127  "subset of secondary nodes for which penetration is not detected. If there "
128  "can be substantial relative motion between the primary and secondary surfaces "
129  "during the nonlinear iterations within a timestep, it is advisable to use "
130  "'iteration' option to ensure accurate contact detection.");
131 
132  // Note: This parameter is named to match 'construct_side_list_from_node_list' in SetupMeshAction
133  params.addParam<bool>(
134  "construct_node_list_from_side_list",
135  true,
136  "Whether or not to generate nodesets from the sidesets (currently often required).");
137  params.addParam<bool>(
138  "displace_node_list_by_side_list",
139  false,
140  "Whether to renumber existing nodesets with ids matching sidesets that "
141  "lack names matching sidesets, when constructing nodesets from sidesets via the default "
142  "'construct_node_list_from_side_list' option, rather than to merge them with the sideset.");
143  params.addParam<unsigned int>(
144  "patch_size", 40, "The number of nodes to consider in the NearestNode neighborhood.");
145  params.addParam<unsigned int>("ghosting_patch_size",
146  "The number of nearest neighbors considered "
147  "for ghosting purposes when 'iteration' "
148  "patch update strategy is used. Default is "
149  "5 * patch_size.");
150  params.addParam<unsigned int>("max_leaf_size",
151  10,
152  "The maximum number of points in each leaf of the KDTree used in "
153  "the nearest neighbor search. As the leaf size becomes larger,"
154  "KDTree construction becomes faster but the nearest neighbor search"
155  "becomes slower.");
156 
157  params.addParam<bool>("build_all_side_lowerd_mesh",
158  false,
159  "True to build the lower-dimensional mesh for all sides.");
160 
161  params.addParam<bool>("skip_refine_when_use_split",
162  true,
163  "True to skip uniform refinements when using a pre-split mesh.");
164 
165  params.addParam<std::vector<SubdomainID>>(
166  "add_subdomain_ids",
167  "The listed subdomain ids will be assumed valid for the mesh. This permits setting up "
168  "subdomain restrictions for subdomains initially containing no elements, which can occur, "
169  "for example, in additive manufacturing simulations which dynamically add and remove "
170  "elements. Names for this subdomains may be provided using add_subdomain_names. In this case "
171  "this list and add_subdomain_names must contain the same number of items.");
172  params.addParam<std::vector<SubdomainName>>(
173  "add_subdomain_names",
174  "The listed subdomain names will be assumed valid for the mesh. This permits setting up "
175  "subdomain restrictions for subdomains initially containing no elements, which can occur, "
176  "for example, in additive manufacturing simulations which dynamically add and remove "
177  "elements. IDs for this subdomains may be provided using add_subdomain_ids. Otherwise IDs "
178  "are automatically assigned. In case add_subdomain_ids is set too, both lists must contain "
179  "the same number of items.");
180 
181  params.addParam<std::vector<BoundaryID>>(
182  "add_sideset_ids",
183  "The listed sideset ids will be assumed valid for the mesh. This permits setting up boundary "
184  "restrictions for sidesets initially containing no sides. Names for this sidesets may be "
185  "provided using add_sideset_names. In this case this list and add_sideset_names must contain "
186  "the same number of items.");
187  params.addParam<std::vector<BoundaryName>>(
188  "add_sideset_names",
189  "The listed sideset names will be assumed valid for the mesh. This permits setting up "
190  "boundary restrictions for sidesets initially containing no sides. Ids for this sidesets may "
191  "be provided using add_sideset_ids. In this case this list and add_sideset_ids must contain "
192  "the same number of items.");
193 
194  params.addParam<std::vector<BoundaryID>>(
195  "add_nodeset_ids",
196  "The listed nodeset ids will be assumed valid for the mesh. This permits setting up boundary "
197  "restrictions for node initially containing no sides. Names for this nodesets may be "
198  "provided using add_nodeset_names. In this case this list and add_nodeset_names must contain "
199  "the same number of items.");
200  params.addParam<std::vector<BoundaryName>>(
201  "add_nodeset_names",
202  "The listed nodeset names will be assumed valid for the mesh. This permits setting up "
203  "boundary restrictions for nodesets initially containing no sides. Ids for this nodesets may "
204  "be provided using add_nodesets_ids. In this case this list and add_nodesets_ids must "
205  "contain the same number of items.");
206 
208 
209  // This indicates that the derived mesh type accepts a MeshGenerator, and should be set to true in
210  // derived types that do so.
211  params.addPrivateParam<bool>("_mesh_generator_mesh", false);
212 
213  // Whether or not the mesh is pre split
214  params.addPrivateParam<bool>("_is_split", false);
215 
216  params.registerBase("MooseMesh");
217 
218  // groups
219  params.addParamNamesToGroup("patch_update_strategy patch_size max_leaf_size", "Geometric search");
220  params.addParamNamesToGroup("nemesis", "Advanced");
221  params.addParamNamesToGroup("add_subdomain_ids add_subdomain_names add_sideset_ids "
222  "add_sideset_names add_nodeset_ids add_nodeset_names",
223  "Pre-declaration of future mesh sub-entities");
224  params.addParamNamesToGroup("construct_node_list_from_side_list build_all_side_lowerd_mesh "
225  "displace_node_list_by_side_list",
226  "Automatic definition of mesh element sides entities");
227  params.addParamNamesToGroup("partitioner centroid_partitioner_direction", "Partitioning");
228 
229  return params;
230 }
static InputParameters validParams()
Describes the parameters this object can take to setup transformations.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
static MooseEnum partitioning()
returns MooseMesh partitioning options so other classes can use it
Definition: MooseMesh.C:3978
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object...
static InputParameters validParams()
Definition: MooseObject.C:25

Member Data Documentation

◆ _action_factory

ActionFactory& ParallelParamObject::_action_factory
protectedinherited

◆ _active_local_elem_range

std::unique_ptr<libMesh::ConstElemRange> MooseMesh::_active_local_elem_range
protected

A range for use with threading.

We do this so that it doesn't have to get rebuilt all the time (which takes time).

Definition at line 1521 of file MooseMesh.h.

Referenced by getActiveLocalElementRange(), and meshChanged().

◆ _active_node_range

std::unique_ptr<libMesh::NodeRange> MooseMesh::_active_node_range
protected

Definition at line 1524 of file MooseMesh.h.

Referenced by getActiveNodeRange(), and meshChanged().

◆ _active_semilocal_node_range

std::unique_ptr<SemiLocalNodeRange> MooseMesh::_active_semilocal_node_range
protected

◆ _all_face_info

std::vector<FaceInfo> MooseMesh::_all_face_info
mutableprivate

FaceInfo object storing information for face based loops.

This container holds all the FaceInfo objects accessible from this process

Definition at line 1631 of file MooseMesh.h.

Referenced by allFaceInfo(), buildFiniteVolumeInfo(), cacheFaceInfoVariableOwnership(), and computeFiniteVolumeCoords().

◆ _allow_recovery

bool MooseMesh::_allow_recovery
private

Whether or not this Mesh is allowed to read a recovery file.

Definition at line 1846 of file MooseMesh.h.

Referenced by allowRecovery(), and init().

◆ _allow_remote_element_removal

bool MooseMesh::_allow_remote_element_removal
private

Whether to allow removal of remote elements.

Definition at line 1859 of file MooseMesh.h.

Referenced by allowRemoteElementRemoval(), buildTypedMesh(), deleteRemoteElements(), and setMeshBase().

◆ _app

MooseApp& MooseBase::_app
protectedinherited

The MOOSE application this is associated with.

Definition at line 357 of file MooseBase.h.

◆ _block_id_mapping

std::vector<std::unordered_map<SubdomainID, std::set<dof_id_type> > > MooseMesh::_block_id_mapping
private

Unique element integer IDs for each subdomain and each extra element integers.

Definition at line 1871 of file MooseMesh.h.

Referenced by buildElemIDInfo(), getAllElemIDs(), and getElemIDsOnBlocks().

◆ _block_node_list

std::map<dof_id_type, std::set<SubdomainID> > MooseMesh::_block_node_list
protected

list of nodes that belongs to a specified block (domain)

Definition at line 1580 of file MooseMesh.h.

Referenced by cacheInfo(), and getNodeBlockIds().

◆ _bnd_elem_ids

std::unordered_map<boundary_id_type, std::unordered_set<dof_id_type> > MooseMesh::_bnd_elem_ids
protected

Map of set of elem IDs connected to each boundary.

Definition at line 1572 of file MooseMesh.h.

Referenced by buildBndElemList(), freeBndElems(), getBoundariesToActiveSemiLocalElemIds(), getBoundaryActiveSemiLocalElemIds(), and isBoundaryElem().

◆ _bnd_elem_range

std::unique_ptr<libMesh::StoredRange<MooseMesh::const_bnd_elem_iterator, const BndElement *> > MooseMesh::_bnd_elem_range
protected

◆ _bnd_elems

std::vector<BndElement *> MooseMesh::_bnd_elems
protected

array of boundary elems

Definition at line 1567 of file MooseMesh.h.

Referenced by bndElemsBegin(), bndElemsEnd(), buildBndElemList(), freeBndElems(), and getBoundaryActiveNeighborElemIds().

◆ _bnd_node_ids

std::map<boundary_id_type, std::set<dof_id_type> > MooseMesh::_bnd_node_ids
protected

Map of sets of node IDs in each boundary.

Definition at line 1564 of file MooseMesh.h.

Referenced by addQuadratureNode(), buildNodeList(), freeBndNodes(), and isBoundaryNode().

◆ _bnd_node_range

std::unique_ptr<libMesh::StoredRange<MooseMesh::const_bnd_node_iterator, const BndNode *> > MooseMesh::_bnd_node_range
protected

Definition at line 1527 of file MooseMesh.h.

Referenced by addQuadratureNode(), freeBndNodes(), getBoundaryNodeRange(), and meshChanged().

◆ _bnd_nodes

std::vector<BndNode *> MooseMesh::_bnd_nodes
protected

array of boundary nodes

Definition at line 1560 of file MooseMesh.h.

Referenced by addQuadratureNode(), bndNodesBegin(), bndNodesEnd(), buildNodeList(), and freeBndNodes().

◆ _boundary_to_normal_map

std::unique_ptr<std::map<BoundaryID, RealVectorValue> > MooseMesh::_boundary_to_normal_map
protected

The boundary to normal map - valid only when AddAllSideSetsByNormals is active.

Definition at line 1557 of file MooseMesh.h.

Referenced by getNormalByBoundaryID(), and setBoundaryToNormalMap().

◆ _bounds

std::vector<std::vector<Real> > MooseMesh::_bounds
protected

The bounds in each dimension of the mesh for regular orthogonal meshes.

Definition at line 1607 of file MooseMesh.h.

Referenced by detectOrthogonalDimRanges(), getMaxInDimension(), getMinInDimension(), and MooseMesh().

◆ _built_from_other_mesh

bool MooseMesh::_built_from_other_mesh = false
protected

Whether or not this mesh was built from another mesh.

Definition at line 1441 of file MooseMesh.h.

Referenced by prepare().

◆ _coarsened_element_children

std::map<const Elem *, std::vector<const Elem *> > MooseMesh::_coarsened_element_children
protected

Map of Parent elements to child elements for elements that were just coarsened.

NOTE: the child element pointers ARE PROBABLY INVALID. Only use them for indexing!

Definition at line 1512 of file MooseMesh.h.

Referenced by cacheChangedLists(), and coarsenedElementChildren().

◆ _coarsened_elements

std::unique_ptr<ConstElemPointerRange> MooseMesh::_coarsened_elements
protected

The elements that were just coarsened.

Definition at line 1505 of file MooseMesh.h.

Referenced by cacheChangedLists(), and coarsenedElementRange().

◆ _console

const ConsoleStream ConsoleStreamInterface::_console
inherited

An instance of helper class to write streams to the Console objects.

Definition at line 31 of file ConsoleStreamInterface.h.

Referenced by IterationAdaptiveDT::acceptStep(), MeshOnlyAction::act(), SetupDebugAction::act(), MaterialOutputAction::act(), Adaptivity::adaptMesh(), FEProblemBase::adaptMesh(), PerfGraph::addToExecutionList(), SimplePredictor::apply(), SystemBase::applyScalingFactors(), MultiApp::backup(), FEProblemBase::backupMultiApps(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), DefaultSteadyStateConvergence::checkConvergence(), MeshDiagnosticsGenerator::checkElementOverlap(), MeshDiagnosticsGenerator::checkElementTypes(), MeshDiagnosticsGenerator::checkElementVolumes(), FEProblemBase::checkExceptionAndStopSolve(), SolverSystem::checkInvalidSolution(), MeshDiagnosticsGenerator::checkLocalJacobians(), MeshDiagnosticsGenerator::checkNonConformalMesh(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkNonPlanarSides(), FEProblemBase::checkProblemIntegrity(), ReferenceResidualConvergence::checkRelativeConvergence(), MeshDiagnosticsGenerator::checkSidesetsOrientation(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), IterationAdaptiveDT::computeAdaptiveDT(), TransientBase::computeConstrainedDT(), DefaultMultiAppFixedPointConvergence::computeCustomConvergencePostprocessor(), NonlinearSystemBase::computeDamping(), FixedPointIterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeFailedDT(), IterationAdaptiveDT::computeInitialDT(), IterationAdaptiveDT::computeInterpolationDT(), LinearSystem::computeLinearSystemTags(), FEProblemBase::computeLinearSystemTags(), NonlinearSystemBase::computeScaling(), Problem::console(), IterationAdaptiveDT::constrainStep(), TimeStepper::constrainStep(), MultiApp::createApp(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), MFEMSteady::execute(), MessageFromInput::execute(), SteadyBase::execute(), Eigenvalue::execute(), ActionWarehouse::executeActionsWithAction(), ActionWarehouse::executeAllActions(), MeshGeneratorSystem::executeMeshGenerators(), ElementQualityChecker::finalize(), SidesetAroundSubdomainUpdater::finalize(), FEProblemBase::finishMultiAppStep(), MeshRepairGenerator::fixOverlappingNodes(), CoarsenBlockGenerator::generate(), MeshGenerator::generateInternal(), VariableCondensationPreconditioner::getDofToCondense(), NonlinearEigen::init(), InversePowerMethod::init(), FEProblemBase::initialAdaptMesh(), DefaultMultiAppFixedPointConvergence::initialize(), SubProblem::initialSetup(), EigenExecutionerBase::inversePowerIteration(), FEProblemBase::joinAndFinalize(), TransientBase::keepGoing(), IterationAdaptiveDT::limitDTByFunction(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::logAdd(), EigenExecutionerBase::makeBXConsistent(), Console::meshChanged(), MooseBase::mooseDeprecated(), MooseBase::mooseInfo(), MooseBase::mooseWarning(), MooseBase::mooseWarningNonPrefixed(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), ReporterDebugOutput::output(), PerfGraphOutput::output(), SolutionInvalidityOutput::output(), MaterialPropertyDebugOutput::output(), DOFMapOutput::output(), VariableResidualNormsDebugOutput::output(), Console::output(), ControlOutput::outputActiveObjects(), ControlOutput::outputChangedControls(), ControlOutput::outputControls(), Console::outputInput(), WebServerControl::outputMessage(), Console::outputPostprocessors(), PseudoTimestep::outputPseudoTimestep(), Console::outputReporters(), DefaultMultiAppFixedPointConvergence::outputResidualNorm(), Console::outputScalarVariables(), Console::outputSystemInformation(), FEProblemBase::possiblyRebuildGeomSearchPatches(), EigenExecutionerBase::postExecute(), AB2PredictorCorrector::postSolve(), ActionWarehouse::printActionDependencySets(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), SolutionInvalidity::printDebug(), EigenExecutionerBase::printEigenvalue(), SecantSolve::printFixedPointConvergenceHistory(), SteffensenSolve::printFixedPointConvergenceHistory(), PicardSolve::printFixedPointConvergenceHistory(), FixedPointSolve::printFixedPointConvergenceReason(), PerfGraphLivePrint::printLiveMessage(), MaterialPropertyDebugOutput::printMaterialMap(), PerfGraphLivePrint::printStats(), NEML2Action::printSummary(), AutomaticMortarGeneration::projectPrimaryNodesSinglePair(), AutomaticMortarGeneration::projectSecondaryNodesSinglePair(), CoarsenBlockGenerator::recursiveCoarsen(), SolutionTimeAdaptiveDT::rejectStep(), MultiApp::restore(), FEProblemBase::restoreMultiApps(), FEProblemBase::restoreSolutions(), NonlinearSystemBase::setInitialSolution(), MooseApp::setupOptions(), Checkpoint::shouldOutput(), SubProblem::showFunctorRequestors(), SubProblem::showFunctors(), FullSolveMultiApp::showStatusMessage(), EigenProblem::solve(), FEProblemSolve::solve(), FixedPointSolve::solve(), NonlinearSystem::solve(), LinearSystem::solve(), LStableDirk2::solve(), LStableDirk3::solve(), ImplicitMidpoint::solve(), ExplicitTVDRK2::solve(), AStableDirk4::solve(), LStableDirk4::solve(), ExplicitRK2::solve(), TransientMultiApp::solveStep(), FixedPointSolve::solveStep(), PerfGraphLivePrint::start(), WebServerControl::startServer(), AB2PredictorCorrector::step(), NonlinearEigen::takeStep(), MFEMTransient::takeStep(), TransientBase::takeStep(), TerminateChainControl::terminate(), SubProblem::timestepSetup(), FEProblemBase::updateMeshXFEM(), Convergence::verboseOutput(), Console::writeTimestepInformation(), Console::writeVariableNorms(), and FEProblemBase::~FEProblemBase().

◆ _construct_node_list_from_side_list

bool MooseMesh::_construct_node_list_from_side_list
private

Whether or not to allow generation of nodesets from sidesets.

Definition at line 1849 of file MooseMesh.h.

Referenced by buildNodeListFromSideList(), getConstructNodeListFromSideList(), and MooseMesh().

◆ _coord_sys

std::map<SubdomainID, Moose::CoordinateSystemType>& MooseMesh::_coord_sys
private

Type of coordinate system per subdomain.

Definition at line 1901 of file MooseMesh.h.

Referenced by checkCoordinateSystems(), getCoordSystem(), getUniqueCoordSystem(), setCoordData(), setCoordSystem(), and setGeneralAxisymmetricCoordAxes().

◆ _coord_system_set

bool MooseMesh::_coord_system_set
private

Whether the coordinate system has been set.

Definition at line 1914 of file MooseMesh.h.

Referenced by prepare(), and setCoordSystem().

◆ _coord_transform

std::unique_ptr<MooseAppCoordTransform> MooseMesh::_coord_transform
private

A coordinate transformation object that describes how to transform this problem's coordinate system into the canonical/reference coordinate system.

Definition at line 1911 of file MooseMesh.h.

Referenced by coordTransform(), lengthUnit(), and updateCoordTransform().

◆ _custom_partitioner

std::unique_ptr<libMesh::Partitioner> MooseMesh::_custom_partitioner
protected

The custom partitioner.

Definition at line 1467 of file MooseMesh.h.

Referenced by buildTypedMesh(), and setCustomPartitioner().

◆ _custom_partitioner_requested

bool MooseMesh::_custom_partitioner_requested
protected

◆ _displace_node_list_by_side_list

bool MooseMesh::_displace_node_list_by_side_list
private

Whether or not to displace unrelated nodesets by nodesets constructed from sidesets.

Definition at line 1853 of file MooseMesh.h.

Referenced by buildNodeListFromSideList(), getDisplaceNodeListBySideList(), and MooseMesh().

◆ _distribution_overridden

bool MooseMesh::_distribution_overridden
protected

Definition at line 1451 of file MooseMesh.h.

◆ _doing_p_refinement

bool MooseMesh::_doing_p_refinement
private

Whether we have p-refinement (as opposed to h-refinement)

Definition at line 1920 of file MooseMesh.h.

Referenced by doingPRefinement(), and update().

◆ _elem_info

std::vector<const ElemInfo *> MooseMesh::_elem_info
mutableprivate

Holds only those ElemInfo objects that have processor_id equal to this process's id, e.g.

the local ElemInfo objects

Definition at line 1627 of file MooseMesh.h.

Referenced by buildFiniteVolumeInfo(), elemInfoVector(), ownedElemInfoBegin(), and ownedElemInfoEnd().

◆ _elem_side_to_face_info

std::unordered_map<std::pair<const Elem *, unsigned int>, FaceInfo *> MooseMesh::_elem_side_to_face_info
mutableprivate

Map from elem-side pair to FaceInfo.

Definition at line 1639 of file MooseMesh.h.

Referenced by buildFiniteVolumeInfo().

◆ _elem_to_elem_info

std::unordered_map<dof_id_type, ElemInfo> MooseMesh::_elem_to_elem_info
mutableprivate

Map connecting elems with their corresponding ElemInfo, we use the element ID as the key.

Definition at line 1623 of file MooseMesh.h.

Referenced by buildFiniteVolumeInfo(), cacheFVElementalDoFs(), computeFiniteVolumeCoords(), and elemInfo().

◆ _elem_to_side_to_qp_to_quadrature_nodes

std::map<dof_id_type, std::map<unsigned int, std::map<dof_id_type, Node *> > > MooseMesh::_elem_to_side_to_qp_to_quadrature_nodes
protected

Definition at line 1576 of file MooseMesh.h.

Referenced by addQuadratureNode(), clearQuadratureNodes(), and getQuadratureNode().

◆ _elem_type_to_child_side_refinement_map

std::map<libMesh::ElemType, std::map<std::pair<int, int>, std::vector<std::vector<QpMap> > > > MooseMesh::_elem_type_to_child_side_refinement_map
private

Holds mappings for "internal" child sides to parent volume. The second key is (child, child_side).

Definition at line 1789 of file MooseMesh.h.

Referenced by buildRefinementMap(), and getRefinementMap().

◆ _elem_type_to_coarsening_map

std::map<std::pair<int, libMesh::ElemType>, std::vector<std::pair<unsigned int, QpMap> > > MooseMesh::_elem_type_to_coarsening_map
private

Holds mappings for volume to volume and parent side to child side Map key:

  • first member corresponds to element side. It's -1 for volume quadrature points
  • second member correponds to the element type Map value:
  • Vector is sized based on the number of quadrature points in the parent (e.g. coarser) element.
  • For each parent quadrature point we store a pair
    • The first member of the pair identifies which child holds the closest refined-level quadrature point
    • The second member of the pair is the QpMap. The _from data member will correspond to the parent quadrature point index. The _to data member will correspond to which child element quadrature point is closest to the parent quadrature point. And _distance is the distance between the two

Definition at line 1806 of file MooseMesh.h.

Referenced by buildCoarseningMap(), and getCoarseningMap().

◆ _elem_type_to_p_coarsening_map

std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap> > MooseMesh::_elem_type_to_p_coarsening_map
private

Definition at line 1809 of file MooseMesh.h.

Referenced by buildPRefinementAndCoarseningMaps(), and getPCoarseningMap().

◆ _elem_type_to_p_coarsening_side_map

std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap> > MooseMesh::_elem_type_to_p_coarsening_side_map
private

Definition at line 1811 of file MooseMesh.h.

Referenced by buildPRefinementAndCoarseningMaps(), and getPCoarseningSideMap().

◆ _elem_type_to_p_refinement_map

std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap> > MooseMesh::_elem_type_to_p_refinement_map
private

Definition at line 1783 of file MooseMesh.h.

Referenced by buildPRefinementAndCoarseningMaps(), and getPRefinementMap().

◆ _elem_type_to_p_refinement_side_map

std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap> > MooseMesh::_elem_type_to_p_refinement_side_map
private

Definition at line 1785 of file MooseMesh.h.

Referenced by buildPRefinementAndCoarseningMaps(), and getPRefinementSideMap().

◆ _elem_type_to_refinement_map

std::map<std::pair<int, libMesh::ElemType>, std::vector<std::vector<QpMap> > > MooseMesh::_elem_type_to_refinement_map
private

Holds mappings for volume to volume and parent side to child side Map key:

  • first member corresponds to element side. It's -1 for volume quadrature points
  • second member correponds to the element type Map value:
  • Outermost index is the child element index
  • Once we have indexed by the child element index, we have a std::vector of QpMaps. This vector is sized by the number of reference points in the child element. Then for each reference point in the child element we have a QpMap whose _from index corresponds to the child element reference point, a _to index which corresponds to the reference point on the parent element that the child element reference point is closest to, and a _distance member which is the distance between the mapped child and parent reference quadrature points

Definition at line 1780 of file MooseMesh.h.

Referenced by buildRefinementMap(), and getRefinementMap().

◆ _enabled

const bool& MooseObject::_enabled
protectedinherited

Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.

Definition at line 73 of file MooseObject.h.

Referenced by MooseObject::enabled().

◆ _extra_bnd_nodes

std::vector<BndNode> MooseMesh::_extra_bnd_nodes
protected

Definition at line 1577 of file MooseMesh.h.

Referenced by addQuadratureNode(), buildNodeList(), and clearQuadratureNodes().

◆ _extreme_nodes

std::vector<Node *> MooseMesh::_extreme_nodes
private

A vector containing the nodes at the corners of a regular orthogonal mesh.

Definition at line 1661 of file MooseMesh.h.

Referenced by detectOrthogonalDimRanges().

◆ _face_info

std::vector<const FaceInfo *> MooseMesh::_face_info
mutableprivate

Holds only those FaceInfo objects that have processor_id equal to this process's id, e.g.

the local FaceInfo objects

Definition at line 1635 of file MooseMesh.h.

Referenced by buildFiniteVolumeInfo(), faceInfo(), nFace(), ownedFaceInfoBegin(), and ownedFaceInfoEnd().

◆ _factory

Factory& ParallelParamObject::_factory
protectedinherited

◆ _finite_volume_info_dirty

bool MooseMesh::_finite_volume_info_dirty = true
mutableprivate

◆ _ghost_elems_from_ghost_boundaries

std::set<Elem *> MooseMesh::_ghost_elems_from_ghost_boundaries
private

Set of elements ghosted by ghostGhostedBoundaries.

Definition at line 1862 of file MooseMesh.h.

Referenced by ghostGhostedBoundaries().

◆ _ghosted_boundaries

std::set<unsigned int> MooseMesh::_ghosted_boundaries
protected

Definition at line 1585 of file MooseMesh.h.

Referenced by addGhostedBoundary(), getGhostedBoundaries(), and ghostGhostedBoundaries().

◆ _ghosted_boundaries_inflation

std::vector<Real> MooseMesh::_ghosted_boundaries_inflation
protected

Definition at line 1586 of file MooseMesh.h.

Referenced by getGhostedBoundaryInflation(), and setGhostedBoundaryInflation().

◆ _ghosting_functors

std::vector<std::unique_ptr<libMesh::GhostingFunctor> > MooseMesh::_ghosting_functors
protected

Deprecated (DO NOT USE)

Definition at line 1435 of file MooseMesh.h.

◆ _ghosting_patch_size

unsigned int MooseMesh::_ghosting_patch_size
protected

The number of nearest neighbors to consider for ghosting purposes when iteration patch update strategy is used.

Definition at line 1592 of file MooseMesh.h.

Referenced by getGhostingPatchSize().

◆ _half_range

RealVectorValue MooseMesh::_half_range
private

A convenience vector used to hold values in each dimension representing half of the range.

Definition at line 1658 of file MooseMesh.h.

Referenced by addPeriodicVariable(), and minPeriodicVector().

◆ _has_lower_d

bool MooseMesh::_has_lower_d
private

Whether there are any lower-dimensional blocks that are manifolds of higher-dimensional block faces.

Definition at line 1843 of file MooseMesh.h.

Referenced by cacheInfo(), and hasLowerD().

◆ _higher_d_elem_side_to_lower_d_elem

std::unordered_map<std::pair<const Elem *, unsigned short int>, const Elem *> MooseMesh::_higher_d_elem_side_to_lower_d_elem
private

Holds a map from a high-order element side to its corresponding lower-d element.

Definition at line 1838 of file MooseMesh.h.

Referenced by buildLowerDMesh(), cacheInfo(), getLowerDElem(), and getLowerDElemMap().

◆ _id_identical_flag

std::vector<std::vector<bool> > MooseMesh::_id_identical_flag
private

Flags to indicate whether or not any two extra element integers are the same.

Definition at line 1877 of file MooseMesh.h.

Referenced by areElemIDsIdentical(), and buildElemIDInfo().

◆ _is_changed

bool MooseMesh::_is_changed
protected

true if mesh is changed (i.e. after adaptivity step)

Definition at line 1493 of file MooseMesh.h.

◆ _is_displaced

bool MooseMesh::_is_displaced
private

Whether this mesh is displaced.

Definition at line 1892 of file MooseMesh.h.

Referenced by isDisplaced().

◆ _is_nemesis

bool MooseMesh::_is_nemesis
protected

True if a Nemesis Mesh was read in.

Definition at line 1496 of file MooseMesh.h.

Referenced by FileMesh::buildMesh(), determineUseDistributedMesh(), prepare(), and FileMesh::read().

◆ _is_split

const bool MooseMesh::_is_split
protected

Whether or not we are using a (pre-)split mesh (automatically DistributedMesh)

Definition at line 1613 of file MooseMesh.h.

Referenced by determineUseDistributedMesh(), and isSplit().

◆ _kokkos_mesh

std::unique_ptr<Moose::Kokkos::Mesh> MooseMesh::_kokkos_mesh
protected

Pointer to Kokkos mesh object.

Definition at line 1459 of file MooseMesh.h.

Referenced by getKokkosMesh(), MooseMesh(), and update().

◆ _linear_finite_volume_dofs_cached

bool MooseMesh::_linear_finite_volume_dofs_cached = false
mutableprivate

Definition at line 1647 of file MooseMesh.h.

◆ _local_node_range

std::unique_ptr<libMesh::ConstNodeRange> MooseMesh::_local_node_range
protected

Definition at line 1525 of file MooseMesh.h.

Referenced by getLocalNodeRange(), and meshChanged().

◆ _lower_d_boundary_blocks

std::set<SubdomainID> MooseMesh::_lower_d_boundary_blocks
private

Mesh blocks for boundary lower-d elements in different types.

Definition at line 1835 of file MooseMesh.h.

Referenced by boundaryLowerDBlocks(), buildLowerDMesh(), and cacheInfo().

◆ _lower_d_elem_to_higher_d_elem_side

std::unordered_map<const Elem *, unsigned short int> MooseMesh::_lower_d_elem_to_higher_d_elem_side
private

Definition at line 1839 of file MooseMesh.h.

Referenced by buildLowerDMesh(), cacheInfo(), and getHigherDSide().

◆ _lower_d_interior_blocks

std::set<SubdomainID> MooseMesh::_lower_d_interior_blocks
private

Mesh blocks for interior lower-d elements in different types.

Definition at line 1833 of file MooseMesh.h.

Referenced by buildLowerDMesh(), cacheInfo(), and interiorLowerDBlocks().

◆ _max_h_level

unsigned int MooseMesh::_max_h_level
private

Maximum h-refinement level of all elements.

Definition at line 1924 of file MooseMesh.h.

Referenced by maxHLevel(), and update().

◆ _max_ids

std::vector<dof_id_type> MooseMesh::_max_ids
private

Maximum integer ID for each extra element integer.

Definition at line 1873 of file MooseMesh.h.

Referenced by buildElemIDInfo(), and maxElementID().

◆ _max_leaf_size

unsigned int MooseMesh::_max_leaf_size
protected

Definition at line 1595 of file MooseMesh.h.

Referenced by getMaxLeafSize().

◆ _max_nodes_per_elem

unsigned int MooseMesh::_max_nodes_per_elem
private

The maximum number of nodes per element.

Definition at line 1883 of file MooseMesh.h.

Referenced by computeMaxPerElemAndSide(), and getMaxNodesPerElem().

◆ _max_nodes_per_side

unsigned int MooseMesh::_max_nodes_per_side
private

The maximum number of nodes per side.

Definition at line 1886 of file MooseMesh.h.

Referenced by computeMaxPerElemAndSide(), and getMaxNodesPerSide().

◆ _max_p_level

unsigned int MooseMesh::_max_p_level
private

Maximum p-refinement level of all elements.

Definition at line 1922 of file MooseMesh.h.

Referenced by maxPLevel(), and update().

◆ _max_sides_per_elem

unsigned int MooseMesh::_max_sides_per_elem
private

The maximum number of sides per element.

Definition at line 1880 of file MooseMesh.h.

Referenced by computeMaxPerElemAndSide(), and getMaxSidesPerElem().

◆ _mesh

std::unique_ptr<libMesh::MeshBase> MooseMesh::_mesh
protected

◆ _mesh_boundary_ids

std::set<BoundaryID> MooseMesh::_mesh_boundary_ids
protected

A set of boundary IDs currently present in the mesh.

In serial, this is equivalent to the values returned by _mesh.get_boundary_info().get_boundary_ids(). In parallel, it will contain off-processor boundary IDs as well.

Definition at line 1551 of file MooseMesh.h.

Referenced by getBoundaryIDs(), meshBoundaryIds(), prepare(), and setMeshBoundaryIDs().

◆ _mesh_nodeset_ids

std::set<BoundaryID> MooseMesh::_mesh_nodeset_ids
protected

Definition at line 1553 of file MooseMesh.h.

Referenced by meshNodesetIds(), and prepare().

◆ _mesh_sideset_ids

std::set<BoundaryID> MooseMesh::_mesh_sideset_ids
protected

Definition at line 1552 of file MooseMesh.h.

Referenced by meshSidesetIds(), and prepare().

◆ _mesh_subdomains

std::set<SubdomainID> MooseMesh::_mesh_subdomains
protected

A set of subdomain IDs currently present in the mesh.

For parallel meshes, includes subdomains defined on other processors as well.

Definition at line 1543 of file MooseMesh.h.

Referenced by buildLowerDMesh(), cacheInfo(), checkDuplicateSubdomainNames(), meshSubdomains(), and prepare().

◆ _min_ids

std::vector<dof_id_type> MooseMesh::_min_ids
private

Minimum integer ID for each extra element integer.

Definition at line 1875 of file MooseMesh.h.

Referenced by buildElemIDInfo(), and minElementID().

◆ _moose_mesh_prepared

bool MooseMesh::_moose_mesh_prepared = false
protected

True if prepare has been called on the mesh.

Definition at line 1499 of file MooseMesh.h.

Referenced by prepare(), and prepared().

◆ _name

const std::string& MooseBase::_name
protectedinherited

The name of this class.

Definition at line 363 of file MooseBase.h.

Referenced by AddBCAction::act(), AddConstraintAction::act(), AddFVInitialConditionAction::act(), AddPostprocessorAction::act(), AddVectorPostprocessorAction::act(), AddKernelAction::act(), AddMultiAppAction::act(), PartitionerAction::act(), AddInterfaceKernelAction::act(), AddNodalKernelAction::act(), AddDiracKernelAction::act(), AddDGKernelAction::act(), AddMarkerAction::act(), AddIndicatorAction::act(), AddInitialConditionAction::act(), AddMeshGeneratorAction::act(), AddDamperAction::act(), AddFVInterfaceKernelAction::act(), AddMaterialAction::act(), AddScalarKernelAction::act(), AddTransferAction::act(), AddFunctorMaterialAction::act(), AddUserObjectAction::act(), ReadExecutorParamsAction::act(), AddPositionsAction::act(), AddReporterAction::act(), AddTimesAction::act(), AddFieldSplitAction::act(), AddFVKernelAction::act(), AddFVBCAction::act(), AddFunctionAction::act(), AddConvergenceAction::act(), AddMeshDivisionAction::act(), AddHDGKernelAction::act(), AddTimeStepperAction::act(), AddDistributionAction::act(), SetupPreconditionerAction::act(), SetupTimeIntegratorAction::act(), AddOutputAction::act(), AddLinearFVBCAction::act(), AddLinearFVKernelAction::act(), AddCorrectorAction::act(), AddMeshModifiersAction::act(), AddSamplerAction::act(), AddControlAction::act(), AddMFEMFESpaceAction::act(), AddMFEMSubMeshAction::act(), AddMFEMPreconditionerAction::act(), AddMFEMSolverAction::act(), AddPeriodicBCAction::act(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), PiecewiseLinearBase::buildInterpolation(), CombinerGenerator::CombinerGenerator(), Executor::Executor(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), QuadraturePointMultiApp::fillPositions(), CentroidMultiApp::fillPositions(), MultiApp::fillPositions(), FunctionDT::FunctionDT(), FillBetweenCurvesGenerator::generate(), FillBetweenPointVectorsGenerator::generate(), FillBetweenSidesetsGenerator::generate(), MooseBase::MooseBase(), NearestPointBase< LayeredSideDiffusiveFluxAverage, SideIntegralVariableUserObject >::name(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), PiecewiseBase::setData(), and AddVariableAction::varName().

◆ _need_delete

bool MooseMesh::_need_delete
private

Whether we need to delete remote elements after init'ing the EquationSystems.

Definition at line 1856 of file MooseMesh.h.

Referenced by allowRemoteElementRemoval(), and needsRemoteElemDeletion().

◆ _need_ghost_ghosted_boundaries

bool MooseMesh::_need_ghost_ghosted_boundaries
private

A parallel mesh generator such as DistributedRectilinearMeshGenerator already make everything ready.

We do not need to gather all boundaries to every single processor. In general, we should avoid using ghostGhostedBoundaries when possible since it is not scalable

Definition at line 1868 of file MooseMesh.h.

Referenced by ghostGhostedBoundaries(), and needGhostGhostedBoundaries().

◆ _neighbor_subdomain_boundary_ids

std::unordered_map<SubdomainID, std::set<BoundaryID> > MooseMesh::_neighbor_subdomain_boundary_ids
private

Holds a map from neighbor subomdain ids to the boundary ids that are attached to it.

Definition at line 1830 of file MooseMesh.h.

Referenced by cacheInfo(), getBoundaryConnectedSecondaryBlocks(), getInterfaceConnectedBlocks(), and getSubdomainInterfaceBoundaryIds().

◆ _node_map

std::vector<Node *> MooseMesh::_node_map
protected

Vector of all the Nodes in the mesh for determining when to add a new point.

Definition at line 1601 of file MooseMesh.h.

Referenced by addUniqueNode().

◆ _node_set_nodes

std::map<boundary_id_type, std::vector<dof_id_type> > MooseMesh::_node_set_nodes
protected

list of nodes that belongs to a specified nodeset: indexing [nodeset_id] -> [array of node ids]

Definition at line 1583 of file MooseMesh.h.

Referenced by buildNodeList(), freeBndNodes(), getNodeList(), and nodeSetNodes().

◆ _node_to_active_semilocal_elem_map

std::map<dof_id_type, std::vector<dof_id_type> > MooseMesh::_node_to_active_semilocal_elem_map
protected

A map of all of the current nodes to the active elements that they are connected to.

Definition at line 1536 of file MooseMesh.h.

Referenced by addQuadratureNode(), nodeToActiveSemilocalElemMap(), and update().

◆ _node_to_active_semilocal_elem_map_built

bool MooseMesh::_node_to_active_semilocal_elem_map_built
protected

Definition at line 1537 of file MooseMesh.h.

Referenced by nodeToActiveSemilocalElemMap(), and update().

◆ _node_to_elem_map

std::map<dof_id_type, std::vector<dof_id_type> > MooseMesh::_node_to_elem_map
protected

A map of all of the current nodes to the elements that they are connected to.

Definition at line 1532 of file MooseMesh.h.

Referenced by addQuadratureNode(), nodeToElemMap(), and update().

◆ _node_to_elem_map_built

bool MooseMesh::_node_to_elem_map_built
protected

Definition at line 1533 of file MooseMesh.h.

Referenced by nodeToElemMap(), and update().

◆ _paired_boundary

std::vector<std::pair<BoundaryID, BoundaryID> > MooseMesh::_paired_boundary
protected

A vector holding the paired boundaries for a regular orthogonal mesh.

Definition at line 1610 of file MooseMesh.h.

Referenced by detectPairedSidesets(), and getPairedBoundaryMapping().

◆ _parallel_type

ParallelType MooseMesh::_parallel_type
protected

Can be set to DISTRIBUTED, REPLICATED, or DEFAULT.

Determines whether the underlying libMesh mesh is a ReplicatedMesh or DistributedMesh.

Definition at line 1445 of file MooseMesh.h.

Referenced by determineUseDistributedMesh(), getParallelType(), and setParallelType().

◆ _parallel_type_overridden

bool MooseMesh::_parallel_type_overridden
protected

Definition at line 1452 of file MooseMesh.h.

Referenced by determineUseDistributedMesh(), and isParallelTypeForced().

◆ _pars

const InputParameters& MooseBase::_pars
protectedinherited

The object's parameters.

Definition at line 366 of file MooseBase.h.

Referenced by AddFVICAction::act(), AddICAction::act(), CreateProblemDefaultAction::act(), CreateProblemAction::act(), SetupMeshAction::act(), ComposeTimeStepperAction::act(), SetupDebugAction::act(), AddAuxKernelAction::act(), AddPeriodicBCAction::act(), CommonOutputAction::act(), FunctorMaterial::addFunctorPropertyByBlocks(), BreakMeshByBlockGeneratorBase::BreakMeshByBlockGeneratorBase(), PNGOutput::calculateRescalingValues(), MooseBase::callMooseError(), MooseBase::connectControllableParams(), Console::Console(), MooseApp::copyInputs(), MaterialBase::declareADProperty(), MaterialBase::declareProperty(), FEProblemSolve::FEProblemSolve(), FunctionMaterialBase< is_ad >::FunctionMaterialBase(), FileMeshGenerator::generate(), MooseBase::getBase(), MooseBase::getCheckedPointerParam(), MaterialBase::getGenericZeroMaterialProperty(), MooseBase::getHitNode(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBase::getParam(), MooseBase::hasBase(), MeshGenerator::hasGenerateCSG(), MeshGenerator::hasGenerateData(), AddVariableAction::init(), AdvancedOutput::initExecutionTypes(), Console::initialSetup(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MultiApp::keepSolutionDuringRestore(), MooseBase::messagePrefix(), MooseBase::MooseBase(), MooseApp::outputMachineReadableData(), MooseBase::paramError(), MooseBase::parameters(), MooseBase::paramInfo(), MooseBase::paramWarning(), prepare(), Eigenvalue::prepareSolverOptions(), setCoordSystem(), setPartitionerHelper(), SetupMeshAction::setupMesh(), TransientBase::setupTimeIntegrator(), MooseApp::showInputs(), and MooseBase::uniqueName().

◆ _partitioner_name

MooseEnum MooseMesh::_partitioner_name
protected

The partitioner used on this mesh.

Definition at line 1463 of file MooseMesh.h.

Referenced by partitionerName(), and setPartitionerHelper().

◆ _partitioner_overridden

bool MooseMesh::_partitioner_overridden
protected

Definition at line 1464 of file MooseMesh.h.

Referenced by isPartitionerForced(), and setPartitionerHelper().

◆ _patch_size

unsigned int MooseMesh::_patch_size
protected

The number of nodes to consider in the NearestNode neighborhood.

Definition at line 1589 of file MooseMesh.h.

Referenced by getPatchSize().

◆ _patch_update_strategy

Moose::PatchUpdateType MooseMesh::_patch_update_strategy
protected

The patch update strategy.

Definition at line 1598 of file MooseMesh.h.

Referenced by getPatchUpdateStrategy(), MooseMesh(), and setPatchUpdateStrategy().

◆ _periodic_dim

std::map<unsigned int, std::vector<bool> > MooseMesh::_periodic_dim
private

A map of vectors indicating which dimensions are periodic in a regular orthogonal mesh for the specified variable numbers.

This data structure is populated by addPeriodicVariable.

Definition at line 1653 of file MooseMesh.h.

Referenced by addPeriodicVariable(), and isTranslatedPeriodic().

◆ _pg_moose_app

MooseApp& PerfGraphInterface::_pg_moose_app
protectedinherited

The MooseApp that owns the PerfGraph.

Definition at line 124 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::perfGraph().

◆ _prefix

const std::string PerfGraphInterface::_prefix
protectedinherited

A prefix to use for all sections.

Definition at line 127 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::timedSectionName().

◆ _provided_coord_blocks

std::vector<SubdomainName> MooseMesh::_provided_coord_blocks
private

Set for holding user-provided coordinate system type block names.

Definition at line 1917 of file MooseMesh.h.

Referenced by MooseMesh(), prepare(), and setCoordSystem().

◆ _quadrature_nodes

std::map<dof_id_type, Node *> MooseMesh::_quadrature_nodes
protected

Definition at line 1574 of file MooseMesh.h.

Referenced by addQuadratureNode(), clearQuadratureNodes(), and queryNodePtr().

◆ _refined_elements

std::unique_ptr<ConstElemPointerRange> MooseMesh::_refined_elements
protected

The elements that were just refined.

Definition at line 1502 of file MooseMesh.h.

Referenced by cacheChangedLists(), and refinedElementRange().

◆ _regular_orthogonal_mesh

bool MooseMesh::_regular_orthogonal_mesh
protected

Boolean indicating whether this mesh was detected to be regular and orthogonal.

Definition at line 1604 of file MooseMesh.h.

Referenced by addPeriodicVariable(), detectOrthogonalDimRanges(), GeneratedMesh::GeneratedMesh(), getPairedBoundaryMapping(), isRegularOrthogonal(), and prepared().

◆ _relationship_managers

std::vector<std::shared_ptr<RelationshipManager> > MooseMesh::_relationship_managers
protected

The list of active geometric relationship managers (bound to the underlying MeshBase object).

Definition at line 1438 of file MooseMesh.h.

◆ _restartable_app

MooseApp& Restartable::_restartable_app
protectedinherited

Reference to the application.

Definition at line 234 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp(), and Restartable::registerRestartableNameWithFilterOnApp().

◆ _restartable_read_only

const bool Restartable::_restartable_read_only
protectedinherited

Flag for toggling read only status (see ReporterData)

Definition at line 243 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp().

◆ _restartable_system_name

const std::string Restartable::_restartable_system_name
protectedinherited

The system name this object is in.

Definition at line 237 of file Restartable.h.

Referenced by Restartable::restartableName().

◆ _restartable_tid

const THREAD_ID Restartable::_restartable_tid
protectedinherited

The thread ID for this object.

Definition at line 240 of file Restartable.h.

Referenced by Restartable::declareRestartableDataHelper().

◆ _rz_coord_axis

unsigned int MooseMesh::_rz_coord_axis
private

Storage for RZ axis selection.

Definition at line 1904 of file MooseMesh.h.

Referenced by getAxisymmetricRadialCoord(), setAxisymmetricCoordAxis(), and setCoordData().

◆ _semilocal_node_list

std::set<Node *> MooseMesh::_semilocal_node_list
protected

Used for generating the semilocal node range.

Definition at line 1515 of file MooseMesh.h.

Referenced by isSemiLocal(), and updateActiveSemiLocalNodeRange().

◆ _skip_deletion_repartition_after_refine

bool MooseMesh::_skip_deletion_repartition_after_refine
protected

Whether or not skip remote deletion and repartition after uniform refinements.

Definition at line 1490 of file MooseMesh.h.

Referenced by setUniformRefineLevel(), and skipDeletionRepartitionAfterRefine().

◆ _skip_refine_when_use_split

bool MooseMesh::_skip_refine_when_use_split
protected

Whether or not to skip uniform refinements when using a pre-split mesh.

Definition at line 1487 of file MooseMesh.h.

Referenced by skipRefineWhenUseSplit().

◆ _sub_to_data

std::unordered_map<SubdomainID, SubdomainData> MooseMesh::_sub_to_data
private

Holds a map from subdomain ids to associated data.

Definition at line 1827 of file MooseMesh.h.

Referenced by cacheInfo(), getBlockConnectedBlocks(), getBoundaryConnectedBlocks(), getSubdomainBoundaryIds(), and isLowerD().

◆ _subdomain_id_to_rz_coord_axis

std::unordered_map<SubdomainID, std::pair<Point, RealVectorValue> > MooseMesh::_subdomain_id_to_rz_coord_axis
private

Map of subdomain ID to general axisymmetric axis.

Definition at line 1907 of file MooseMesh.h.

Referenced by getGeneralAxisymmetricCoordAxis(), setCoordData(), setGeneralAxisymmetricCoordAxes(), and usingGeneralAxisymmetricCoordAxes().

◆ _type

const std::string& MooseBase::_type
protectedinherited

◆ _uniform_refine_level

unsigned int MooseMesh::_uniform_refine_level
protected

The level of uniform refinement requested (set to zero if AMR is disabled)

Definition at line 1484 of file MooseMesh.h.

Referenced by setUniformRefineLevel(), and uniformRefineLevel().

◆ _use_distributed_mesh

bool MooseMesh::_use_distributed_mesh
protected

False by default.

Final value is determined by several factors including the 'distribution' setting in the input file, and whether or not the Mesh file is a Nemesis file.

Definition at line 1450 of file MooseMesh.h.

Referenced by buildMeshBaseObject(), buildTypedMesh(), detectPairedSidesets(), determineUseDistributedMesh(), errorIfDistributedMesh(), ghostGhostedBoundaries(), init(), isDistributedMesh(), and setPartitionerHelper().

◆ app_param

const std::string MooseBase::app_param = "_moose_app"
staticinherited

◆ kokkos_object_param

const std::string MooseBase::kokkos_object_param = "_kokkos_object"
staticinherited

The name of the parameter that indicates an object is a Kokkos functor.

Definition at line 64 of file MooseBase.h.

Referenced by AddBCAction::act(), AddKernelAction::act(), AddNodalKernelAction::act(), AddMaterialAction::act(), AddFunctionAction::act(), MooseObject::isKokkosObject(), and MooseApp::setupOptions().

◆ moose_base_param

const std::string MooseBase::moose_base_param = "_moose_base"
staticinherited

The name of the parameter that contains the moose system base.

Definition at line 61 of file MooseBase.h.

Referenced by InputParameters::getBase(), InputParameters::hasBase(), and InputParameters::registerBase().

◆ name_param

const std::string MooseBase::name_param = "_object_name"
staticinherited

◆ type_param

const std::string MooseBase::type_param = "_type"
staticinherited

◆ unique_name_param

const std::string MooseBase::unique_name_param = "_unique_name"
staticinherited

The name of the parameter that contains the unique object name.

Definition at line 57 of file MooseBase.h.

Referenced by InputParameterWarehouse::addInputParameters(), AppFactory::create(), InputParameterWarehouse::removeInputParameters(), MooseBase::uniqueName(), and MooseBase::validParams().

◆ usingCombinedWarningSolutionWarnings

MooseObject::usingCombinedWarningSolutionWarnings
inherited

Definition at line 69 of file MooseObject.h.


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