12#ifdef MOOSE_KOKKOS_ENABLED
29#include <unordered_map>
30#include <unordered_set>
33#include "libmesh/elem_range.h"
34#include "libmesh/mesh_base.h"
35#include "libmesh/replicated_mesh.h"
36#include "libmesh/distributed_mesh.h"
37#include "libmesh/node_range.h"
38#include "libmesh/nanoflann.hpp"
39#include "libmesh/vector_value.h"
40#include "libmesh/point.h"
41#include "libmesh/partitioner.h"
54class PeriodicBoundaries;
64 "QUAD QUAD4 QUAD8 QUAD9 "
66 "HEX HEX8 HEX20 HEX27 "
67 "TET TET4 TET10 TET14 "
68 "PRISM PRISM6 PRISM15 PRISM18 "
69 "PYRAMID PYRAMID5 PYRAMID13 PYRAMID14 "
70 "C0POLYGON C0POLYHEDRON";
134 virtual std::unique_ptr<MooseMesh>
safeClone()
const = 0;
155 template <
typename T>
162 void setMeshBase(std::unique_ptr<MeshBase> mesh_base);
193 virtual std::vector<std::filesystem::path>
225 const unsigned short int side)
const;
238 const Elem *
getLowerDElem(
const Elem *,
unsigned short int)
const;
267 const std::unordered_map<dof_id_type, std::vector<dof_id_type>> &
nodeToElemMap();
273 struct bnd_node_iterator;
274 struct const_bnd_node_iterator;
276 struct bnd_elem_iterator;
277 struct const_bnd_elem_iterator;
300 std::vector<std::tuple<dof_id_type, unsigned short int, boundary_id_type>>
buildSideList();
306 std::vector<std::tuple<dof_id_type, unsigned short int, boundary_id_type>>
333 virtual dof_id_type
nNodes()
const;
334 virtual dof_id_type
nElem()
const;
359 virtual const Node &
node(
const dof_id_type i)
const;
360 virtual Node &
node(
const dof_id_type i);
361 virtual const Node &
nodeRef(
const dof_id_type i)
const;
362 virtual Node &
nodeRef(
const dof_id_type i);
363 virtual const Node *
nodePtr(
const dof_id_type i)
const;
364 virtual Node *
nodePtr(
const dof_id_type i);
365 virtual const Node *
queryNodePtr(
const dof_id_type i)
const;
374 virtual Elem *
elem(
const dof_id_type i);
375 virtual const Elem *
elem(
const dof_id_type i)
const;
376 virtual Elem *
elemPtr(
const dof_id_type i);
377 virtual const Elem *
elemPtr(
const dof_id_type i)
const;
379 virtual const Elem *
queryElemPtr(
const dof_id_type i)
const;
468 const std::unordered_map<boundary_id_type, std::unordered_set<dof_id_type>> &
474 const std::unordered_map<boundary_id_type, std::unordered_set<dof_id_type>> &
503 const std::set<SubdomainID> & blk_group)
const;
567 bool prepare(
const MeshBase * mesh_to_clone);
676 const MeshBase &
getMesh()
const;
683#ifdef MOOSE_KOKKOS_ENABLED
702 const std::vector<dof_id_type> &
getNodeList(boundary_id_type nodeset_id)
const;
709 const Node *
addUniqueNode(
const Point & p, Real tol = 1e-6);
725 const unsigned short int side,
726 const unsigned int qp,
728 const Point & point);
759 std::vector<BoundaryID>
getBoundaryIDs(
const std::vector<BoundaryName> & boundary_name,
760 bool generate_unknown =
false)
const;
776 std::vector<SubdomainID>
777 getSubdomainIDs(
const std::vector<SubdomainName> & subdomain_names)
const;
778 std::set<SubdomainID>
getSubdomainIDs(
const std::set<SubdomainName> & subdomain_names)
const;
802 std::vector<SubdomainName>
827 unsigned int var_number,
834 unsigned int var_number,
867 const unsigned int var_num,
881 const unsigned int var_num)
const;
900 const unsigned int var_num,
901 const unsigned int component)
const;
930 minPeriodicVector(
const unsigned int sys_num,
const unsigned int var_num, Point p, Point q)
const;
954 minPeriodicVector(
const unsigned int var_num,
const Point & p,
const Point & q)
const;
965 const unsigned int var_num,
967 const Point & q)
const;
989 Real
minPeriodicDistance(
const unsigned int var_num,
const Point & p,
const Point & q)
const;
1032 const std::vector<std::vector<QpMap>> &
1050 changeBoundaryId(
const boundary_id_type old_id,
const boundary_id_type new_id,
bool delete_prev);
1057 const boundary_id_type old_id,
1058 const boundary_id_type new_id,
1180 bool use_distributed_mesh,
1207 virtual std::unique_ptr<libMesh::PointLocatorBase>
getPointLocator()
const;
1271 bool areElemIDsIdentical(
const std::string & id_name1,
const std::string & id_name2)
const;
1276 std::set<dof_id_type>
getAllElemIDs(
unsigned int elem_id_index)
const;
1283 const std::set<SubdomainID> & blks)
const;
1300 std::unordered_map<dof_id_type, std::set<dof_id_type>>
1301 getElemIDMapping(
const std::string & from_id_name,
const std::string & to_id_name)
const;
1307 const std::vector<const FaceInfo *> &
faceInfo()
const;
1310 struct face_info_iterator;
1311 struct const_face_info_iterator;
1321 struct elem_info_iterator;
1322 struct const_elem_info_iterator;
1341 const std::vector<FaceInfo> &
allFaceInfo()
const;
1375 const std::map<boundary_id_type, std::vector<dof_id_type>> &
nodeSetNodes()
const;
1392 const std::map<SubdomainID, Moose::CoordinateSystemType> &
getCoordSystem()
const;
1420 const std::vector<std::pair<Point, RealVectorValue>> & axes);
1427 const std::pair<Point, RealVectorValue> &
1478 const std::unordered_map<std::pair<const Elem *, unsigned short int>,
const Elem *> &
1598 std::unique_ptr<libMesh::MeshBase>
_mesh;
1601#ifdef MOOSE_KOKKOS_ENABLED
1667 std::unique_ptr<libMesh::StoredRange<MooseMesh::const_bnd_node_iterator, const BndNode *>>
1669 std::unique_ptr<libMesh::StoredRange<MooseMesh::const_bnd_elem_iterator, const BndElement *>>
1711 std::unordered_map<boundary_id_type, std::unordered_set<dof_id_type>>
_bnd_elem_ids;
1714 std::map<dof_id_type, std::map<unsigned int, std::map<dof_id_type, Node *>>>
1783 mutable std::unordered_map<std::pair<const Elem *, unsigned int>,
FaceInfo *>
1800 std::map<std::pair<unsigned int, unsigned int>, std::array<bool, 3>>
_periodic_dim;
1850 void mapPoints(
const std::vector<Point> & from,
1851 const std::vector<Point> & to,
1852 std::vector<QpMap> & qp_map);
1879 std::vector<std::vector<QpMap>> & refinement_map,
1880 std::vector<std::pair<unsigned int, QpMap>> & coarsen_map,
1889 const std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap>> &)
const;
1892 const std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap>> &)
const;
1919 std::map<std::pair<int, libMesh::ElemType>, std::vector<std::vector<QpMap>>>
1922 std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap>>
1924 std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap>>
1928 std::map<libMesh::ElemType, std::map<std::pair<int, int>, std::vector<std::vector<QpMap>>>>
1945 std::map<std::pair<int, libMesh::ElemType>, std::vector<std::pair<unsigned int, QpMap>>>
1948 std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap>>
1950 std::map<std::pair<libMesh::ElemType, unsigned int>, std::vector<QpMap>>
1974 std::unordered_map<std::pair<const Elem *, unsigned short int>,
const Elem *>
2059 template <
typename T>
2066 mooseAssert(
_coord_transform,
"The coordinate transformation object is null.");
2089 template <
typename PredType,
typename IterType>
2101 const FaceInfo * const,
2102 const FaceInfo * const &,
2103 const FaceInfo * const *>
2106 template <
typename PredType,
typename IterType>
2133 template <
typename PredType,
typename IterType>
2145 const ElemInfo * const,
2146 const ElemInfo * const &,
2147 const ElemInfo * const *>
2150 template <
typename PredType,
typename IterType>
2176 template <
typename PredType,
typename IterType>
2193 template <
typename PredType,
typename IterType>
2219 template <
typename PredType,
typename IterType>
2232 BndElement * const &,
2233 BndElement * const *>
2236 template <
typename PredType,
typename IterType>
2264template <
typename T>
2274 mooseError(
"A MooseMesh object is being asked to build a libMesh mesh that is a different "
2275 "parallel type than the libMesh mesh that it wraps. This is not allowed. Please "
2276 "create another MooseMesh object to wrap the new libMesh mesh");
2283 dim = getParam<MooseEnum>(
"dim");
2291 if (!getParam<bool>(
"allow_renumbering"))
2292 mesh->allow_renumbering(
false);
2300 if (!
parameters().isParamSetByAddParam(
"partitioner"))
2301 mooseError(
"If partitioner block is provided, partitioner keyword cannot be used!");
2304 mooseError(
"Custom partitioner requested but not set!");
2329 return getMesh().has_elem_integer(id_name);
2336 mooseError(
"Mesh does not have element ID for ", id_name);
2337 return getMesh().get_elem_integer_index(id_name);
2348inline const std::vector<const FaceInfo *> &
2354inline const std::vector<FaceInfo> &
2360inline const std::map<boundary_id_type, std::vector<dof_id_type>> &
2366inline const std::unordered_map<std::pair<const Elem *, unsigned short int>,
const Elem *> &
boundary_id_type BoundaryID
libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > ConstBndNodeRange
Some useful StoredRange typedefs.
libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > ConstBndElemRange
libMesh::StoredRange< std::set< Node * >::iterator, Node * > SemiLocalNodeRange
const std::string LIST_GEOM_ELEM
Keeps track of stuff related to assembling.
Class used for caching additional information for elements such as the volume and centroid.
This data structure is used to store geometric and variable related metadata about each cell face in ...
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...
const InputParameters & parameters() const
Get the parameters of the object.
const std::string & name() const
Get the name of the class.
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...
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
std::set< SubdomainID > getInterfaceConnectedBlocks(const BoundaryID bid) const
Get the list of subdomains contacting the given boundary.
virtual bnd_node_iterator bndNodesBegin()
Return iterators to the beginning/end of the boundary nodes list.
const Moose::PatchUpdateType & getPatchUpdateStrategy() const
Get the current patch update strategy.
std::vector< std::vector< bool > > _id_identical_flag
Flags to indicate whether or not any two extra element integers are the same.
bool _need_delete
Whether we need to delete remote elements after init'ing the EquationSystems.
void setBoundaryName(BoundaryID boundary_id, BoundaryName name)
This method sets the boundary name of the boundary based on the id parameter.
virtual bnd_node_iterator bndNodesEnd()
bool isBoundaryElem(dof_id_type elem_id) const
Returns true if the requested element is in the list of boundary elements, false otherwise.
void setupFiniteVolumeMeshData() const
Sets up the additional data needed for finite volume computations.
const std::set< BoundaryID > & getSubdomainBoundaryIds(const SubdomainID subdomain_id) const
Get the list of boundary ids associated with the given subdomain id.
void printInfo(std::ostream &os=libMesh::out, const unsigned int verbosity=0) const
Calls print_info() on the underlying Mesh.
const Elem * getLowerDElem(const Elem *, unsigned short int) const
Returns a const pointer to a lower dimensional element that corresponds to a side of a higher dimensi...
virtual std::vector< std::filesystem::path > writeRecoveryFiles(const std::filesystem::path &file_base)
Write the mesh files needed for recovery/checkpointing.
bool _allow_recovery
Whether or not this Mesh is allowed to read a recovery file.
MeshBase::node_iterator localNodesEnd()
unsigned int _max_p_level
Maximum p-refinement level of all elements.
std::map< const Elem *, std::vector< const Elem * > > _coarsened_element_children
Map of Parent elements to child elements for elements that were just coarsened.
std::unordered_set< dof_id_type > getBoundaryActiveSemiLocalElemIds(BoundaryID bid) const
Return all ids of elements which have a side which is part of a sideset.
std::unique_ptr< ConstElemPointerRange > _coarsened_elements
The elements that were just coarsened.
std::vector< BndNode * >::iterator bnd_node_iterator_imp
MeshBase & getMesh(const std::string &name)
unsigned int getAxisymmetricRadialCoord() const
Returns the desired radial direction for RZ coordinate transformation.
face_info_iterator ownedFaceInfoEnd()
unsigned int sideWithBoundaryID(const Elem *const elem, const BoundaryID boundary_id) const
Calls BoundaryInfo::side_with_boundary_id().
void meshChanged()
Declares that the MooseMesh has changed, invalidates cached data and rebuilds caches.
virtual const Node & nodeRef(const dof_id_type i) const
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...
bool _displace_node_list_by_side_list
Whether or not to displace unrelated nodesets by nodesets constructed from sidesets.
void allowRecovery(bool allow)
Set whether or not this mesh is allowed to read a recovery file.
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.
const std::vector< const Elem * > & coarsenedElementChildren(const Elem *elem) const
Get the newly removed children element ids for an element that was just coarsened.
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".
bool isDisplaced() const
whether this mesh is a displaced mesh
libMesh::BoundingBox getInflatedProcessorBoundingBox(Real inflation_multiplier=0.01) const
Get a (slightly inflated) processor bounding box.
RealVectorValue minPeriodicVector(const unsigned int sys_num, const unsigned int var_num, Point p, Point q) const
Returns the minimum vector between two points on the mesh taking into account periodicity for the giv...
std::set< Node * > _semilocal_node_list
Used for generating the semilocal node range.
Real minPeriodicDistance(const unsigned int sys_num, const unsigned int var_num, const Point &p, const Point &q) const
Returns the distance between two points on the mesh taking into account periodicity for the given var...
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.
unsigned int uniformRefineLevel() const
Returns the level of uniform refinement requested (zero if AMR is disabled).
virtual dof_id_type maxElemId() const
const std::vector< std::pair< unsigned int, QpMap > > & getCoarseningMap(const Elem &elem, int input_side)
Get the coarsening map for a given element type.
bool isParallelTypeForced() const
Tell the user if the distribution was overriden for any reason.
bool possiblyRebuildNodeToElemMap()
rebuild the node to element map if it's been requsted previously
std::vector< const FaceInfo * > _face_info
Holds only those FaceInfo objects that have processor_id equal to this process's id,...
virtual unsigned int dimension() const
Returns MeshBase::mesh_dimension(), (not MeshBase::spatial_dimension()!) of the underlying libMesh me...
static const std::array< bool, 3 > periodic_dim_default
Default value for the automatically detected paired boundaries for each unit dimension,...
std::vector< std::shared_ptr< RelationshipManager > > _relationship_managers
The list of active geometric relationship managers (bound to the underlying MeshBase object).
virtual Elem * elem(const dof_id_type i)
Various accessors (pointers/references) for Elem "i".
unsigned int getMaxLeafSize() const
Getter for the maximum leaf size parameter.
std::vector< BndElement * >::const_iterator const_bnd_elem_iterator_imp
std::unique_ptr< ConstElemPointerRange > _refined_elements
The elements that were just refined.
bool _custom_partitioner_requested
bool _need_ghost_ghosted_boundaries
A parallel mesh generator such as DistributedRectilinearMeshGenerator already make everything ready.
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,...
Node * getQuadratureNode(const Elem *elem, const unsigned short int side, const unsigned int qp)
Get a specified quadrature node.
dof_id_type minElementID(unsigned int elem_id_index) const
Return the minimum element ID for an extra element integer with its accessing index.
virtual bool skipPartitioning() const
void updateCoordTransform()
Update the coordinate transformation object based on our coordinate system data.
void markFiniteVolumeInfoDirty()
Mark the finite volume information as dirty.
elem_info_iterator ownedElemInfoEnd()
virtual MooseMesh & clone() const
Clone method.
std::unordered_map< SubdomainID, std::pair< Point, RealVectorValue > > _subdomain_id_to_rz_coord_axis
Map of subdomain ID to general axisymmetric axis.
bool _linear_finite_volume_dofs_cached
virtual Elem * elemPtr(const dof_id_type i)
virtual void onMeshChanged()
Declares a callback function that is executed at the conclusion of meshChanged().
bool _coord_system_set
Whether the coordinate system has been set.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
MooseEnum _partitioner_name
The partitioner used on this mesh.
virtual unsigned int spatialDimension() const
Returns MeshBase::spatial_dimension.
ParallelType getParallelType() const
bool _parallel_type_overridden
void buildRefinementAndCoarseningMaps(Assembly *assembly)
Create the refinement and coarsening maps necessary for projection of stateful material properties wh...
void detectPairedSidesets()
This routine detects paired sidesets of a regular orthogonal mesh (.i.e.
bool _is_changed
true if mesh is changed (i.e. after adaptivity step)
void needGhostGhostedBoundaries(bool needghost)
Whether or not we want to ghost ghosted boundaries.
unsigned int _ghosting_patch_size
The number of nearest neighbors to consider for ghosting purposes when iteration patch update strateg...
virtual void buildMesh()=0
Must be overridden by child classes.
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_coarsening_map
std::set< BoundaryID > _mesh_boundary_ids
A set of boundary IDs currently present in the mesh.
unsigned int getMaxSidesPerElem() const
Get the maximum number of sides per element.
const std::vector< Real > & getGhostedBoundaryInflation() const
Return a writable reference to the _ghosted_boundaries_inflation vector.
virtual void init()
Initialize the Mesh object.
virtual const Node & node(const dof_id_type i) const
Various accessors (pointers/references) for Node "i".
bool _is_displaced
Whether this mesh is displaced.
std::vector< SubdomainName > getSubdomainNames(const std::vector< SubdomainID > &subdomain_ids) const
Get the associated subdomainNames for the subdomain ids that are passed in.
Real dimensionWidth(unsigned int component) const
Returns the width of the requested dimension.
unsigned int _max_leaf_size
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_coarsening_side_map
bool skipDeletionRepartitionAfterRefine() const
Return a flag indicating whether or not we should skip remote deletion and repartition after uniform ...
virtual unsigned int nPartitions() const
void computeMaxPerElemAndSide()
Compute the maximum numbers per element and side.
virtual dof_id_type nActiveLocalElem() const
void update()
Calls buildNodeListFromSideList(), buildNodeList(), and buildBndElemList().
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]
std::set< dof_id_type > 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.
std::vector< FaceInfo > _all_face_info
FaceInfo object storing information for face based loops.
const std::string & getBoundaryName(const BoundaryID boundary_id) const
Return the name of the boundary given the id.
std::unique_ptr< libMesh::MeshBase > _mesh
Pointer to underlying libMesh mesh object.
bool skipRefineWhenUseSplit() const
Whether or not skip uniform refinements when using a pre-split mesh.
void determineUseDistributedMesh()
Determine whether to use a distributed mesh.
std::vector< Node * > _node_map
Vector of all the Nodes in the mesh for determining when to add a new point.
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > > _bnd_elem_range
bool hasDetectedPairedSidesets() const
Whether or not detectedPairedSidesets() has been called.
std::map< SubdomainID, Moose::CoordinateSystemType > & _coord_sys
Type of coordinate system per subdomain.
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:
const MeshBase & getMesh(const std::string &name) const
std::unique_ptr< libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > > _bnd_node_range
const MeshBase * getMeshPtr() const
ParallelType _parallel_type
Can be set to DISTRIBUTED, REPLICATED, or DEFAULT.
Moose::CoordinateSystemType getUniqueCoordSystem() const
Get the coordinate system from the mesh, it must be the same in all subdomains otherwise this will er...
std::pair< const Node *, BoundaryID > PeriodicNodeInfo
Helper type for building periodic node maps.
void buildNodeListFromSideList()
Calls BoundaryInfo::build_node_list_from_side_list().
void setMeshBoundaryIDs(std::set< BoundaryID > boundary_IDs)
Sets the set of BoundaryIDs Is called by AddAllSideSetsByNormals.
const std::map< SubdomainID, Moose::CoordinateSystemType > & getCoordSystem() const
Get the map from subdomain ID to coordinate system type, e.g.
virtual bool isDistributedMesh() const
Returns the final Mesh distribution type.
MooseAppCoordTransform & coordTransform()
unsigned int _max_h_level
Maximum h-refinement level of all elements.
virtual unsigned int effectiveSpatialDimension() const
Returns the effective spatial dimension determined by the coordinates actually used by the mesh.
std::vector< std::unique_ptr< libMesh::GhostingFunctor > > _ghosting_functors
Deprecated (DO NOT USE)
bool _skip_refine_when_use_split
Whether or not to skip uniform refinements when using a pre-split mesh.
bool areElemIDsIdentical(const std::string &id_name1, const std::string &id_name2) const
Whether or not two extra element integers are identical.
bool prepared() const
Setter/getter for whether the mesh is prepared.
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.
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:
bool hasElementID(const std::string &id_name) const
Whether mesh has an extra element integer with a given name.
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.
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
bool _use_distributed_mesh
False by default.
void addGhostedBoundary(BoundaryID boundary_id)
This will add the boundary ids to be ghosted to this processor.
unsigned int getHigherDSide(const Elem *elem) const
Returns the local side ID of the interior parent aligned with the lower dimensional element.
std::set< SubdomainID > _mesh_subdomains
A set of subdomain IDs currently present in the mesh.
static MooseEnum partitioning()
returns MooseMesh partitioning options so other classes can use it
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 ...
virtual dof_id_type maxNodeId() const
Calls max_node/elem_id() on the underlying libMesh mesh object.
void setSubdomainName(SubdomainID subdomain_id, const SubdomainName &name)
This method sets the name for subdomain_id to name.
void setCoordData(const MooseMesh &other_mesh)
Set the coordinate system data to that of other_mesh.
unsigned int getElementIDIndex(const std::string &id_name) const
Return the accessing integer for an extra element integer with its name.
void checkDuplicateSubdomainNames()
Loop through all subdomain IDs and check if there is name duplication used for the subdomains with sa...
std::map< dof_id_type, std::map< unsigned int, std::map< dof_id_type, Node * > > > _elem_to_side_to_qp_to_quadrature_nodes
bool _regular_orthogonal_mesh
Boolean indicating whether this mesh was detected to be regular and orthogonal.
SemiLocalNodeRange * getActiveSemiLocalNodeRange() const
ConstElemPointerRange * refinedElementRange() const
Return a range that is suitable for threaded execution over elements that were just refined.
SubdomainID getSubdomainID(const SubdomainName &subdomain_name) const
Get the associated subdomain ID for the subdomain name.
void clearQuadratureNodes()
Clear out any existing quadrature nodes.
void cacheFaceInfoVariableOwnership() const
Cache if variables live on the elements connected by the FaceInfo objects.
virtual Real getMaxInDimension(unsigned int component) const
void buildFiniteVolumeInfo() const
Builds the face and elem info vectors that store meta-data needed for looping over and doing calculat...
static InputParameters validParams()
Typical "Moose-style" constructor and copy constructor.
const std::set< BoundaryID > & meshNodesetIds() const
Returns a read-only reference to the set of nodesets currently present in the Mesh.
const std::unordered_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.
face_info_iterator ownedFaceInfoBegin()
Iterators to owned faceInfo objects.
libMesh::ConstNodeRange * getLocalNodeRange()
void setIsCustomPartitionerRequested(bool cpr)
void deleteRemoteElements()
Delete remote elements.
bool getConstructNodeListFromSideList()
Return construct node list from side list boolean.
bool allowRemoteElementRemoval() const
Whether we are allow remote element removal.
elem_info_iterator ownedElemInfoBegin()
Iterators to owned faceInfo objects.
std::vector< BndElement * > _bnd_elems
array of boundary elems
unsigned int maxPLevel() const
Returns the maximum p-refinement level of all elements.
bool needsRemoteElemDeletion() const
Whether we need to delete remote elements.
void ghostGhostedBoundaries()
Actually do the ghosting of boundaries that need to be ghosted to this processor.
bool isPartitionerForced() const
Tell the user if the partitioner was overriden for any reason.
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 ...
bool _is_nemesis
True if a Nemesis Mesh was read in.
virtual std::string getFileName() const
Returns the name of the mesh file read to produce this mesh if any or an empty string otherwise.
void updateActiveSemiLocalNodeRange(std::set< dof_id_type > &ghosted_elems)
Clears the "semi-local" node list and rebuilds it.
bool getDisplaceNodeListBySideList()
Return displace node list by side list boolean.
virtual bool skipNoncriticalPartitioning() const
void checkCoordinateSystems()
Performs a sanity check for every element in the mesh.
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.
const std::vector< const FaceInfo * > & faceInfo() const
Accessor for local FaceInfo objects.
void buildElemIDInfo()
Build extra data for faster access to the information of extra element integers.
virtual bnd_elem_iterator bndElemsBegin()
Return iterators to the beginning/end of the boundary elements list.
unsigned int getBlocksMaxDimension(const std::vector< SubdomainName > &blocks) const
Returns the maximum element dimension on the given blocks.
bool isFiniteVolumeInfoDirty() const
const Moose::Kokkos::Mesh * getKokkosMesh() const
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 previo...
const MooseEnum & partitionerName() const
virtual Elem * queryElemPtr(const dof_id_type i)
const std::set< unsigned int > & getGhostedBoundaries() const
Return a writable reference to the set of ghosted boundary IDs.
void cacheFVElementalDoFs() const
Cache the DoF indices for FV variables on each element.
virtual std::unique_ptr< libMesh::PointLocatorBase > getPointLocator() const
Proxy function to get a (sub)PointLocator from either the underlying libMesh mesh (default),...
bool _partitioner_overridden
const std::set< BoundaryID > & getBoundaryIDs() const
Returns a const reference to a set of all user-specified boundary IDs.
std::vector< std::vector< Real > > _bounds
The bounds in each dimension of the mesh for regular orthogonal meshes.
std::set< SubdomainID > _lower_d_boundary_blocks
Mesh blocks for boundary lower-d elements in different types.
virtual SubdomainID nSubdomains() const
const ElemInfo & elemInfo(const dof_id_type id) const
Accessor for the elemInfo object for a given element ID.
void setBoundaryToNormalMap(std::unique_ptr< std::map< BoundaryID, RealVectorValue > > boundary_map)
Sets the mapping between BoundaryID and normal vector Is called by AddAllSideSetsByNormals.
bool isCustomPartitionerRequested() const
Setter and getter for _custom_partitioner_requested.
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 previ...
void computeFiniteVolumeCoords() const
Compute the face coordinate value for all FaceInfo and ElemInfo objects.
bool _moose_mesh_prepared
True if prepare has been called on the mesh.
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.
bool _doing_p_refinement
Whether we have p-refinement (whether exclusively p- or hp-refinement)
Moose::Kokkos::Mesh * getKokkosMesh()
Accessor for Kokkos mesh object.
unsigned int nFace() const
accessors for the FaceInfo objects
bool _skip_deletion_repartition_after_refine
Whether or not skip remote deletion and repartition after uniform refinements.
void buildNodeList()
Calls BoundaryInfo::build_node_list()/build_side_list() and makes separate copies of Nodes/Elems in t...
virtual dof_id_type nNodes() const
Calls n_nodes/elem() on the underlying libMesh mesh object.
std::vector< Node * > _extreme_nodes
A vector containing the nodes at the corners of a regular orthogonal mesh.
BoundaryID getBoundaryID(const BoundaryName &boundary_name) const
Get the associated BoundaryID for the boundary name.
std::unique_ptr< libMesh::Partitioner > _custom_partitioner
The custom partitioner.
std::optional< std::vector< std::pair< BoundaryID, BoundaryID > > > _paired_boundary
A vector holding the paired boundaries for a regular orthogonal mesh.
unsigned int getGhostingPatchSize() const
Getter for the ghosting_patch_size parameter.
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.
std::set< SubdomainID > getBoundaryConnectedSecondaryBlocks(const BoundaryID bid) const
Get the list of subdomains associated with the given boundary of its secondary side.
unsigned int getMaxNodesPerSide() const
Get the maximum number of nodes per side.
std::unordered_map< std::pair< const Elem *, unsigned int >, FaceInfo * > _elem_side_to_face_info
Map from elem-side pair to FaceInfo.
bool isRegularOrthogonal()
Getter to query if the mesh was detected to be regular and orthogonal.
const std::vector< QpMap > & getPRefinementMapHelper(const Elem &elem, const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > &) const
const std::map< boundary_id_type, std::vector< dof_id_type > > & nodeSetNodes() const
unsigned int _max_nodes_per_elem
The maximum number of nodes per element.
static MooseEnum elemTypes()
returns MooseMesh element type options
std::set< BoundaryID > _mesh_nodeset_ids
void setGeneralAxisymmetricCoordAxes(const std::vector< SubdomainName > &blocks, const std::vector< std::pair< Point, RealVectorValue > > &axes)
Sets the general coordinate axes for axisymmetric blocks.
unsigned int getPatchSize() const
Getter for the patch_size parameter.
void addPeriodicVariable(const unsigned int sys_num, const unsigned int var_num, const BoundaryID primary, const BoundaryID secondary)
For "regular orthogonal" meshes, determine if variable var_num is periodic with respect to the primar...
std::vector< BndElement * >::iterator bnd_elem_iterator_imp
void cacheChangedLists()
Cache information about what elements were refined and coarsened in the previous step.
bool isTranslatedPeriodic(const unsigned int sys_num, const unsigned int var_num, const unsigned int component) const
Returns whether this generated mesh is periodic in the given dimension for the given variable on the ...
const std::pair< Point, RealVectorValue > & getGeneralAxisymmetricCoordAxis(SubdomainID subdomain_id) const
Gets the general axisymmetric coordinate axis for a block.
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_refinement_side_map
bool _allow_remote_element_removal
Whether to allow removal of remote elements.
bool _construct_node_list_from_side_list
Whether or not to allow generation of nodesets from sidesets.
std::set< BoundaryID > getSubdomainInterfaceBoundaryIds(const SubdomainID subdomain_id) const
Get the list of boundaries that contact the given subdomain.
std::unique_ptr< T > buildTypedMesh(unsigned int dim=libMesh::invalid_uint)
Shortcut method to construct a unique pointer to a libMesh mesh instance.
const Node * addUniqueNode(const Point &p, Real tol=1e-6)
Add a new node to the mesh.
void setParallelType(ParallelType parallel_type)
Allow to change parallel type.
const std::set< BoundaryID > & meshBoundaryIds() const
Returns a read-only reference to the set of boundary IDs currently present in the Mesh.
const std::set< SubdomainID > & interiorLowerDBlocks() const
std::vector< BndNode * > _bnd_nodes
array of boundary nodes
std::unordered_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.
const std::vector< const ElemInfo * > & elemInfoVector() const
Accessor for the element info objects owned by this process.
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.
std::unique_ptr< MooseAppCoordTransform > _coord_transform
A coordinate transformation object that describes how to transform this problem's coordinate system i...
std::vector< BndNode * >::const_iterator const_bnd_node_iterator_imp
const std::set< SubdomainID > & getNodeBlockIds(const Node &node) const
Return list of blocks to which the given node belongs.
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,...
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 boundarie...
const RealVectorValue & getNormalByBoundaryID(BoundaryID id) const
Returns the normal vector associated with a given BoundaryID.
std::unordered_map< SubdomainID, SubdomainData > _sub_to_data
Holds a map from subdomain ids to associated data.
const MooseUnits & lengthUnit() const
std::unique_ptr< std::map< BoundaryID, RealVectorValue > > _boundary_to_normal_map
The boundary to normal map - valid only when AddAllSideSetsByNormals is active.
std::unique_ptr< libMesh::NodeRange > _active_node_range
std::set< SubdomainID > _lower_d_interior_blocks
Mesh blocks for interior lower-d elements in different types.
void setPatchUpdateStrategy(Moose::PatchUpdateType patch_update_strategy)
Set the patch size update strategy.
std::vector< SubdomainID > getSubdomainIDs(const std::vector< SubdomainName > &subdomain_names) const
Get the associated subdomainIDs for the subdomain names that are passed in.
const std::vector< FaceInfo > & allFaceInfo() const
Accessor for all FaceInfo objects.
void setPartitionerHelper(MeshBase *mesh=nullptr)
const std::pair< BoundaryID, BoundaryID > * getPairedBoundaryMapping(unsigned int component) const
This function attempts to return the paired boundary ids for the given component.
const std::set< BoundaryID > & meshSidesetIds() const
Returns a read-only reference to the set of sidesets currently present in the Mesh.
std::map< boundary_id_type, std::set< dof_id_type > > _bnd_node_ids
Map of sets of node IDs in each boundary.
unsigned int _rz_coord_axis
Storage for RZ axis selection.
ConstElemPointerRange * coarsenedElementRange() const
Return a range that is suitable for threaded execution over elements that were just coarsened.
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.
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.
unsigned int _uniform_refine_level
The level of uniform refinement requested (set to zero if AMR is disabled)
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
void buildCoarseningMap(const Elem &elem, libMesh::QBase &qrule, libMesh::QBase &qrule_face, int input_side)
Build the coarsening map for a given element type.
bool hasSecondOrderElements()
check if the mesh has SECOND order elements
std::unordered_map< const Elem *, unsigned short int > _lower_d_elem_to_higher_d_elem_side
bool _distribution_overridden
bool _finite_volume_info_dirty
std::unordered_set< dof_id_type > getBoundaryActiveNeighborElemIds(BoundaryID bid) const
Return all ids of neighbors of elements which have a side which is part of a sideset.
bool allowRecovery() const
Returns whether this mesh is allowed to read a recovery file.
virtual const Node * nodePtr(const dof_id_type i) const
virtual dof_id_type nLocalNodes() const
std::map< dof_id_type, Node * > _quadrature_nodes
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.
void needsRemoteElemDeletion(bool need_delete)
Set whether we need to delete remote elements.
const std::vector< QpMap > & getPCoarseningMapHelper(const Elem &elem, const std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > &) const
virtual dof_id_type nActiveElem() const
libMesh::NodeRange * getActiveNodeRange()
std::vector< SubdomainName > _provided_coord_blocks
Set for holding user-provided coordinate system type block names.
unsigned int _patch_size
The number of nodes to consider in the NearestNode neighborhood.
void setCustomPartitioner(libMesh::Partitioner *partitioner)
Setter for custom partitioner.
libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > * getBoundaryNodeRange()
void setMeshBase(std::unique_ptr< MeshBase > mesh_base)
Method to set the mesh_base object.
std::unique_ptr< libMesh::ConstNodeRange > _local_node_range
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
virtual bnd_elem_iterator bndElemsEnd()
MeshBase::node_iterator localNodesBegin()
Calls local_nodes_begin/end() on the underlying libMesh mesh object.
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.
void setCoordSystem(const std::vector< SubdomainName > &blocks, const MultiMooseEnum &coord_sys)
Set the coordinate system for the provided blocks to coord_sys.
Node * addQuadratureNode(const Elem *elem, const unsigned short int side, const unsigned int qp, BoundaryID bid, const Point &point)
Adds a fictitious "QuadratureNode".
void buildLowerDMesh()
Build lower-d mesh for all sides.
bool doingPRefinement() const
Query whether the kind of adaptivity we're doing includes p-refinement.
virtual const Node * queryNodePtr(const dof_id_type i) const
std::map< std::pair< unsigned int, unsigned int >, std::array< bool, 3 > > _periodic_dim
A map from (system number, vector number) to which dimensions are periodic in a regular orthogonal me...
dof_id_type maxElementID(unsigned int elem_id_index) const
Return the maximum element ID for an extra element integer with its accessing index.
std::vector< dof_id_type > _max_ids
Maximum integer ID for each extra element integer.
std::unique_ptr< Moose::Kokkos::Mesh > _kokkos_mesh
Pointer to Kokkos mesh object.
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...
unsigned int _max_nodes_per_side
The maximum number of nodes per side.
bool _node_to_elem_map_built
Whether _node_to_elem_map has been built.
const MeshBase::element_iterator activeLocalElementsEnd()
std::set< BoundaryID > _mesh_sideset_ids
std::vector< Real > _ghosted_boundaries_inflation
void setGhostedBoundaryInflation(const std::vector< Real > &inflation)
This sets the inflation amount for the bounding box for each partition for use in ghosting boundaries...
std::string getBoundaryString(const BoundaryID boundary_id) const
Return the name of the boundary given the id, if it exists.
std::set< SubdomainID > getBoundaryConnectedBlocks(const BoundaryID bid) const
Get the list of subdomains associated with the given boundary.
bool prepare(const MeshBase *mesh_to_clone)
Calls prepare_for_use() if the underlying MeshBase object isn't prepared, then communicates various b...
const std::array< bool, 3 > & queryPeriodicDimensions(const unsigned int sys_num, const unsigned int var_num) const
Query the translated periodic dimension flags for the given variable on the given system.
const bool _is_split
Whether or not we are using a (pre-)split mesh (automatically DistributedMesh)
std::unique_ptr< SemiLocalNodeRange > _active_semilocal_node_range
Ranges for use with threading, cached so they don't have to get rebuilt all the time (which takes tim...
void doingPRefinement(bool doing_p_refinement)
Indicate whether the kind of adaptivity we're doing includes p-refinement.
void setUniformRefineLevel(unsigned int, bool deletion=true)
Set uniform refinement level.
Moose::PatchUpdateType _patch_update_strategy
The patch update strategy.
virtual Real getMinInDimension(unsigned int component) const
Returns the min or max of the requested dimension respectively.
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,...
void errorIfDistributedMesh(std::string name) const
Generate a unified error message if the underlying libMesh mesh is a DistributedMesh.
void setAxisymmetricCoordAxis(const MooseEnum &rz_coord_axis)
For axisymmetric simulations, set the symmetry coordinate axis.
void needsPrepareForUse()
If this method is called, we will call libMesh's prepare_for_use method when we call Moose's prepare ...
const libMesh::ConstElemRange * getActiveLocalElementRange()
Return pointers to range objects for various types of ranges (local nodes, boundary elems,...
unsigned int maxHLevel() const
Returns the maximum h-refinement level of all elements.
unsigned int getMaxNodesPerElem() const
Get the maximum number of nodes per element.
MooseMesh & operator=(const MooseMesh &other_mesh)=delete
std::map< std::pair< libMesh::ElemType, unsigned int >, std::vector< QpMap > > _elem_type_to_p_refinement_map
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 ...
bool _built_from_other_mesh
Whether or not this mesh was built from another mesh.
virtual dof_id_type nElem() const
const std::set< SubdomainID > & getBlockConnectedBlocks(const SubdomainID subdomain_id) const
Get the list of subdomains neighboring a given subdomain.
std::set< Elem * > _ghost_elems_from_ghost_boundaries
Set of elements ghosted by ghostGhostedBoundaries.
std::vector< const ElemInfo * > _elem_info
Holds only those ElemInfo objects that have processor_id equal to this process's id,...
void isDisplaced(bool is_displaced)
Set whether this mesh is a displaced mesh.
bool hasMeshBase() const
Whether mesh base object was constructed or not.
const std::set< SubdomainID > & boundaryLowerDBlocks() const
bool usingGeneralAxisymmetricCoordAxes() const
Returns true if general axisymmetric coordinate axes are being used.
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.
std::vector< BndNode > _extra_bnd_nodes
void buildHRefinementAndCoarseningMaps(Assembly *assembly)
std::set< unsigned int > _ghosted_boundaries
std::vector< dof_id_type > _min_ids
Minimum integer ID for each extra element integer.
virtual std::unique_ptr< MooseMesh > safeClone() const =0
A safer version of the clone() method that hands back an allocated object wrapped in a smart pointer.
libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > * getBoundaryElementRange()
bool isBoundaryNode(dof_id_type node_id) const
Returns true if the requested node is in the list of boundary nodes, false otherwise.
RealVectorValue _half_range
A convenience vector used to hold values in each dimension representing half of the range.
MeshBase::element_iterator activeLocalElementsBegin()
Calls active_local_nodes_begin/end() on the underlying libMesh mesh object.
std::map< dof_id_type, std::set< SubdomainID > > _block_node_list
list of nodes that belongs to a specified block (domain)
unsigned int _max_sides_per_elem
The maximum number of sides per element.
bool isSemiLocal(Node *const node) const
Returns true if the node is semi-local.
void buildPRefinementAndCoarseningMaps(Assembly *assembly)
static void setPartitioner(MeshBase &mesh_base, MooseEnum &partitioner, bool use_distributed_mesh, const InputParameters ¶ms, MooseObject &context_obj)
Method for setting the partitioner on the passed in mesh_base object.
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > buildActiveSideList() const
Calls BoundaryInfo::build_active_side_list.
bool detectOrthogonalDimRanges(Real tol=1e-6)
This routine determines whether the Mesh is a regular orthogonal mesh (i.e.
std::unordered_map< dof_id_type, std::vector< dof_id_type > > & internalNodeToElemMap()
If not already created, creates a map from every node to all elements to which they are connected.
Every object that can be built by the factory should be derived from this class.
MooseApp & _app
The MOOSE application this is associated with.
Physical unit management class with runtime unit string parsing, unit checking, unit conversion,...
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type.
Interface for objects interacting with the PerfGraph.
Helper object for holding qp mapping info.
unsigned int _from
The qp to map from.
unsigned int _to
The qp to map to.
Real _distance
The distance between them.
RelationshipManagers are used for describing what kinds of non-local resources are needed for an obje...
A class for creating restricted objects.
const Parallel::Communicator & _communicator
PatchUpdateType
Type of patch update strategy for modeling node-face constraints or contact.
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
const unsigned int invalid_uint
OStreamProxy out(std::cout)
std::set< BoundaryID > boundary_ids
The boundary ids that are attached.
std::set< SubdomainID > neighbor_subs
Neighboring subdomain ids.
The definition of the bnd_elem_iterator struct.
bnd_elem_iterator(const IterType &d, const IterType &e, const PredType &p)
The definition of the bnd_node_iterator struct.
bnd_node_iterator(const IterType &d, const IterType &e, const PredType &p)
The definition of the const_bnd_elem_iterator struct.
const_bnd_elem_iterator(const bnd_elem_iterator &rhs)
const_bnd_elem_iterator(const IterType &d, const IterType &e, const PredType &p)
The definition of the const_bnd_node_iterator struct.
const_bnd_node_iterator(const MooseMesh::bnd_node_iterator &rhs)
const_bnd_node_iterator(const IterType &d, const IterType &e, const PredType &p)
The definition of the const_elem_info_iterator struct.
const_elem_info_iterator(const IterType &d, const IterType &e, const PredType &p)
const_elem_info_iterator(const MooseMesh::elem_info_iterator &rhs)
The definition of the const_face_info_iterator struct.
const_face_info_iterator(const MooseMesh::face_info_iterator &rhs)
const_face_info_iterator(const IterType &d, const IterType &e, const PredType &p)
The definition of the elem_info_iterator struct.
elem_info_iterator(const IterType &d, const IterType &e, const PredType &p)
The definition of the face_info_iterator struct.
face_info_iterator(const IterType &d, const IterType &e, const PredType &p)