libMesh
|
The BoundaryInfo
class contains information relevant to boundary conditions including storing faces, edges, and nodes on the boundary, along with ids that can be used to identify the type of boundary each entity is part of.
More...
#include <boundary_info.h>
Public Types | |
typedef std::tuple< dof_id_type, unsigned short int, boundary_id_type > | BCTuple |
As above, but the library creates and fills in a vector of (elem-id, side-id, bc-id) triplets and returns it to the user, taking advantage of guaranteed RVO. More... | |
Public Member Functions | |
BoundaryInfo & | operator= (const BoundaryInfo &other_boundary_info) |
Actual copying operation. More... | |
~BoundaryInfo () | |
Destructor. More... | |
void | clear () |
Clears the underlying data structures and restores the object to a pristine state with no data stored. More... | |
void | regenerate_id_sets () |
Clears and regenerates the cached sets of ids. More... | |
void | sync (UnstructuredMesh &boundary_mesh) |
Generates boundary_mesh data structures corresponding to the mesh data structures. More... | |
void | sync (const std::set< boundary_id_type > &requested_boundary_ids, UnstructuredMesh &boundary_mesh) |
Generates boundary_mesh data structures corresponding to the mesh data structures. More... | |
void | sync (const std::set< boundary_id_type > &requested_boundary_ids, UnstructuredMesh &boundary_mesh, const std::set< subdomain_id_type > &subdomains_relative_to) |
Like the other sync() implementations, but specifically intended for building "boundary" meshes from internal sidesets. More... | |
void | get_side_and_node_maps (UnstructuredMesh &boundary_mesh, std::map< dof_id_type, dof_id_type > &node_id_map, std::map< dof_id_type, unsigned char > &side_id_map, Real tolerance=1.e-6) |
Suppose we have used sync to create boundary_mesh . More... | |
void | add_elements (const std::set< boundary_id_type > &requested_boundary_ids, UnstructuredMesh &boundary_mesh) |
Generates elements along the boundary of our _mesh, which use pre-existing nodes on the boundary_mesh, and which have interior_parent values properly defined. More... | |
void | add_elements (const std::set< boundary_id_type > &requested_boundary_ids, UnstructuredMesh &boundary_mesh, const std::set< subdomain_id_type > &subdomains_relative_to) |
Same as the add_elements() function above, but takes a set of subdomains for which the sides must be relative to. More... | |
void | add_node (const Node *node, const boundary_id_type id) |
Add Node node with boundary id id to the boundary information data structures. More... | |
void | add_node (const dof_id_type node, const boundary_id_type id) |
Add node number node with boundary id id to the boundary information data structures. More... | |
void | add_node (const Node *node, const std::vector< boundary_id_type > &ids) |
Add Node node with boundary ids ids to the boundary information data structure. More... | |
void | clear_boundary_node_ids () |
Clears all the boundary information from all of the nodes in the mesh. More... | |
void | add_edge (const dof_id_type elem, const unsigned short int edge, const boundary_id_type id) |
Add edge edge of element number elem with boundary id id to the boundary information data structure. More... | |
void | add_edge (const Elem *elem, const unsigned short int edge, const boundary_id_type id) |
Add edge edge of element elem with boundary id id to the boundary information data structure. More... | |
void | add_edge (const Elem *elem, const unsigned short int edge, const std::vector< boundary_id_type > &ids) |
Add edge edge of element elem with boundary ids ids to the boundary information data structure. More... | |
void | add_shellface (const dof_id_type elem, const unsigned short int shellface, const boundary_id_type id) |
Add shell face shellface of element number elem with boundary id id to the boundary information data structure. More... | |
void | add_shellface (const Elem *elem, const unsigned short int shellface, const boundary_id_type id) |
Add shell face shellface of element elem with boundary id id to the boundary information data structure. More... | |
void | add_shellface (const Elem *elem, const unsigned short int shellface, const std::vector< boundary_id_type > &ids) |
Add shell face shellface of element elem with boundary ids ids to the boundary information data structure. More... | |
void | add_side (const dof_id_type elem, const unsigned short int side, const boundary_id_type id) |
Add side side of element number elem with boundary id id to the boundary information data structure. More... | |
void | add_side (const Elem *elem, const unsigned short int side, const boundary_id_type id) |
Add side side of element elem with boundary id id to the boundary information data structure. More... | |
void | add_side (const Elem *elem, const unsigned short int side, const std::vector< boundary_id_type > &ids) |
Add side side of element elem with boundary ids ids to the boundary information data structure. More... | |
void | remove (const Node *node) |
Removes the boundary conditions associated with node node , if any exist. More... | |
void | remove (const Elem *elem) |
Removes the boundary conditions associated with element elem , if any exist. More... | |
void | remove_node (const Node *node, const boundary_id_type id) |
Removes boundary id id from node node , if it exists. More... | |
void | remove_edge (const Elem *elem, const unsigned short int edge) |
Removes all boundary conditions associated with edge edge of element elem , if any exist. More... | |
void | remove_edge (const Elem *elem, const unsigned short int edge, const boundary_id_type id) |
Removes the boundary id id from edge edge of element elem , if it exists. More... | |
void | remove_shellface (const Elem *elem, const unsigned short int shellface) |
Removes all boundary conditions associated with shell face shellface of element elem , if any exist. More... | |
void | remove_shellface (const Elem *elem, const unsigned short int shellface, const boundary_id_type id) |
Removes all boundary conditions associated with shell face shellface of element elem , if any exist. More... | |
void | remove_side (const Elem *elem, const unsigned short int side) |
Removes all boundary conditions associated with side side of element elem , if any exist. More... | |
void | remove_side (const Elem *elem, const unsigned short int side, const boundary_id_type id) |
Removes the boundary id id from side side of element elem , if it exists. More... | |
void | remove_id (boundary_id_type id) |
Removes all entities (nodes, sides, edges, shellfaces) with boundary id id from their respective containers and erases any record of id's existence from the BoundaryInfo object. More... | |
std::size_t | n_boundary_ids () const |
bool | has_boundary_id (const Node *const node, const boundary_id_type id) const |
std::vector< boundary_id_type > | boundary_ids (const Node *node) const |
void | boundary_ids (const Node *node, std::vector< boundary_id_type > &vec_to_fill) const |
Fills a user-provided std::vector with the boundary ids associated with Node node . More... | |
unsigned int | n_boundary_ids (const Node *node) const |
unsigned int | n_edge_boundary_ids (const Elem *const elem, const unsigned short int edge) const |
std::vector< boundary_id_type > | edge_boundary_ids (const Elem *const elem, const unsigned short int edge) const |
void | edge_boundary_ids (const Elem *const elem, const unsigned short int edge, std::vector< boundary_id_type > &vec_to_fill) const |
std::vector< boundary_id_type > | raw_edge_boundary_ids (const Elem *const elem, const unsigned short int edge) const |
void | raw_edge_boundary_ids (const Elem *const elem, const unsigned short int edge, std::vector< boundary_id_type > &vec_to_fill) const |
unsigned int | n_shellface_boundary_ids (const Elem *const elem, const unsigned short int shellface) const |
void | shellface_boundary_ids (const Elem *const elem, const unsigned short int shellface, std::vector< boundary_id_type > &vec_to_fill) const |
void | raw_shellface_boundary_ids (const Elem *const elem, const unsigned short int shellface, std::vector< boundary_id_type > &vec_to_fill) const |
bool | has_boundary_id (const Elem *const elem, const unsigned short int side, const boundary_id_type id) const |
boundary_id_type | boundary_id (const Elem *const elem, const unsigned short int side) const |
unsigned int | n_boundary_ids (const Elem *const elem, const unsigned short int side) const |
std::vector< boundary_id_type > | boundary_ids (const Elem *const elem, const unsigned short int side) const |
void | boundary_ids (const Elem *const elem, const unsigned short int side, std::vector< boundary_id_type > &vec_to_fill) const |
std::vector< boundary_id_type > | raw_boundary_ids (const Elem *const elem, const unsigned short int side) const |
void | raw_boundary_ids (const Elem *const elem, const unsigned short int side, std::vector< boundary_id_type > &vec_to_fill) const |
void | copy_boundary_ids (const BoundaryInfo &old_boundary_info, const Elem *const old_elem, const Elem *const new_elem) |
unsigned int | side_with_boundary_id (const Elem *const elem, const boundary_id_type boundary_id) const |
void | build_node_boundary_ids (std::vector< boundary_id_type > &b_ids) const |
Builds the list of unique node boundary ids. More... | |
void | build_side_boundary_ids (std::vector< boundary_id_type > &b_ids) const |
Builds the list of unique side boundary ids. More... | |
void | build_shellface_boundary_ids (std::vector< boundary_id_type > &b_ids) const |
Builds the list of unique shellface boundary ids. More... | |
std::size_t | n_boundary_conds () const |
std::size_t | n_edge_conds () const |
std::size_t | n_shellface_conds () const |
std::size_t | n_nodeset_conds () const |
void | build_node_list (std::vector< dof_id_type > &node_id_list, std::vector< boundary_id_type > &bc_id_list) const |
Creates a list of nodes and ids for those nodes. More... | |
std::vector< std::tuple< dof_id_type, boundary_id_type > > | build_node_list () const |
As above, but the library creates and fills in a vector of (node-id, bc-id) pairs and returns it to the user, taking advantage of guaranteed RVO. More... | |
void | build_node_list_from_side_list () |
Adds nodes with boundary ids based on the side's boundary ids they are connected to. More... | |
void | build_side_list_from_node_list () |
Adds sides to a sideset if every node on that side are in the same sideset. More... | |
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 |
Creates a list of element numbers, sides, and ids for those sides. More... | |
std::vector< BCTuple > | build_side_list () const |
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 |
Creates a list of active element numbers, sides, and ids for those sides. More... | |
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > | build_active_side_list () const |
As above, but the library creates and fills in a vector of (elem-id, side-id, bc-id) triplets and returns it to the user, taking advantage of guaranteed RVO. More... | |
void | build_edge_list (std::vector< dof_id_type > &element_id_list, std::vector< unsigned short int > &edge_list, std::vector< boundary_id_type > &bc_id_list) const |
Creates a list of element numbers, edges, and boundary ids for those edges. More... | |
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > | build_edge_list () const |
As above, but the library creates and fills in a vector of (elem-id, side-id, bc-id) triplets and returns it to the user, taking advantage of guaranteed RVO. More... | |
void | build_shellface_list (std::vector< dof_id_type > &element_id_list, std::vector< unsigned short int > &shellface_list, std::vector< boundary_id_type > &bc_id_list) const |
Creates a list of element numbers, shellfaces, and boundary ids for those shellfaces. More... | |
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > | build_shellface_list () const |
As above, but the library creates and fills in a vector of (elem-id, side-id, bc-id) triplets and returns it to the user, taking advantage of guaranteed RVO. More... | |
const std::set< boundary_id_type > & | get_boundary_ids () const |
const std::set< boundary_id_type > & | get_side_boundary_ids () const |
const std::set< boundary_id_type > & | get_edge_boundary_ids () const |
const std::set< boundary_id_type > & | get_shellface_boundary_ids () const |
const std::set< boundary_id_type > & | get_node_boundary_ids () const |
void | print_info (std::ostream &out=libMesh::out) const |
Prints the boundary information data structure. More... | |
void | print_summary (std::ostream &out=libMesh::out) const |
Prints a summary of the boundary information. More... | |
const std::string & | get_sideset_name (boundary_id_type id) const |
std::string & | sideset_name (boundary_id_type id) |
const std::string & | get_nodeset_name (boundary_id_type id) const |
std::string & | nodeset_name (boundary_id_type id) |
const std::string & | get_edgeset_name (boundary_id_type id) const |
std::string & | edgeset_name (boundary_id_type id) |
boundary_id_type | get_id_by_name (const std::string &name) const |
std::map< boundary_id_type, std::string > & | set_sideset_name_map () |
const std::map< boundary_id_type, std::string > & | get_sideset_name_map () const |
std::map< boundary_id_type, std::string > & | set_nodeset_name_map () |
const std::map< boundary_id_type, std::string > & | get_nodeset_name_map () const |
std::map< boundary_id_type, std::string > & | set_edgeset_name_map () |
const std::map< boundary_id_type, std::string > & | get_edgeset_name_map () const |
const Parallel::Communicator & | comm () const |
processor_id_type | n_processors () const |
processor_id_type | processor_id () const |
Static Public Attributes | |
static const boundary_id_type | invalid_id = -123 |
Number used for internal use. More... | |
Protected Member Functions | |
BoundaryInfo (MeshBase &m) | |
Constructor. More... | |
Protected Attributes | |
const Parallel::Communicator & | _communicator |
Private Member Functions | |
void | _find_id_maps (const std::set< boundary_id_type > &requested_boundary_ids, dof_id_type first_free_node_id, std::map< dof_id_type, dof_id_type > *node_id_map, dof_id_type first_free_elem_id, std::map< std::pair< dof_id_type, unsigned char >, dof_id_type > *side_id_map, const std::set< subdomain_id_type > &subdomains_relative_to) |
Helper method for finding consistent maps of interior to boundary dof_object ids. More... | |
Private Attributes | |
MeshBase & | _mesh |
The Mesh this boundary info pertains to. More... | |
std::multimap< const Node *, boundary_id_type > | _boundary_node_id |
Data structure that maps nodes in the mesh to boundary ids. More... | |
std::multimap< const Elem *, std::pair< unsigned short int, boundary_id_type > > | _boundary_edge_id |
Data structure that maps edges of elements to boundary ids. More... | |
std::multimap< const Elem *, std::pair< unsigned short int, boundary_id_type > > | _boundary_shellface_id |
Data structure that maps faces of shell elements to boundary ids. More... | |
std::multimap< const Elem *, std::pair< unsigned short int, boundary_id_type > > | _boundary_side_id |
Data structure that maps sides of elements to boundary ids. More... | |
std::set< boundary_id_type > | _boundary_ids |
A collection of user-specified boundary ids for sides, edges, nodes, and shell faces. More... | |
std::set< boundary_id_type > | _side_boundary_ids |
Set of user-specified boundary IDs for sides only. More... | |
std::set< boundary_id_type > | _edge_boundary_ids |
Set of user-specified boundary IDs for edges only. More... | |
std::set< boundary_id_type > | _node_boundary_ids |
Set of user-specified boundary IDs for nodes only. More... | |
std::set< boundary_id_type > | _shellface_boundary_ids |
Set of user-specified boundary IDs for shellfaces only. More... | |
std::map< boundary_id_type, std::string > | _ss_id_to_name |
This structure maintains the mapping of named side sets for file formats that support named blocks. More... | |
std::map< boundary_id_type, std::string > | _ns_id_to_name |
This structure maintains the mapping of named node sets for file formats that support named blocks. More... | |
std::map< boundary_id_type, std::string > | _es_id_to_name |
This structure maintains the mapping of named edge sets for file formats that support named blocks. More... | |
Friends | |
class | MeshBase |
The BoundaryInfo
class contains information relevant to boundary conditions including storing faces, edges, and nodes on the boundary, along with ids that can be used to identify the type of boundary each entity is part of.
It can also build a mesh that just includes boundary elements/faces.
Used by the Mesh to keep track of boundary nodes and elements.
Definition at line 57 of file boundary_info.h.
typedef std::tuple<dof_id_type, unsigned short int, boundary_id_type> libMesh::BoundaryInfo::BCTuple |
As above, but the library creates and fills in a vector of (elem-id, side-id, bc-id) triplets and returns it to the user, taking advantage of guaranteed RVO.
Definition at line 704 of file boundary_info.h.
|
protected |
Constructor.
Takes a reference to the mesh. The BoundaryInfo class is only used internally by the Mesh class. A user should never instantiate this class. Therefore the constructor is protected.
Definition at line 86 of file boundary_info.C.
libMesh::BoundaryInfo::~BoundaryInfo | ( | ) |
|
private |
Helper method for finding consistent maps of interior to boundary dof_object ids.
Either node_id_map or side_id_map can be nullptr, in which case it will not be filled.
Definition at line 2403 of file boundary_info.C.
References _boundary_side_id, _mesh, libMesh::as_range(), libMesh::Elem::build_side_ptr(), libMesh::ParallelObject::comm(), libMesh::MeshBase::elements_begin(), libMesh::MeshBase::elements_end(), libMesh::DofObject::id(), invalid_id, libMesh::DofObject::invalid_processor_id, libMesh::Elem::invalid_subdomain_id, libMesh::libmesh_assert(), libMesh::ParallelObject::n_processors(), libMesh::Elem::neighbor_ptr(), libMesh::MeshBase::pid_elements_begin(), libMesh::MeshBase::pid_elements_end(), libMesh::ParallelObject::processor_id(), libMesh::DofObject::processor_id(), libMesh::Elem::side_index_range(), libMesh::Elem::subdomain_id(), and libMesh::Elem::top_parent().
Referenced by add_elements(), and sync().
void libMesh::BoundaryInfo::add_edge | ( | const dof_id_type | elem, |
const unsigned short int | edge, | ||
const boundary_id_type | id | ||
) |
Add edge edge
of element number elem
with boundary id id
to the boundary information data structure.
Edge-based boundary IDs should only be used in 3D.
Definition at line 707 of file boundary_info.C.
References _mesh, and libMesh::MeshBase::elem_ptr().
Referenced by libMesh::MeshTools::Modification::change_boundary_id(), copy_boundary_ids(), main(), libMesh::ExodusII_IO_Helper::read_edge_blocks(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::ReplicatedMesh::stitching_helper(), SystemsTest::testBoundaryProjectCube(), BoundaryInfoTest::testEdgeBoundaryConditions(), WriteEdgesetData::testWrite(), and libMesh::Parallel::Packing< Elem * >::unpack().
void libMesh::BoundaryInfo::add_edge | ( | const Elem * | elem, |
const unsigned short int | edge, | ||
const boundary_id_type | id | ||
) |
Add edge edge
of element elem
with boundary id id
to the boundary information data structure.
Edge-based boundary IDs should only be used in 3D.
Definition at line 716 of file boundary_info.C.
References _boundary_edge_id, _boundary_ids, _edge_boundary_ids, libMesh::as_range(), invalid_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
void libMesh::BoundaryInfo::add_edge | ( | const Elem * | elem, |
const unsigned short int | edge, | ||
const std::vector< boundary_id_type > & | ids | ||
) |
Add edge edge
of element elem
with boundary ids ids
to the boundary information data structure.
Edge-based boundary IDs should only be used in 3D.
Definition at line 743 of file boundary_info.C.
References _boundary_edge_id, _boundary_ids, _edge_boundary_ids, libMesh::as_range(), invalid_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
void libMesh::BoundaryInfo::add_elements | ( | const std::set< boundary_id_type > & | requested_boundary_ids, |
UnstructuredMesh & | boundary_mesh | ||
) |
Generates elements
along the boundary of our _mesh, which use pre-existing nodes on the boundary_mesh, and which have interior_parent values properly defined.
The boundary_mesh
may be the same as the interior mesh; this generates a mesh with elements of mixed dimension.
Only boundary elements with the specified ids are created.
Definition at line 370 of file boundary_info.C.
References libMesh::Elem::invalid_subdomain_id.
void libMesh::BoundaryInfo::add_elements | ( | const std::set< boundary_id_type > & | requested_boundary_ids, |
UnstructuredMesh & | boundary_mesh, | ||
const std::set< subdomain_id_type > & | subdomains_relative_to | ||
) |
Same as the add_elements() function above, but takes a set of subdomains for which the sides must be relative to.
This is necessary to avoid double-adding sides of internal sidesets to the BoundaryMesh.
Definition at line 384 of file boundary_info.C.
References _boundary_side_id, _find_id_maps(), _mesh, libMesh::MeshBase::add_elem(), libMesh::as_range(), libMesh::Elem::build_side_ptr(), libMesh::MeshBase::elem_ptr(), libMesh::MeshBase::element_ptr_range(), libMesh::DofObject::id(), libMesh::Elem::INACTIVE, invalid_id, libMesh::Elem::invalid_subdomain_id, libMesh::Elem::is_node_on_side(), libMesh::MeshBase::is_serial(), libMesh::libmesh_assert(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_ids(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::MeshBase::max_elem_id(), n_nodes, libMesh::Elem::n_nodes(), libMesh::Elem::n_sides(), libMesh::Elem::n_vertices(), libMesh::Elem::neighbor_ptr(), libMesh::Elem::node_ptr(), libMesh::MeshBase::parallel_max_unique_id(), libMesh::Elem::parent(), libMesh::Elem::point(), libMesh::ParallelObject::processor_id(), libMesh::DofObject::processor_id(), libMesh::remote_elem, libMesh::Elem::set_interior_parent(), libMesh::Elem::set_neighbor(), libMesh::Elem::set_parent(), libMesh::Elem::side_index_range(), and libMesh::Elem::top_parent().
void libMesh::BoundaryInfo::add_node | ( | const dof_id_type | node, |
const boundary_id_type | id | ||
) |
Add node number node
with boundary id id
to the boundary information data structures.
Definition at line 621 of file boundary_info.C.
References _mesh, add_node(), and libMesh::MeshBase::query_node_ptr().
void libMesh::BoundaryInfo::add_node | ( | const Node * | node, |
const boundary_id_type | id | ||
) |
Add Node
node
with boundary id id
to the boundary information data structures.
Definition at line 636 of file boundary_info.C.
References _boundary_ids, _boundary_node_id, _node_boundary_ids, libMesh::as_range(), and invalid_id.
Referenced by libMesh::MeshTools::Subdivision::add_boundary_ghosts(), add_node(), libMesh::AbaqusIO::assign_boundary_node_ids(), libMesh::MeshTools::Generation::build_extrusion(), build_node_list_from_side_list(), libMesh::MeshTools::Modification::change_boundary_id(), main(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::GmshIO::read_mesh(), libMesh::CheckpointIO::read_nodesets(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::ReplicatedMesh::stitching_helper(), sync(), SystemsTest::testBoundaryProjectCube(), and libMesh::Parallel::Packing< Node * >::unpack().
void libMesh::BoundaryInfo::add_node | ( | const Node * | node, |
const std::vector< boundary_id_type > & | ids | ||
) |
Add Node
node
with boundary ids ids
to the boundary information data structure.
Definition at line 656 of file boundary_info.C.
References _boundary_ids, _boundary_node_id, _node_boundary_ids, libMesh::as_range(), invalid_id, and libMesh::libmesh_assert().
void libMesh::BoundaryInfo::add_shellface | ( | const dof_id_type | elem, |
const unsigned short int | shellface, | ||
const boundary_id_type | id | ||
) |
Add shell face shellface
of element number elem
with boundary id id
to the boundary information data structure.
This is only relevant for shell elements.
Definition at line 794 of file boundary_info.C.
References _mesh, and libMesh::MeshBase::elem_ptr().
Referenced by libMesh::MeshTools::Modification::change_boundary_id(), copy_boundary_ids(), libMesh::ExodusII_IO::read(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::ReplicatedMesh::stitching_helper(), BoundaryInfoTest::testShellFaceConstraints(), and libMesh::Parallel::Packing< Elem * >::unpack().
void libMesh::BoundaryInfo::add_shellface | ( | const Elem * | elem, |
const unsigned short int | shellface, | ||
const boundary_id_type | id | ||
) |
Add shell face shellface
of element elem
with boundary id id
to the boundary information data structure.
This is only relevant for shell elements.
Definition at line 803 of file boundary_info.C.
References _boundary_ids, _boundary_shellface_id, _shellface_boundary_ids, libMesh::as_range(), invalid_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
void libMesh::BoundaryInfo::add_shellface | ( | const Elem * | elem, |
const unsigned short int | shellface, | ||
const std::vector< boundary_id_type > & | ids | ||
) |
Add shell face shellface
of element elem
with boundary ids ids
to the boundary information data structure.
This is only relevant for shell elements.
Definition at line 833 of file boundary_info.C.
References _boundary_ids, _boundary_shellface_id, _shellface_boundary_ids, libMesh::as_range(), invalid_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
void libMesh::BoundaryInfo::add_side | ( | const dof_id_type | elem, |
const unsigned short int | side, | ||
const boundary_id_type | id | ||
) |
Add side side
of element number elem
with boundary id id
to the boundary information data structure.
Definition at line 886 of file boundary_info.C.
References _mesh, and libMesh::MeshBase::elem_ptr().
Referenced by libMesh::MeshTools::Subdivision::all_subdivision(), libMesh::MeshTools::Modification::all_tri(), libMesh::AbaqusIO::assign_sideset_ids(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_delaunay_square(), libMesh::MeshTools::Generation::build_extrusion(), BoundaryMeshTest::build_mesh(), build_side_list_from_node_list(), libMesh::MeshTools::Modification::change_boundary_id(), copy_boundary_ids(), libMesh::TriangleWrapper::copy_tri_to_mesh(), libMesh::UnstructuredMesh::create_submesh(), libMesh::MeshTools::Modification::flatten(), libMesh::UNVIO::groups_in(), main(), libMesh::Nemesis_IO::read(), libMesh::ExodusII_IO::read(), libMesh::CheckpointIO::read_bcs(), libMesh::GmshIO::read_mesh(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::ReplicatedMesh::stitching_helper(), and libMesh::Parallel::Packing< Elem * >::unpack().
void libMesh::BoundaryInfo::add_side | ( | const Elem * | elem, |
const unsigned short int | side, | ||
const boundary_id_type | id | ||
) |
Add side side
of element elem
with boundary id id
to the boundary information data structure.
Definition at line 895 of file boundary_info.C.
References _boundary_ids, _boundary_side_id, _side_boundary_ids, libMesh::as_range(), invalid_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
void libMesh::BoundaryInfo::add_side | ( | const Elem * | elem, |
const unsigned short int | side, | ||
const std::vector< boundary_id_type > & | ids | ||
) |
Add side side
of element elem
with boundary ids ids
to the boundary information data structure.
Definition at line 922 of file boundary_info.C.
References _boundary_ids, _boundary_side_id, _side_boundary_ids, libMesh::as_range(), invalid_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
boundary_id_type libMesh::BoundaryInfo::boundary_id | ( | const Elem *const | elem, |
const unsigned short int | side | ||
) | const |
side
side of element elem
, or invalid_id
if the side
does not have an associated boundary id.Definition at line 1201 of file boundary_info.C.
References boundary_ids(), and invalid_id.
std::vector< boundary_id_type > libMesh::BoundaryInfo::boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | side | ||
) | const |
side
side of element elem
.Definition at line 1233 of file boundary_info.C.
References boundary_ids().
void libMesh::BoundaryInfo::boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | side, | ||
std::vector< boundary_id_type > & | vec_to_fill | ||
) | const |
side
side of element elem
.This is the non-deprecated version of the function.
Definition at line 1246 of file boundary_info.C.
References _boundary_side_id, libMesh::as_range(), libMesh::Elem::is_child_on_side(), libMesh::Elem::level(), libMesh::libmesh_assert(), libMesh::Elem::neighbor_ptr(), libMesh::Elem::parent(), libMesh::Elem::top_parent(), and libMesh::Elem::which_child_am_i().
std::vector< boundary_id_type > libMesh::BoundaryInfo::boundary_ids | ( | const Node * | node | ) | const |
Node
node
.Definition at line 985 of file boundary_info.C.
Referenced by libMesh::MeshTools::Subdivision::all_subdivision(), libMesh::MeshTools::Modification::all_tri(), assemble_elasticity(), AssemblyA0::boundary_assembly(), AssemblyA1::boundary_assembly(), AssemblyA2::boundary_assembly(), boundary_id(), boundary_ids(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Generation::build_extrusion(), build_node_list_from_side_list(), libMesh::MeshTools::Modification::change_boundary_id(), libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints(), libMesh::UnstructuredMesh::create_submesh(), libMesh::MeshTools::Modification::flatten(), has_boundary_id(), main(), n_boundary_ids(), libMesh::BoundaryProjectSolution::operator()(), libMesh::Parallel::Packing< const Node * >::pack(), libMesh::Parallel::Packing< const Elem * >::pack(), libMesh::FEMContext::side_boundary_ids(), libMesh::ReplicatedMesh::stitching_helper(), sync(), SystemsTest::testBoundaryProjectCube(), libMesh::XdrIO::write_serialized_bcs_helper(), and libMesh::XdrIO::write_serialized_nodesets().
void libMesh::BoundaryInfo::boundary_ids | ( | const Node * | node, |
std::vector< boundary_id_type > & | vec_to_fill | ||
) | const |
Fills a user-provided std::vector with the boundary ids associated with Node
node
.
This is the non-deprecated version of the function.
Definition at line 997 of file boundary_info.C.
References _boundary_node_id, and libMesh::as_range().
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > libMesh::BoundaryInfo::build_active_side_list | ( | ) | const |
As above, but the library creates and fills in a vector of (elem-id, side-id, bc-id) triplets and returns it to the user, taking advantage of guaranteed RVO.
Definition at line 2058 of file boundary_info.C.
References _boundary_side_id.
Referenced by build_active_side_list().
void libMesh::BoundaryInfo::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 |
Creates a list of active element numbers, sides, and ids for those sides.
On a ReplicatedMesh this will include all sides; on a DistributedMesh only sides of semilocal elements will be included.
Definition at line 2027 of file boundary_info.C.
References build_active_side_list().
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > libMesh::BoundaryInfo::build_edge_list | ( | ) | const |
As above, but the library creates and fills in a vector of (elem-id, side-id, bc-id) triplets and returns it to the user, taking advantage of guaranteed RVO.
Definition at line 2122 of file boundary_info.C.
References _boundary_edge_id.
Referenced by build_edge_list().
void libMesh::BoundaryInfo::build_edge_list | ( | std::vector< dof_id_type > & | element_id_list, |
std::vector< unsigned short int > & | edge_list, | ||
std::vector< boundary_id_type > & | bc_id_list | ||
) | const |
Creates a list of element numbers, edges, and boundary ids for those edges.
On a ReplicatedMesh this will include all edges; on a DistributedMesh only edges of semilocal elements will be included.
Definition at line 2091 of file boundary_info.C.
References build_edge_list().
Referenced by libMesh::MeshTools::Modification::change_boundary_id(), libMesh::ReplicatedMesh::stitching_helper(), WriteEdgesetData::testWrite(), and libMesh::ExodusII_IO_Helper::write_elements().
void libMesh::BoundaryInfo::build_node_boundary_ids | ( | std::vector< boundary_id_type > & | b_ids | ) | const |
Builds the list of unique node boundary ids.
On a ReplicatedMesh this will be all ids; on a DistributedMesh only ids on semilocal nodes will be included.
Definition at line 1574 of file boundary_info.C.
References _boundary_node_id.
Referenced by libMesh::ExodusII_IO_Helper::initialize().
std::vector< std::tuple< dof_id_type, boundary_id_type > > libMesh::BoundaryInfo::build_node_list | ( | ) | const |
As above, but the library creates and fills in a vector of (node-id, bc-id) pairs and returns it to the user, taking advantage of guaranteed RVO.
Note: we could use std::pairs for this, but for consistency with the other build_XYZ_list functions, we're using tuples.
Definition at line 1731 of file boundary_info.C.
References _boundary_node_id.
Referenced by build_node_list().
void libMesh::BoundaryInfo::build_node_list | ( | std::vector< dof_id_type > & | node_id_list, |
std::vector< boundary_id_type > & | bc_id_list | ||
) | const |
Creates a list of nodes and ids for those nodes.
On a ReplicatedMesh this will include all nodes; on a DistributedMesh only semilocal nodes will be included.
Definition at line 1704 of file boundary_info.C.
References build_node_list().
Referenced by libMesh::MeshTools::Modification::change_boundary_id(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::ReplicatedMesh::stitching_helper(), and libMesh::CheckpointIO::write().
void libMesh::BoundaryInfo::build_node_list_from_side_list | ( | ) |
Adds nodes with boundary ids based on the side's boundary ids they are connected to.
Definition at line 1748 of file boundary_info.C.
References _boundary_side_id, _mesh, add_node(), boundary_ids(), libMesh::ParallelObject::comm(), libMesh::MeshBase::is_serial(), libMesh::ParallelObject::n_processors(), libMesh::MeshBase::node_ptr(), libMesh::MeshBase::node_ptr_range(), and libMesh::ParallelObject::processor_id().
void libMesh::BoundaryInfo::build_shellface_boundary_ids | ( | std::vector< boundary_id_type > & | b_ids | ) | const |
Builds the list of unique shellface boundary ids.
On a ReplicatedMesh this will be all ids; on a DistributedMesh only ids on shellfaces of semilocal elements will be included.
Definition at line 1602 of file boundary_info.C.
References _boundary_shellface_id.
Referenced by libMesh::ExodusII_IO_Helper::initialize().
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > libMesh::BoundaryInfo::build_shellface_list | ( | ) | const |
As above, but the library creates and fills in a vector of (elem-id, side-id, bc-id) triplets and returns it to the user, taking advantage of guaranteed RVO.
Definition at line 2170 of file boundary_info.C.
References _boundary_shellface_id.
Referenced by build_shellface_list().
void libMesh::BoundaryInfo::build_shellface_list | ( | std::vector< dof_id_type > & | element_id_list, |
std::vector< unsigned short int > & | shellface_list, | ||
std::vector< boundary_id_type > & | bc_id_list | ||
) | const |
Creates a list of element numbers, shellfaces, and boundary ids for those shellfaces.
On a ReplicatedMesh this will include all shellfaces; on a DistributedMesh only shellfaces of semilocal elements will be included.
Definition at line 2139 of file boundary_info.C.
References build_shellface_list().
Referenced by libMesh::MeshTools::Modification::change_boundary_id(), and libMesh::ReplicatedMesh::stitching_helper().
void libMesh::BoundaryInfo::build_side_boundary_ids | ( | std::vector< boundary_id_type > & | b_ids | ) | const |
Builds the list of unique side boundary ids.
On a ReplicatedMesh this will be all ids; on a DistributedMesh only ids on sides of semilocal elements will be included.
Definition at line 1588 of file boundary_info.C.
References _boundary_side_id.
Referenced by libMesh::ExodusII_IO_Helper::initialize().
std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > libMesh::BoundaryInfo::build_side_list | ( | ) | const |
Definition at line 2007 of file boundary_info.C.
References _boundary_side_id.
Referenced by build_side_list().
void libMesh::BoundaryInfo::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 |
Creates a list of element numbers, sides, and ids for those sides.
On a ReplicatedMesh this will include all sides; on a DistributedMesh only sides of semilocal elements will be included.
Definition at line 1976 of file boundary_info.C.
References build_side_list().
Referenced by libMesh::MeshTools::Modification::change_boundary_id(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::ReplicatedMesh::stitching_helper(), BoundaryInfoTest::testMesh(), WriteEdgesetData::testWrite(), WriteSidesetData::testWrite(), libMesh::FroIO::write(), libMesh::CheckpointIO::write(), and libMesh::GmshIO::write_mesh().
void libMesh::BoundaryInfo::build_side_list_from_node_list | ( | ) |
Adds sides to a sideset if every node on that side are in the same sideset.
Definition at line 1928 of file boundary_info.C.
References _boundary_node_id, _mesh, libMesh::MeshBase::active_element_ptr_range(), add_side(), libMesh::as_range(), nodeset_name(), libMesh::out, and sideset_name().
Referenced by libMesh::AbaqusIO::read().
void libMesh::BoundaryInfo::clear | ( | ) |
Clears the underlying data structures and restores the object to a pristine state with no data stored.
Definition at line 144 of file boundary_info.C.
References _boundary_edge_id, _boundary_ids, _boundary_node_id, _boundary_shellface_id, _boundary_side_id, _edge_boundary_ids, _node_boundary_ids, _shellface_boundary_ids, and _side_boundary_ids.
Referenced by operator=(), and ~BoundaryInfo().
void libMesh::BoundaryInfo::clear_boundary_node_ids | ( | ) |
Clears all the boundary information from all of the nodes in the mesh.
Definition at line 702 of file boundary_info.C.
References _boundary_node_id.
|
inlineinherited |
Parallel::Communicator
object used by this mesh. Definition at line 94 of file parallel_object.h.
References libMesh::ParallelObject::_communicator.
Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_tao_equality_constraints(), libMesh::__libmesh_tao_equality_constraints_jacobian(), libMesh::__libmesh_tao_gradient(), libMesh::__libmesh_tao_hessian(), libMesh::__libmesh_tao_inequality_constraints(), libMesh::__libmesh_tao_inequality_constraints_jacobian(), libMesh::__libmesh_tao_objective(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), _find_id_maps(), libMesh::PetscLinearSolver< Number >::_petsc_shell_matrix_get_diagonal(), libMesh::SlepcEigenSolver< libMesh::Number >::_petsc_shell_matrix_get_diagonal(), libMesh::PetscLinearSolver< Number >::_petsc_shell_matrix_mult(), libMesh::SlepcEigenSolver< libMesh::Number >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< Number >::_petsc_shell_matrix_mult_add(), libMesh::EquationSystems::_read_impl(), libMesh::MeshRefinement::_refine_elements(), libMesh::MeshRefinement::_smooth_flags(), libMesh::DofMap::add_constraints_to_send_list(), add_cube_convex_hull_to_mesh(), libMesh::PetscDMWrapper::add_dofs_helper(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::TransientRBConstruction::add_IC_to_RB_space(), libMesh::ImplicitSystem::add_matrix(), libMesh::RBConstruction::add_scaled_matrix_and_vector(), libMesh::DynaIO::add_spline_constraints(), libMesh::System::add_vector(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::TransientRBConstruction::allocate_data_structures(), libMesh::RBConstruction::allocate_data_structures(), libMesh::TransientRBConstruction::assemble_affine_expansion(), libMesh::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::DofMap::attach_matrix(), libMesh::MeshTools::Generation::build_extrusion(), build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::PetscDMWrapper::build_section(), libMesh::PetscDMWrapper::build_sf(), libMesh::System::calculate_norm(), libMesh::DofMap::check_dirichlet_bcid_consistency(), libMesh::RBConstruction::compute_Fq_representor_innerprods(), libMesh::RBConstruction::compute_max_error_bound(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::RBConstruction::compute_output_dual_innerprods(), libMesh::RBConstruction::compute_residual_dual_norm_slow(), libMesh::RBSCMConstruction::compute_SCM_bounds_on_training_set(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::create_bounding_box(), libMesh::DofMap::create_dof_constraints(), libMesh::MeshTools::create_nodal_bounding_box(), libMesh::MeshRefinement::create_parent_error_vector(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::MeshTools::create_subdomain_bounding_box(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMlibMeshSetSystem_libMesh(), DMVariableBounds_libMesh(), libMesh::DTKSolutionTransfer::DTKSolutionTransfer(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::RBEIMConstruction::enrich_RB_space(), libMesh::TransientRBConstruction::enrich_RB_space(), libMesh::RBConstruction::enrich_RB_space(), libMesh::EpetraVector< T >::EpetraVector(), AssembleOptimization::equality_constraints(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::RBEIMConstruction::evaluate_mesh_function(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_error_tolerance(), libMesh::MeshRefinement::flag_elements_by_mean_stddev(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::DofMap::gather_constraints(), libMesh::MeshfreeInterpolation::gather_remote_data(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::DofMap::get_info(), libMesh::ImplicitSystem::get_linear_solver(), AssembleOptimization::inequality_constraints(), AssembleOptimization::inequality_constraints_jacobian(), libMesh::LocationMap< T >::init(), libMesh::TimeSolver::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::EigenSystem::init_matrices(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::RBEIMConstruction::initialize_rb_construction(), integrate_function(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_flags(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_p_levels(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_unique_ids(), libMesh::libmesh_petsc_preconditioner_apply(), libMesh::libmesh_petsc_snes_fd_residual(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_mffd_residual(), libMesh::libmesh_petsc_snes_postcheck(), libMesh::libmesh_petsc_snes_residual(), libMesh::libmesh_petsc_snes_residual_helper(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::limit_overrefined_boundary(), libMesh::MeshRefinement::limit_underrefined_boundary(), main(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_new_nodes_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshCommunication::make_p_levels_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::TransientRBConstruction::mass_matrix_scaled_matvec(), libMesh::FEMSystem::mesh_position_set(), LinearElasticityWithContact::move_mesh(), libMesh::DistributedMesh::n_active_elem(), libMesh::MeshTools::n_active_levels(), n_boundary_conds(), libMesh::DofMap::n_constrained_dofs(), n_edge_conds(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::MeshTools::n_levels(), n_nodeset_conds(), libMesh::MeshTools::n_p_levels(), n_shellface_conds(), libMesh::DistributedMesh::parallel_max_elem_id(), libMesh::DistributedMesh::parallel_max_node_id(), libMesh::ReplicatedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_n_elem(), libMesh::DistributedMesh::parallel_n_nodes(), libMesh::SparsityPattern::Build::parallel_sync(), libMesh::MeshTools::paranoid_n_levels(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::DofMap::print_dof_constraints(), FEMParameters::read(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::RBEvaluation::read_in_vectors_from_multiple_files(), libMesh::System::read_legacy_data(), libMesh::TransientRBConstruction::read_riesz_representors_from_files(), libMesh::RBConstruction::read_riesz_representors_from_files(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::DistributedMesh::renumber_dof_objects(), LinearElasticityWithContact::residual_and_jacobian(), OverlappingAlgebraicGhostingTest::run_ghosting_test(), OverlappingCouplingGhostingTest::run_sparsity_pattern_test(), libMesh::DofMap::scatter_constraints(), libMesh::CheckpointIO::select_split_config(), libMesh::TransientRBConstruction::set_error_temporal_data(), libMesh::RBEIMConstruction::set_explicit_sys_subvector(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::PetscDiffSolver::setup_petsc_data(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::split_mesh(), sync(), libMesh::MeshRefinement::test_level_one(), MeshfunctionDFEM::test_mesh_function_dfem(), MeshfunctionDFEM::test_mesh_function_dfem_grad(), MeshFunctionTest::test_p_level(), libMesh::MeshRefinement::test_unflagged(), SystemsTest::testBlockRestrictedVarNDofs(), PointLocatorTest::testLocator(), BoundaryInfoTest::testMesh(), SystemsTest::testProjectCubeWithMeshFunction(), CheckpointIOTest::testSplitter(), libMesh::MeshTools::total_weight(), libMesh::MeshFunctionSolutionTransfer::transfer(), libMesh::MeshfreeSolutionTransfer::transfer(), libMesh::TransientRBConstruction::truth_assembly(), libMesh::RBConstruction::truth_assembly(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::TransientRBConstruction::update_RB_initial_condition_all_N(), libMesh::RBEIMConstruction::update_RB_system_matrices(), libMesh::TransientRBConstruction::update_RB_system_matrices(), libMesh::RBConstruction::update_RB_system_matrices(), libMesh::TransientRBConstruction::update_residual_terms(), libMesh::RBConstruction::update_residual_terms(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::VTKIO::write_nodal_data(), libMesh::RBEvaluation::write_out_vectors(), libMesh::TransientRBConstruction::write_riesz_representors_to_files(), libMesh::RBConstruction::write_riesz_representors_to_files(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::RBDataSerialization::RBEvaluationSerialization::write_to_file(), libMesh::RBDataSerialization::TransientRBEvaluationSerialization::write_to_file(), libMesh::RBDataSerialization::RBEIMEvaluationSerialization::write_to_file(), and libMesh::RBDataSerialization::RBSCMEvaluationSerialization::write_to_file().
void libMesh::BoundaryInfo::copy_boundary_ids | ( | const BoundaryInfo & | old_boundary_info, |
const Elem *const | old_elem, | ||
const Elem *const | new_elem | ||
) |
Definition at line 1328 of file boundary_info.C.
References add_edge(), add_shellface(), add_side(), libMesh::Elem::edge_index_range(), libMesh::Elem::n_edges(), libMesh::Elem::n_sides(), raw_boundary_ids(), raw_edge_boundary_ids(), raw_shellface_boundary_ids(), and libMesh::Elem::side_index_range().
Referenced by libMesh::UnstructuredMesh::all_first_order(), and libMesh::UnstructuredMesh::all_second_order().
std::vector< boundary_id_type > libMesh::BoundaryInfo::edge_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | edge | ||
) | const |
edge
edge of element elem
.Definition at line 1018 of file boundary_info.C.
Referenced by libMesh::MeshTools::Modification::change_boundary_id(), n_edge_boundary_ids(), libMesh::BoundaryProjectSolution::operator()(), libMesh::Parallel::Packing< const Elem * >::pack(), libMesh::ReplicatedMesh::stitching_helper(), and libMesh::XdrIO::write_serialized_bcs_helper().
void libMesh::BoundaryInfo::edge_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | edge, | ||
std::vector< boundary_id_type > & | vec_to_fill | ||
) | const |
edge
edge of element elem
.This is the non-deprecated version of the function.
Definition at line 1031 of file boundary_info.C.
References _boundary_edge_id, libMesh::as_range(), libMesh::Elem::is_child_on_edge(), libMesh::Elem::is_edge_on_side(), libMesh::Elem::level(), libMesh::libmesh_assert(), libMesh::Elem::neighbor_ptr(), libMesh::Elem::parent(), libMesh::Elem::side_index_range(), libMesh::Elem::top_parent(), and libMesh::Elem::which_child_am_i().
std::string & libMesh::BoundaryInfo::edgeset_name | ( | boundary_id_type | id | ) |
Definition at line 2374 of file boundary_info.C.
References _es_id_to_name.
Referenced by libMesh::ExodusII_IO_Helper::read_edge_blocks(), and WriteEdgesetData::testWrite().
|
inline |
DistributedMesh-compatible code may need a set_union or other manipulations to work with sets of boundary ids which include ids on remote parts of the mesh.
Definition at line 787 of file boundary_info.h.
References _boundary_ids.
Referenced by libMesh::DofMap::check_dirichlet_bcid_consistency(), BoundaryInfoTest::testMesh(), and libMesh::FroIO::write().
|
inline |
Definition at line 803 of file boundary_info.h.
References _edge_boundary_ids.
Referenced by libMesh::ExodusII_IO_Helper::initialize(), and WriteEdgesetData::testWrite().
const std::string & libMesh::BoundaryInfo::get_edgeset_name | ( | boundary_id_type | id | ) | const |
Definition at line 2362 of file boundary_info.C.
References _es_id_to_name.
Referenced by libMesh::ExodusII_IO_Helper::write_elements().
|
inline |
boundary_id_type libMesh::BoundaryInfo::get_id_by_name | ( | const std::string & | name | ) | const |
invalid_id
otherwise. Definition at line 2379 of file boundary_info.C.
References _es_id_to_name, _ns_id_to_name, _ss_id_to_name, invalid_id, and libMesh::Quality::name().
|
inline |
Definition at line 819 of file boundary_info.h.
References _node_boundary_ids.
Referenced by libMesh::Nemesis_IO_Helper::compute_num_global_nodesets().
const std::string & libMesh::BoundaryInfo::get_nodeset_name | ( | boundary_id_type | id | ) | const |
Definition at line 2346 of file boundary_info.C.
References _ns_id_to_name.
|
inline |
Definition at line 884 of file boundary_info.h.
References _ns_id_to_name.
Referenced by libMesh::CheckpointIO::write_bc_names(), and libMesh::XdrIO::write_serialized_bc_names().
|
inline |
Definition at line 812 of file boundary_info.h.
References _shellface_boundary_ids.
void libMesh::BoundaryInfo::get_side_and_node_maps | ( | UnstructuredMesh & | boundary_mesh, |
std::map< dof_id_type, dof_id_type > & | node_id_map, | ||
std::map< dof_id_type, unsigned char > & | side_id_map, | ||
Real | tolerance = 1.e-6 |
||
) |
Suppose we have used sync to create boundary_mesh
.
Then each element in boundary_mesh
will have interior_parent defined. This method gets extra data for us:
node_id_map
stores a map from the node ids on the interior mesh to the corresponding node ids of boundary_mesh
.side_id_map
stores a map from the element ids of the boundary mesh to the side index of the interior_parent that the boundary element corresponds to. tolerance
is used to identify when we have matching elements. Definition at line 319 of file boundary_info.C.
References libMesh::MeshBase::active_element_ptr_range(), libMesh::Elem::build_side_ptr(), libMesh::Elem::interior_parent(), std::norm(), libMesh::Real, and libMesh::Elem::side_index_range().
|
inline |
Definition at line 794 of file boundary_info.h.
References _side_boundary_ids.
Referenced by libMesh::MeshTools::Generation::build_extrusion(), and libMesh::Nemesis_IO_Helper::compute_num_global_sidesets().
const std::string & libMesh::BoundaryInfo::get_sideset_name | ( | boundary_id_type | id | ) | const |
Definition at line 2329 of file boundary_info.C.
References _ss_id_to_name.
|
inline |
Definition at line 876 of file boundary_info.h.
References _ss_id_to_name.
Referenced by libMesh::CheckpointIO::write_bc_names(), and libMesh::XdrIO::write_serialized_bc_names().
bool libMesh::BoundaryInfo::has_boundary_id | ( | const Elem *const | elem, |
const unsigned short int | side, | ||
const boundary_id_type | id | ||
) | const |
true
if side side
of Elem elem
is associated with id
. Definition at line 1221 of file boundary_info.C.
References boundary_ids().
bool libMesh::BoundaryInfo::has_boundary_id | ( | const Node *const | node, |
const boundary_id_type | id | ||
) | const |
true
if node
is associated with boundary id
. Definition at line 972 of file boundary_info.C.
References _boundary_node_id, and libMesh::as_range().
Referenced by LinearElasticity::assemble(), assemble_elasticity(), assemble_poisson(), AssemblyF0::boundary_assembly(), AssemblyF1::boundary_assembly(), AssemblyF2::boundary_assembly(), libMesh::FEMContext::has_side_boundary_id(), LinearElasticityWithContact::initialize_contact_load_paths(), main(), AugmentSparsityOnInterface::mesh_reinit(), SystemsTest::testBoundaryProjectCube(), and BoundaryInfoTest::testEdgeBoundaryConditions().
std::size_t libMesh::BoundaryInfo::n_boundary_conds | ( | ) | const |
This will be the correct global count even on a distributed mesh.
Definition at line 1615 of file boundary_info.C.
References _boundary_side_id, _mesh, libMesh::ParallelObject::comm(), libMesh::MeshBase::is_serial(), and libMesh::ParallelObject::processor_id().
Referenced by libMesh::MeshTools::Modification::all_tri(), libMesh::MeshTools::Modification::flatten(), libMesh::AbaqusIO::read(), libMesh::Nemesis_IO::read(), AllTriTest::test_helper_2D(), AllTriTest::test_helper_3D(), libMesh::XdrIO::write(), and libMesh::GmshIO::write_mesh().
|
inline |
Definition at line 360 of file boundary_info.h.
References _boundary_ids.
Referenced by libMesh::MeshTools::Subdivision::all_subdivision(), libMesh::Parallel::Packing< const Node * >::packable_size(), libMesh::Parallel::Packing< const Elem * >::packable_size(), BoundaryInfoTest::testMesh(), and libMesh::FroIO::write().
unsigned int libMesh::BoundaryInfo::n_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | side | ||
) | const |
side
side of element elem
. Definition at line 1283 of file boundary_info.C.
References boundary_ids().
Node
node
. Definition at line 1009 of file boundary_info.C.
References _boundary_node_id, and distance().
unsigned int libMesh::BoundaryInfo::n_edge_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | edge | ||
) | const |
edge
edge of element elem
.Definition at line 1088 of file boundary_info.C.
References edge_boundary_ids().
Referenced by libMesh::Parallel::Packing< const Elem * >::packable_size().
std::size_t libMesh::BoundaryInfo::n_edge_conds | ( | ) | const |
This will be the correct global count even on a distributed mesh.
Definition at line 1636 of file boundary_info.C.
References _boundary_edge_id, _mesh, libMesh::ParallelObject::comm(), libMesh::MeshBase::is_serial(), and libMesh::ParallelObject::processor_id().
Referenced by libMesh::ExodusII_IO_Helper::initialize(), libMesh::Nemesis_IO::prepare_to_write_nodal_data(), BoundaryInfoTest::testEdgeBoundaryConditions(), WriteEdgesetData::testWrite(), libMesh::Nemesis_IO::write(), libMesh::ExodusII_IO::write(), and libMesh::XdrIO::write().
std::size_t libMesh::BoundaryInfo::n_nodeset_conds | ( | ) | const |
This will be the correct global count even on a distributed mesh.
Definition at line 1680 of file boundary_info.C.
References _boundary_node_id, _mesh, libMesh::ParallelObject::comm(), libMesh::MeshBase::is_serial(), and libMesh::ParallelObject::processor_id().
Referenced by libMesh::RBConstruction::add_scaled_matrix_and_vector(), and libMesh::XdrIO::write().
|
inlineinherited |
Definition at line 100 of file parallel_object.h.
References libMesh::ParallelObject::_communicator.
Referenced by _find_id_maps(), libMesh::DofMap::add_constraints_to_send_list(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEMSystem::assembly(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::EnsightIO::EnsightIO(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::DistributedMesh::insert_elem(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshBase::partition(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::DofMap::prepare_send_list(), libMesh::DofMap::print_dof_constraints(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::XdrIO::read_header(), libMesh::CheckpointIO::read_nodes(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::DistributedMesh::renumber_dof_objects(), OverlappingFunctorTest::run_partitioner_test(), libMesh::DofMap::scatter_constraints(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), CheckpointIOTest::testSplitter(), WriteVecAndScalar::testWrite(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::VTKIO::write_nodal_data(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().
unsigned int libMesh::BoundaryInfo::n_shellface_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | shellface | ||
) | const |
elem
.Definition at line 1167 of file boundary_info.C.
References shellface_boundary_ids().
Referenced by libMesh::Parallel::Packing< const Elem * >::packable_size().
std::size_t libMesh::BoundaryInfo::n_shellface_conds | ( | ) | const |
This will be the correct global count even on a distributed mesh.
Definition at line 1658 of file boundary_info.C.
References _boundary_shellface_id, _mesh, libMesh::ParallelObject::comm(), libMesh::MeshBase::is_serial(), and libMesh::ParallelObject::processor_id().
Referenced by BoundaryInfoTest::testShellFaceConstraints(), and libMesh::XdrIO::write().
std::string & libMesh::BoundaryInfo::nodeset_name | ( | boundary_id_type | id | ) |
Definition at line 2357 of file boundary_info.C.
References _ns_id_to_name.
Referenced by libMesh::AbaqusIO::assign_boundary_node_ids(), libMesh::MeshTools::Generation::build_cube(), build_side_list_from_node_list(), and libMesh::ExodusII_IO::read().
BoundaryInfo & libMesh::BoundaryInfo::operator= | ( | const BoundaryInfo & | other_boundary_info | ) |
Actual copying operation.
We're going to attempt to pull new pointers out of the mesh assigned to this boundary info.
This will only work if the mesh assigned to this BoundaryInfo is the same mesh object as other_boundary_info or was constructed in exactly the same way (or constructed as a copy, or a refined copy without renumbering, etc.).
Definition at line 92 of file boundary_info.C.
References _boundary_edge_id, _boundary_ids, _boundary_node_id, _boundary_shellface_id, _boundary_side_id, _edge_boundary_ids, _mesh, _node_boundary_ids, _shellface_boundary_ids, _side_boundary_ids, clear(), libMesh::MeshBase::elem_ptr(), and libMesh::MeshBase::node_ptr().
void libMesh::BoundaryInfo::print_info | ( | std::ostream & | out = libMesh::out | ) | const |
Prints the boundary information data structure.
Definition at line 2186 of file boundary_info.C.
References _boundary_edge_id, _boundary_node_id, _boundary_shellface_id, and _boundary_side_id.
void libMesh::BoundaryInfo::print_summary | ( | std::ostream & | out = libMesh::out | ) | const |
Prints a summary of the boundary information.
Definition at line 2249 of file boundary_info.C.
References _boundary_edge_id, _boundary_node_id, _boundary_shellface_id, and _boundary_side_id.
Referenced by main().
|
inlineinherited |
Definition at line 106 of file parallel_object.h.
References libMesh::ParallelObject::_communicator.
Referenced by _find_id_maps(), libMesh::EquationSystems::_read_impl(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), add_elements(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEMSystem::assembly(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::InfElemBuilder::build_inf_elem(), build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::ExodusII_IO_Helper::close(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::compute_communication_map_parameters(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::RBConstruction::compute_max_error_bound(), libMesh::Nemesis_IO_Helper::compute_node_communication_maps(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::ExodusII_IO_Helper::create(), libMesh::DistributedMesh::delete_elem(), libMesh::DistributedMesh::delete_node(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DistributedMesh::DistributedMesh(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::RBEIMConstruction::evaluate_mesh_function(), libMesh::MeshFunction::find_element(), libMesh::MeshFunction::find_elements(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMap::first_dof(), libMesh::DofMap::first_old_dof(), libMesh::Nemesis_IO_Helper::get_cmap_params(), libMesh::Nemesis_IO_Helper::get_eb_info_global(), libMesh::Nemesis_IO_Helper::get_elem_cmap(), libMesh::Nemesis_IO_Helper::get_elem_map(), libMesh::DofMap::get_info(), libMesh::Nemesis_IO_Helper::get_init_global(), libMesh::Nemesis_IO_Helper::get_init_info(), libMesh::Nemesis_IO_Helper::get_loadbal_param(), libMesh::DofMap::get_local_constraints(), libMesh::Nemesis_IO_Helper::get_node_cmap(), libMesh::Nemesis_IO_Helper::get_node_map(), libMesh::Nemesis_IO_Helper::get_ns_param_global(), libMesh::Nemesis_IO_Helper::get_ss_param_global(), libMesh::SparsityPattern::Build::handle_vi_vj(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), HeatSystem::init_data(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_element_variables(), libMesh::ExodusII_IO_Helper::initialize_global_variables(), libMesh::ExodusII_IO_Helper::initialize_nodal_variables(), libMesh::DistributedMesh::insert_elem(), libMesh::DofMap::is_evaluable(), libMesh::SparsityPattern::Build::join(), libMesh::DofMap::last_dof(), libMesh::TransientRBEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEIMEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEvaluation::legacy_write_offline_data_to_files(), libMesh::RBSCMEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEIMEvaluation::legacy_write_out_interpolation_points_elem(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DofMap::local_variable_indices(), main(), libMesh::MeshRefinement::make_coarsening_compatible(), AugmentSparsityOnInterface::mesh_reinit(), libMesh::MeshBase::n_active_local_elem(), n_boundary_conds(), n_edge_conds(), libMesh::DofMap::n_local_dofs(), libMesh::System::n_local_dofs(), libMesh::MeshBase::n_local_elem(), libMesh::MeshBase::n_local_nodes(), n_nodeset_conds(), n_shellface_conds(), libMesh::SparsityPattern::Build::operator()(), libMesh::DistributedMesh::own_node(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::DofMap::print_dof_constraints(), libMesh::Nemesis_IO_Helper::put_cmap_params(), libMesh::Nemesis_IO_Helper::put_elem_cmap(), libMesh::Nemesis_IO_Helper::put_elem_map(), libMesh::Nemesis_IO_Helper::put_loadbal_param(), libMesh::Nemesis_IO_Helper::put_node_cmap(), libMesh::Nemesis_IO_Helper::put_node_map(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::ExodusII_IO_Helper::read_global_values(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::RBEvaluation::read_in_vectors_from_multiple_files(), libMesh::System::read_legacy_data(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::System::read_parallel_data(), libMesh::TransientRBConstruction::read_riesz_representors_from_files(), libMesh::RBConstruction::read_riesz_representors_from_files(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::System::read_serialized_data(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DofMap::scatter_constraints(), libMesh::CheckpointIO::select_split_config(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::LaplaceMeshSmoother::smooth(), DefaultCouplingTest::testCoupling(), PointNeighborCouplingTest::testCoupling(), MeshInputTest::testDynaReadElem(), MeshInputTest::testDynaReadPatch(), MeshInputTest::testExodusCopyElementSolution(), MeshInputTest::testExodusWriteElementDataFromDiscontinuousNodalData(), SystemsTest::testProjectMatrix1D(), SystemsTest::testProjectMatrix2D(), SystemsTest::testProjectMatrix3D(), BoundaryInfoTest::testShellFaceConstraints(), CheckpointIOTest::testSplitter(), WriteVecAndScalar::testWrite(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::Parallel::Packing< Node * >::unpack(), libMesh::Parallel::Packing< Elem * >::unpack(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::DTKAdapter::update_variable_values(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::CheckpointIO::write(), libMesh::EquationSystems::write(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO::write_element_data(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::ExodusII_IO_Helper::write_element_values_element_major(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO::write_global_data(), libMesh::ExodusII_IO_Helper::write_global_values(), libMesh::System::write_header(), libMesh::ExodusII_IO::write_information_records(), libMesh::ExodusII_IO_Helper::write_information_records(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::VTKIO::write_nodal_data(), libMesh::UCDIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::RBEvaluation::write_out_vectors(), write_output_solvedata(), libMesh::System::write_parallel_data(), libMesh::RBConstruction::write_riesz_representors_to_files(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bc_names(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::System::write_serialized_data(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::XdrIO::write_serialized_subdomain_names(), libMesh::System::write_serialized_vector(), libMesh::System::write_serialized_vectors(), libMesh::ExodusII_IO_Helper::write_sideset_data(), libMesh::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), libMesh::ExodusII_IO_Helper::write_timestep(), and libMesh::ExodusII_IO::write_timestep_discontinuous().
std::vector< boundary_id_type > libMesh::BoundaryInfo::raw_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | side | ||
) | const |
side
side of element elem
.These ids are "raw" because they exclude ids which are implicit, such as a child's inheritance of its ancestors' boundary id.
Definition at line 1294 of file boundary_info.C.
Referenced by copy_boundary_ids().
void libMesh::BoundaryInfo::raw_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | side, | ||
std::vector< boundary_id_type > & | vec_to_fill | ||
) | const |
side
side of element elem
.These ids are "raw" because they exclude ids which are implicit, such as a child's inheritance of its ancestors' boundary id.
This is the non-deprecated version of the function.
Definition at line 1307 of file boundary_info.C.
References _boundary_side_id, libMesh::as_range(), libMesh::libmesh_assert(), and libMesh::Elem::parent().
std::vector< boundary_id_type > libMesh::BoundaryInfo::raw_edge_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | edge | ||
) | const |
edge
edge of element elem
.These ids are "raw" because they exclude ids which are implicit, such as a child's inheritance of its ancestors' boundary id.
Definition at line 1099 of file boundary_info.C.
Referenced by copy_boundary_ids().
void libMesh::BoundaryInfo::raw_edge_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | edge, | ||
std::vector< boundary_id_type > & | vec_to_fill | ||
) | const |
edge
edge of element elem
.These ids are "raw" because they exclude ids which are implicit, such as a child's inheritance of its ancestors' boundary id.
This is the non-deprecated version of the function.
Definition at line 1112 of file boundary_info.C.
References _boundary_edge_id, libMesh::as_range(), libMesh::libmesh_assert(), and libMesh::Elem::parent().
void libMesh::BoundaryInfo::raw_shellface_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | shellface, | ||
std::vector< boundary_id_type > & | vec_to_fill | ||
) | const |
elem
.These ids are "raw" because they exclude ids which are implicit, such as a child's inheritance of its ancestors' boundary id.
Definition at line 1177 of file boundary_info.C.
References _boundary_shellface_id, libMesh::as_range(), libMesh::libmesh_assert(), and libMesh::Elem::parent().
Referenced by copy_boundary_ids().
void libMesh::BoundaryInfo::regenerate_id_sets | ( | ) |
Clears and regenerates the cached sets of ids.
This is necessary after use of remove_*() functions, which remove individual id associations (an O(1) process) without checking to see whether that is the last association with the id (an O(N) process.
Definition at line 159 of file boundary_info.C.
References _boundary_edge_id, _boundary_ids, _boundary_node_id, _boundary_shellface_id, _boundary_side_id, _edge_boundary_ids, _node_boundary_ids, _shellface_boundary_ids, and _side_boundary_ids.
Referenced by libMesh::UnstructuredMesh::all_first_order(), libMesh::TetGenMeshInterface::delete_2D_hull_elements(), libMesh::MeshCommunication::delete_remote_elements(), main(), libMesh::TetGenMeshInterface::pointset_convexhull(), and libMesh::ReplicatedMesh::stitching_helper().
void libMesh::BoundaryInfo::remove | ( | const Elem * | elem | ) |
Removes the boundary conditions associated with element elem
, if any exist.
Definition at line 1381 of file boundary_info.C.
References _boundary_edge_id, _boundary_shellface_id, _boundary_side_id, and libMesh::libmesh_assert().
void libMesh::BoundaryInfo::remove | ( | const Node * | node | ) |
Removes the boundary conditions associated with node node
, if any exist.
Definition at line 1358 of file boundary_info.C.
References _boundary_node_id, and libMesh::libmesh_assert().
Referenced by libMesh::MeshRefinement::_coarsen_elements(), libMesh::MeshTools::Subdivision::all_subdivision(), libMesh::MeshTools::Modification::all_tri(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Modification::change_boundary_id(), libMesh::ReplicatedMesh::delete_elem(), libMesh::DistributedMesh::delete_elem(), libMesh::ReplicatedMesh::delete_node(), libMesh::DistributedMesh::delete_node(), libMesh::ReplicatedMesh::renumber_nodes_and_elements(), and libMesh::DistributedMesh::renumber_nodes_and_elements().
Removes all boundary conditions associated with edge edge
of element elem
, if any exist.
Definition at line 1393 of file boundary_info.C.
References _boundary_edge_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
Referenced by libMesh::MeshTools::Modification::change_boundary_id().
void libMesh::BoundaryInfo::remove_edge | ( | const Elem * | elem, |
const unsigned short int | edge, | ||
const boundary_id_type | id | ||
) |
Removes the boundary id id
from edge edge
of element elem
, if it exists.
Definition at line 1409 of file boundary_info.C.
References _boundary_edge_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
void libMesh::BoundaryInfo::remove_id | ( | boundary_id_type | id | ) |
Removes all entities (nodes, sides, edges, shellfaces) with boundary id id
from their respective containers and erases any record of id's
existence from the BoundaryInfo object.
That is, after calling remove_id(), id
will no longer be in the sets returned by get_boundary_ids(), get_side_boundary_ids(), etc., and will not be in the bc_id_list vector returned by build_side_list(), etc.
Definition at line 1492 of file boundary_info.C.
References _boundary_edge_id, _boundary_ids, _boundary_node_id, _boundary_shellface_id, _boundary_side_id, _edge_boundary_ids, _es_id_to_name, _node_boundary_ids, _ns_id_to_name, _shellface_boundary_ids, _side_boundary_ids, and _ss_id_to_name.
Referenced by libMesh::MeshTools::Modification::change_boundary_id(), and BoundaryInfoTest::testMesh().
void libMesh::BoundaryInfo::remove_node | ( | const Node * | node, |
const boundary_id_type | id | ||
) |
Removes boundary id id
from node node
, if it exists.
Definition at line 1368 of file boundary_info.C.
References _boundary_node_id, and libMesh::libmesh_assert().
void libMesh::BoundaryInfo::remove_shellface | ( | const Elem * | elem, |
const unsigned short int | shellface | ||
) |
Removes all boundary conditions associated with shell face shellface
of element elem
, if any exist.
Definition at line 1425 of file boundary_info.C.
References _boundary_shellface_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
Referenced by libMesh::MeshTools::Modification::change_boundary_id().
void libMesh::BoundaryInfo::remove_shellface | ( | const Elem * | elem, |
const unsigned short int | shellface, | ||
const boundary_id_type | id | ||
) |
Removes all boundary conditions associated with shell face shellface
of element elem
, if any exist.
Definition at line 1444 of file boundary_info.C.
References _boundary_shellface_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
Removes all boundary conditions associated with side side
of element elem
, if any exist.
Definition at line 1462 of file boundary_info.C.
References _boundary_side_id, libMesh::Elem::level(), and libMesh::libmesh_assert().
Referenced by libMesh::MeshTools::Modification::change_boundary_id(), main(), and libMesh::ReplicatedMesh::stitching_helper().
void libMesh::BoundaryInfo::remove_side | ( | const Elem * | elem, |
const unsigned short int | side, | ||
const boundary_id_type | id | ||
) |
Removes the boundary id id
from side side
of element elem
, if it exists.
Definition at line 1478 of file boundary_info.C.
References _boundary_side_id, and libMesh::libmesh_assert().
|
inline |
Definition at line 890 of file boundary_info.h.
References _es_id_to_name.
|
inline |
Definition at line 882 of file boundary_info.h.
References _ns_id_to_name.
Referenced by libMesh::CheckpointIO::read_bc_names(), libMesh::CheckpointIO::read_header(), and libMesh::XdrIO::read_serialized_bc_names().
|
inline |
Definition at line 874 of file boundary_info.h.
References _ss_id_to_name.
Referenced by libMesh::CheckpointIO::read_bc_names(), libMesh::CheckpointIO::read_header(), and libMesh::XdrIO::read_serialized_bc_names().
void libMesh::BoundaryInfo::shellface_boundary_ids | ( | const Elem *const | elem, |
const unsigned short int | shellface, | ||
std::vector< boundary_id_type > & | vec_to_fill | ||
) | const |
elem
.Definition at line 1133 of file boundary_info.C.
References _boundary_shellface_id, libMesh::as_range(), libMesh::Elem::level(), libMesh::libmesh_assert(), and libMesh::Elem::parent().
Referenced by assemble_shell(), libMesh::MeshTools::Modification::change_boundary_id(), n_shellface_boundary_ids(), libMesh::Parallel::Packing< const Elem * >::pack(), and libMesh::XdrIO::write_serialized_bcs_helper().
unsigned int libMesh::BoundaryInfo::side_with_boundary_id | ( | const Elem *const | elem, |
const boundary_id_type | boundary_id | ||
) | const |
elem
whose associated boundary id is boundary_id
if such a side exists, and invalid_uint
otherwise.elem
have the same id, only the lowest numbered such side is returned. Definition at line 1527 of file boundary_info.C.
References _boundary_side_id, libMesh::as_range(), libMesh::invalid_uint, libMesh::Elem::is_child_on_side(), libMesh::Elem::level(), libMesh::Elem::neighbor_ptr(), libMesh::Elem::parent(), libMesh::Elem::top_parent(), and libMesh::Elem::which_child_am_i().
Referenced by libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints().
std::string & libMesh::BoundaryInfo::sideset_name | ( | boundary_id_type | id | ) |
Definition at line 2341 of file boundary_info.C.
References _ss_id_to_name.
Referenced by libMesh::AbaqusIO::assign_sideset_ids(), libMesh::MeshTools::Generation::build_cube(), build_side_list_from_node_list(), libMesh::UNVIO::groups_in(), libMesh::ExodusII_IO::read(), and libMesh::GmshIO::read_mesh().
void libMesh::BoundaryInfo::sync | ( | const std::set< boundary_id_type > & | requested_boundary_ids, |
UnstructuredMesh & | boundary_mesh | ||
) |
Generates boundary_mesh
data structures corresponding to the mesh
data structures.
Allows the boundary_mesh
to be used like any other mesh, except with interior_parent() values defined for algorithms which couple boundary and interior mesh information. Any pre-existing boundary_mesh
data is cleared. Only boundary elements with the specified ids are extracted. Boundary IDs for the nodes on requested_boundary_ids
will also be copied over to boundary_mesh
. We do not currently copy edge boundary IDs over to boundary_mesh
.
Definition at line 213 of file boundary_info.C.
References libMesh::Elem::invalid_subdomain_id, and sync().
void libMesh::BoundaryInfo::sync | ( | const std::set< boundary_id_type > & | requested_boundary_ids, |
UnstructuredMesh & | boundary_mesh, | ||
const std::set< subdomain_id_type > & | subdomains_relative_to | ||
) |
Like the other sync() implementations, but specifically intended for building "boundary" meshes from internal sidesets.
In the case of an internal sideset, each side may belong to 2 higher-dimensional parent elements, and typically we do not want to add the same side to the boundary mesh twice. The std::set<subdomain_id_type> passed into this function specifies which subdomain the sides in question should relative to, so that they are only added once.
Deleting 0 elements seems weird, but it's better encapsulating than exposing a set_is_serial(false) capability that might be easily misused.
If the boundary_mesh is still serial, that means we can't parallelize it, so to make sure we can construct it in full on every processor we'll serialize the interior mesh. Use a temporary serializer here.
Re-create the boundary mesh.
Definition at line 227 of file boundary_info.C.
References _find_id_maps(), _mesh, add_elements(), add_node(), libMesh::MeshBase::add_point(), boundary_ids(), libMesh::MeshBase::clear(), libMesh::MeshBase::delete_remote_elements(), libMesh::MeshBase::element_ptr_range(), libMesh::MeshBase::get_boundary_info(), libMesh::DofObject::id(), libMesh::MeshBase::is_serial(), libMesh::libmesh_assert(), libMesh::MeshBase::n_partitions(), libMesh::MeshBase::node_ptr(), libMesh::MeshBase::node_ptr_range(), libMesh::MeshBase::partitioner(), libMesh::MeshBase::prepare_for_use(), libMesh::MeshBase::set_n_partitions(), and libMesh::Partitioner::set_node_processor_ids().
void libMesh::BoundaryInfo::sync | ( | UnstructuredMesh & | boundary_mesh | ) |
Generates boundary_mesh
data structures corresponding to the mesh
data structures.
Allows the boundary_mesh
to be used like any other mesh, except with interior_parent() values defined for algorithms which couple boundary and interior mesh information. Any pre-existing boundary_mesh
data is cleared.
Definition at line 200 of file boundary_info.C.
References _boundary_ids, _mesh, libMesh::ParallelObject::comm(), invalid_id, and libMesh::MeshBase::is_serial().
|
friend |
Definition at line 60 of file boundary_info.h.
|
private |
Data structure that maps edges of elements to boundary ids.
This is only relevant in 3D.
Definition at line 934 of file boundary_info.h.
Referenced by add_edge(), build_edge_list(), clear(), edge_boundary_ids(), n_edge_conds(), operator=(), print_info(), print_summary(), raw_edge_boundary_ids(), regenerate_id_sets(), remove(), remove_edge(), and remove_id().
|
private |
A collection of user-specified boundary ids for sides, edges, nodes, and shell faces.
See _side_boundary_ids, _edge_boundary_ids, _node_boundary_ids, and _shellface_boundary_ids for sets containing IDs for only sides, edges, nodes, and shell faces, respectively.
Definition at line 959 of file boundary_info.h.
Referenced by add_edge(), add_node(), add_shellface(), add_side(), clear(), get_boundary_ids(), n_boundary_ids(), operator=(), regenerate_id_sets(), remove_id(), and sync().
|
private |
Data structure that maps nodes in the mesh to boundary ids.
Definition at line 926 of file boundary_info.h.
Referenced by add_node(), boundary_ids(), build_node_boundary_ids(), build_node_list(), build_side_list_from_node_list(), clear(), clear_boundary_node_ids(), has_boundary_id(), n_boundary_ids(), n_nodeset_conds(), operator=(), print_info(), print_summary(), regenerate_id_sets(), remove(), remove_id(), and remove_node().
|
private |
Data structure that maps faces of shell elements to boundary ids.
This is only relevant for shell elements.
Definition at line 942 of file boundary_info.h.
Referenced by add_shellface(), build_shellface_boundary_ids(), build_shellface_list(), clear(), n_shellface_conds(), operator=(), print_info(), print_summary(), raw_shellface_boundary_ids(), regenerate_id_sets(), remove(), remove_id(), remove_shellface(), and shellface_boundary_ids().
|
private |
Data structure that maps sides of elements to boundary ids.
Definition at line 950 of file boundary_info.h.
Referenced by _find_id_maps(), add_elements(), add_side(), boundary_ids(), build_active_side_list(), build_node_list_from_side_list(), build_side_boundary_ids(), build_side_list(), clear(), n_boundary_conds(), operator=(), print_info(), print_summary(), raw_boundary_ids(), regenerate_id_sets(), remove(), remove_id(), remove_side(), and side_with_boundary_id().
|
protectedinherited |
Definition at line 112 of file parallel_object.h.
Referenced by libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::ParallelObject::comm(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::operator=(), and libMesh::ParallelObject::processor_id().
|
private |
Set of user-specified boundary IDs for edges only.
This is only relevant in 3D.
_boundary_ids
is the union of this set, _side_boundary_ids
, _node_boundary_ids
, and _shellface_boundary_ids
. Definition at line 977 of file boundary_info.h.
Referenced by add_edge(), clear(), get_edge_boundary_ids(), operator=(), regenerate_id_sets(), and remove_id().
|
private |
This structure maintains the mapping of named edge sets for file formats that support named blocks.
Currently this is only implemented for ExodusII
Definition at line 1017 of file boundary_info.h.
Referenced by edgeset_name(), get_edgeset_name(), get_edgeset_name_map(), get_id_by_name(), remove_id(), and set_edgeset_name_map().
|
private |
The Mesh this boundary info pertains to.
Definition at line 919 of file boundary_info.h.
Referenced by _find_id_maps(), add_edge(), add_elements(), add_node(), add_shellface(), add_side(), build_node_list_from_side_list(), build_side_list_from_node_list(), n_boundary_conds(), n_edge_conds(), n_nodeset_conds(), n_shellface_conds(), operator=(), and sync().
|
private |
Set of user-specified boundary IDs for nodes only.
_boundary_ids
is the union of this set, _edge_boundary_ids
, _side_boundary_ids
, and _shellface_boundary_ids
. Definition at line 986 of file boundary_info.h.
Referenced by add_node(), clear(), get_node_boundary_ids(), operator=(), regenerate_id_sets(), and remove_id().
|
private |
This structure maintains the mapping of named node sets for file formats that support named blocks.
Currently this is only implemented for ExodusII
Definition at line 1010 of file boundary_info.h.
Referenced by get_id_by_name(), get_nodeset_name(), get_nodeset_name_map(), nodeset_name(), remove_id(), and set_nodeset_name_map().
|
private |
Set of user-specified boundary IDs for shellfaces only.
This is only relevant for shell elements.
_boundary_ids
is the union of this set, _side_boundary_ids
, _edge_boundary_ids
, and _node_boundary_ids
. Definition at line 996 of file boundary_info.h.
Referenced by add_shellface(), clear(), get_shellface_boundary_ids(), operator=(), regenerate_id_sets(), and remove_id().
|
private |
Set of user-specified boundary IDs for sides only.
_boundary_ids
is the union of this set, _edge_boundary_ids
, _node_boundary_ids
, and _shellface_boundary_ids
. Definition at line 968 of file boundary_info.h.
Referenced by add_side(), clear(), get_side_boundary_ids(), operator=(), regenerate_id_sets(), and remove_id().
|
private |
This structure maintains the mapping of named side sets for file formats that support named blocks.
Currently this is only implemented for ExodusII
Definition at line 1003 of file boundary_info.h.
Referenced by get_id_by_name(), get_sideset_name(), get_sideset_name_map(), remove_id(), set_sideset_name_map(), and sideset_name().
|
static |
Number used for internal use.
This is the return value if a boundary condition is not specified.
Definition at line 899 of file boundary_info.h.
Referenced by _find_id_maps(), add_edge(), add_elements(), add_node(), add_shellface(), add_side(), libMesh::MeshTools::Modification::all_tri(), boundary_id(), libMesh::MeshTools::Generation::build_cube(), libMesh::MeshTools::Modification::flatten(), get_id_by_name(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), main(), libMesh::ReplicatedMesh::stitching_helper(), sync(), libMesh::XdrIO::write_serialized_bcs_helper(), and libMesh::XdrIO::write_serialized_nodesets().