libMesh
Loading...
Searching...
No Matches
boundary_info.h
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3
4// This library is free software; you can redistribute it and/or
5// modify it under the terms of the GNU Lesser General Public
6// License as published by the Free Software Foundation; either
7// version 2.1 of the License, or (at your option) any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12// Lesser General Public License for more details.
13
14// You should have received a copy of the GNU Lesser General Public
15// License along with this library; if not, write to the Free Software
16// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
18
19
20#ifndef LIBMESH_BOUNDARY_INFO_H
21#define LIBMESH_BOUNDARY_INFO_H
22
23// Local includes
24#include "libmesh/libmesh_common.h"
25#include "libmesh/id_types.h"
26#include "libmesh/parallel_object.h"
27
28// C++ includes
29#include <cstddef>
30#include <map>
31#include <set>
32#include <vector>
33#include <tuple>
34
35namespace libMesh
36{
37
38
39// Forward declarations
40class Elem;
41class Node;
42class MeshBase;
43class UnstructuredMesh;
44
45
58{
59protected:
60 friend class MeshBase;
61
69
70 void set_mesh (MeshBase & m) { _mesh = &m; }
71
72public:
81 BoundaryInfo & operator=(const BoundaryInfo & other_boundary_info);
82
86 bool operator== (const BoundaryInfo & other_boundary_info) const;
87
88 bool operator!= (const BoundaryInfo & other_boundary_info) const
89 {
90 return !(*this == other_boundary_info);
91 }
92
97
102 void clear ();
103
111 void regenerate_id_sets ();
112
122
130 void sync (UnstructuredMesh & boundary_mesh);
131
143 void sync (const std::set<boundary_id_type> & requested_boundary_ids,
144 UnstructuredMesh & boundary_mesh);
145
156 void sync (const std::set<boundary_id_type> & requested_boundary_ids,
157 UnstructuredMesh & boundary_mesh,
158 const std::set<subdomain_id_type> & subdomains_relative_to);
159
171 void get_side_and_node_maps (UnstructuredMesh & boundary_mesh,
172 std::map<dof_id_type, dof_id_type> & node_id_map,
173 std::map<dof_id_type, unsigned char> & side_id_map,
174 Real tolerance=1.e-6);
175
194 void add_elements (const std::set<boundary_id_type> & requested_boundary_ids,
195 UnstructuredMesh & boundary_mesh,
196 bool store_parent_side_ids = false,
197 const std::vector<subdomain_id_type> & new_subdomain_ids = {});
198
205 void add_elements(const std::set<boundary_id_type> & requested_boundary_ids,
206 UnstructuredMesh & boundary_mesh,
207 const std::set<subdomain_id_type> & subdomains_relative_to,
208 bool store_parent_side_ids = false,
209 const std::vector<subdomain_id_type> & new_subdomain_ids = {});
210
215 void add_node (const Node * node,
216 const boundary_id_type id);
217
222 void add_node (const dof_id_type node,
223 const boundary_id_type id);
224
229 void add_node (const Node * node,
230 const std::vector<boundary_id_type> & ids);
231
236
242 void add_edge (const dof_id_type elem,
243 const unsigned short int edge,
244 const boundary_id_type id);
245
251 void add_edge (const Elem * elem,
252 const unsigned short int edge,
253 const boundary_id_type id);
254
260 void add_edge (const Elem * elem,
261 const unsigned short int edge,
262 const std::vector<boundary_id_type> & ids);
263
269 void add_shellface (const dof_id_type elem,
270 const unsigned short int shellface,
271 const boundary_id_type id);
272
278 void add_shellface (const Elem * elem,
279 const unsigned short int shellface,
280 const boundary_id_type id);
281
287 void add_shellface (const Elem * elem,
288 const unsigned short int shellface,
289 const std::vector<boundary_id_type> & ids);
290
295 void add_side (const dof_id_type elem,
296 const unsigned short int side,
297 const boundary_id_type id);
298
303 void add_side (const Elem * elem,
304 const unsigned short int side,
305 const boundary_id_type id);
306
311 void add_side (const Elem * elem,
312 const unsigned short int side,
313 const std::vector<boundary_id_type> & ids);
314
319 void remove (const Node * node);
320
325 void remove (const Elem * elem);
326
330 void remove_node (const Node * node,
331 const boundary_id_type id);
332
337 void remove_edge (const Elem * elem,
338 const unsigned short int edge);
339
344 void remove_edge (const Elem * elem,
345 const unsigned short int edge,
346 const boundary_id_type id);
347
352 void remove_shellface (const Elem * elem,
353 const unsigned short int shellface);
354
359 void remove_shellface (const Elem * elem,
360 const unsigned short int shellface,
361 const boundary_id_type id);
362
367 void remove_side (const Elem * elem,
368 const unsigned short int side);
369
374 void remove_side (const Elem * elem,
375 const unsigned short int side,
376 const boundary_id_type id);
377
386 boundary_id_type other_sideset_id,
387 bool clear_nodeset_data = false);
388
401 void remove_id (boundary_id_type id, bool global = false);
402
412 void remove_side_id (boundary_id_type id, bool global = false);
413
423 void remove_edge_id (boundary_id_type id, bool global = false);
424
435 void remove_shellface_id (boundary_id_type id, bool global = false);
436
446 void remove_node_id (boundary_id_type id, bool global = false);
447
452 void renumber_id (boundary_id_type old_id, boundary_id_type new_id);
453
459
465
471
477
485 std::size_t n_boundary_ids () const { return _boundary_ids.size(); }
486
490 bool has_boundary_id (const Node * const node,
491 const boundary_id_type id) const;
492
497 void boundary_ids (const Node * node,
498 std::vector<boundary_id_type> & vec_to_fill) const;
499
503 unsigned int n_boundary_ids (const Node * node) const;
504
511 unsigned int n_edge_boundary_ids (const Elem * const elem,
512 const unsigned short int edge) const;
513
520 void edge_boundary_ids (const Elem * const elem,
521 const unsigned short int edge,
522 std::vector<boundary_id_type> & vec_to_fill) const;
523
533 void raw_edge_boundary_ids (const Elem * const elem,
534 const unsigned short int edge,
535 std::vector<boundary_id_type> & vec_to_fill) const;
536
543 unsigned int n_shellface_boundary_ids (const Elem * const elem,
544 const unsigned short int shellface) const;
545
552 void shellface_boundary_ids (const Elem * const elem,
553 const unsigned short int shellface,
554 std::vector<boundary_id_type> & vec_to_fill) const;
555
565 void raw_shellface_boundary_ids (const Elem * const elem,
566 const unsigned short int shellface,
567 std::vector<boundary_id_type> & vec_to_fill) const;
568
573 bool has_boundary_id (const Elem * const elem,
574 const unsigned short int side,
575 const boundary_id_type id) const;
576
581 unsigned int n_boundary_ids (const Elem * const elem,
582 const unsigned short int side) const;
583
588 unsigned int n_raw_boundary_ids (const Elem * const elem,
589 const unsigned short int side) const;
590
595 void side_boundary_ids (const Elem * const elem,
596 std::vector<std::vector<boundary_id_type>> & vec_to_fill) const;
597
602 void boundary_ids (const Elem * const elem,
603 const unsigned short int side,
604 std::vector<boundary_id_type> & vec_to_fill) const;
605
613 void raw_boundary_ids (const Elem * const elem,
614 const unsigned short int side,
615 std::vector<boundary_id_type> & vec_to_fill) const;
616
617 /*
618 * Copy boundary ids associated with old_elem (but not its nodes)
619 * from old_boundary_info (which may be this) into this boundary
620 * info, associating them with new_elem.
621 */
622 void copy_boundary_ids (const BoundaryInfo & old_boundary_info,
623 const Elem * const old_elem,
624 const Elem * const new_elem);
625
633 unsigned int side_with_boundary_id(const Elem * const elem,
634 const boundary_id_type boundary_id) const;
635
640 std::vector<unsigned int>
641 sides_with_boundary_id(const Elem * const elem,
642 const boundary_id_type boundary_id) const;
643
650 void build_node_boundary_ids(std::vector<boundary_id_type> & b_ids) const;
651
658 void build_side_boundary_ids(std::vector<boundary_id_type> & b_ids) const;
659
666 void build_shellface_boundary_ids(std::vector<boundary_id_type> & b_ids) const;
667
668#ifdef LIBMESH_ENABLE_AMR
680 void transfer_boundary_ids_from_children(const Elem * const parent);
681#endif
682
688 std::size_t n_boundary_conds () const;
689
696 std::size_t n_edge_conds () const;
697
704 std::size_t n_shellface_conds () const;
705
711 std::size_t n_nodeset_conds () const;
712
725 typedef std::tuple<dof_id_type, boundary_id_type> NodeBCTuple;
727 std::vector<NodeBCTuple> build_node_list(NodeBCTupleSortBy sort_by = NodeBCTupleSortBy::NODE_ID) const;
728
737 void build_node_list_from_side_list(const std::set<boundary_id_type> & sideset_list = {});
738
745 void build_side_list_from_node_list(const std::set<boundary_id_type> & nodeset_list = {});
746
759 typedef std::tuple<dof_id_type, unsigned short int, boundary_id_type> BCTuple;
761 std::vector<BCTuple> build_side_list(BCTupleSortBy sort_by = BCTupleSortBy::ELEM_ID) const;
762
769 std::vector<BCTuple> build_active_side_list () const;
770
777 std::vector<BCTuple> build_edge_list() const;
778
785 std::vector<BCTuple> build_shellface_list() const;
786
796
804 const std::set<boundary_id_type> & get_boundary_ids () const
805 { return _boundary_ids; }
806
811 const std::set<boundary_id_type> & get_global_boundary_ids () const;
812
817 const std::set<boundary_id_type> & get_side_boundary_ids () const
818 { return _side_boundary_ids; }
819
826 const std::set<boundary_id_type> & get_edge_boundary_ids () const
827 { return _edge_boundary_ids; }
828
835 const std::set<boundary_id_type> & get_shellface_boundary_ids () const
836 { return _shellface_boundary_ids; }
837
842 const std::set<boundary_id_type> & get_node_boundary_ids () const
843 { return _node_boundary_ids; }
844
845
849 void print_info (std::ostream & out_stream=libMesh::out) const;
850
854 void print_summary (std::ostream & out_stream=libMesh::out) const;
855
859 const std::string & get_sideset_name(boundary_id_type id) const;
860
865 std::string & sideset_name(boundary_id_type id);
866
870 const std::string & get_nodeset_name(boundary_id_type id) const;
871
876 std::string & nodeset_name(boundary_id_type id);
877
881 const std::string & get_edgeset_name(boundary_id_type id) const;
882
886 std::string & edgeset_name(boundary_id_type id);
887
892 boundary_id_type get_id_by_name(std::string_view name) const;
893
897 std::map<boundary_id_type, std::string> & set_sideset_name_map ()
898 { return _ss_id_to_name; }
899 const std::map<boundary_id_type, std::string> & get_sideset_name_map () const
900 { return _ss_id_to_name; }
901
905 std::map<boundary_id_type, std::string> & set_nodeset_name_map ()
906 { return _ns_id_to_name; }
907 const std::map<boundary_id_type, std::string> & get_nodeset_name_map () const
908 { return _ns_id_to_name; }
909
913 std::map<boundary_id_type, std::string> & set_edgeset_name_map ()
914 { return _es_id_to_name; }
915 const std::map<boundary_id_type, std::string> & get_edgeset_name_map () const
916 { return _es_id_to_name; }
917
923
927 const std::multimap<const Node *, boundary_id_type> & get_nodeset_map () const
928 { return _boundary_node_id; }
929
933 const std::multimap<const Elem *, std::pair<unsigned short int, boundary_id_type>> & get_edgeset_map () const
934 { return _boundary_edge_id; }
935
939 const std::multimap<const Elem *, std::pair<unsigned short int, boundary_id_type>> & get_sideset_map() const
940 { return _boundary_side_id; }
941
947
951 void allow_children_on_boundary_side(const bool children_on_boundary)
952 { _children_on_boundary = children_on_boundary; }
953
954private:
955
963
969 void _find_id_maps (const std::set<boundary_id_type> & requested_boundary_ids,
970 dof_id_type first_free_node_id,
971 std::map<dof_id_type, dof_id_type> * node_id_map,
972 dof_id_type first_free_elem_id,
973 std::map<std::pair<dof_id_type, unsigned char>, dof_id_type> * side_id_map,
974 const std::set<subdomain_id_type> & subdomains_relative_to);
975
980
985 std::multimap<const Node *,
987
992 std::multimap<const Elem *,
993 std::pair<unsigned short int, boundary_id_type>>
995
1000 std::multimap<const Elem *,
1001 std::pair<unsigned short int, boundary_id_type>>
1003
1008 std::multimap<const Elem *,
1009 std::pair<unsigned short int, boundary_id_type>>
1011
1012 /*
1013 * Whether or not children elements are associated with any boundary
1014 * It is false by default. The flag will be turned on if `add_side`
1015 * function is called with a child element
1016 */
1018
1028 std::set<boundary_id_type> _boundary_ids;
1029
1040 std::set<boundary_id_type> _global_boundary_ids;
1041
1051 std::set<boundary_id_type> _side_boundary_ids;
1052
1062 std::set<boundary_id_type> _edge_boundary_ids;
1063
1073 std::set<boundary_id_type> _node_boundary_ids;
1074
1085 std::set<boundary_id_type> _shellface_boundary_ids;
1086
1094 std::map<boundary_id_type, std::string> _ss_id_to_name;
1095
1103 std::map<boundary_id_type, std::string> _ns_id_to_name;
1104
1112 std::map<boundary_id_type, std::string> _es_id_to_name;
1113};
1114
1115} // namespace libMesh
1116
1117#endif // LIBMESH_BOUNDARY_INFO_H
The BoundaryInfo class contains information relevant to boundary conditions including storing faces,...
std::size_t n_boundary_ids() const
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 ...
std::string & sideset_name(boundary_id_type id)
void shellface_boundary_ids(const Elem *const elem, const unsigned short int shellface, std::vector< boundary_id_type > &vec_to_fill) const
void side_boundary_ids(const Elem *const elem, std::vector< std::vector< boundary_id_type > > &vec_to_fill) const
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.
unsigned int n_raw_boundary_ids(const Elem *const elem, const unsigned short int side) const
void add_elements(const std::set< boundary_id_type > &requested_boundary_ids, UnstructuredMesh &boundary_mesh, bool store_parent_side_ids=false, const std::vector< subdomain_id_type > &new_subdomain_ids={})
Generates elements along the boundary of our _mesh, which use pre-existing nodes on the boundary_mesh...
std::size_t n_nodeset_conds() const
void renumber_edge_id(boundary_id_type old_id, boundary_id_type new_id)
Changes all edges with boundary id old_id to instead be labeled by boundary id new_id.
void synchronize_global_id_set()
Synchronizes the boundary_ids set on each processor to determine global_boundary_ids.
void allow_children_on_boundary_side(const bool children_on_boundary)
Whether or not to allow directly setting boundary sides on child elements.
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.
std::set< boundary_id_type > _node_boundary_ids
Set of user-specified boundary IDs for nodes only.
void build_side_list_from_node_list(const std::set< boundary_id_type > &nodeset_list={})
Adds sides to a sideset if every node on that side are in the same sideset.
std::tuple< dof_id_type, unsigned short int, boundary_id_type > BCTuple
Create a list of (element_id, side_id, boundary_id) tuples for relevant sides.
void remove_shellface_id(boundary_id_type id, bool global=false)
Removes all shellfaces with boundary id id from the BoundaryInfo object, removes it from the set of s...
const std::set< boundary_id_type > & get_global_boundary_ids() const
unsigned int side_with_boundary_id(const Elem *const elem, const boundary_id_type boundary_id) const
void remove_node(const Node *node, const boundary_id_type id)
Removes boundary id id from node node, if it exists.
MeshBase * _mesh
A pointer to the Mesh this boundary info pertains to.
void sync(UnstructuredMesh &boundary_mesh)
Generates boundary_mesh data structures corresponding to the mesh data structures.
std::vector< BCTuple > build_side_list(BCTupleSortBy sort_by=BCTupleSortBy::ELEM_ID) const
std::size_t n_boundary_conds() const
void raw_shellface_boundary_ids(const Elem *const elem, const unsigned short int shellface, std::vector< boundary_id_type > &vec_to_fill) const
std::set< boundary_id_type > _boundary_ids
A collection of user-specified boundary ids for sides, edges, nodes, and shell faces.
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.
std::set< boundary_id_type > _global_boundary_ids
A collection of user-specified boundary ids for sides, edges, nodes, and shell faces.
std::size_t n_edge_conds() const
void remove_node_id(boundary_id_type id, bool global=false)
Removes all nodes with boundary id id from the BoundaryInfo object, removes it from the set of node b...
std::vector< unsigned int > sides_with_boundary_id(const Elem *const elem, const boundary_id_type boundary_id) const
void set_mesh(MeshBase &m)
bool operator==(const BoundaryInfo &other_boundary_info) const
This tests for data equality via element ids.
std::vector< NodeBCTuple > build_node_list(NodeBCTupleSortBy sort_by=NodeBCTupleSortBy::NODE_ID) const
bool has_boundary_id(const Node *const node, const boundary_id_type id) const
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.
void edge_boundary_ids(const Elem *const elem, const unsigned short int edge, std::vector< boundary_id_type > &vec_to_fill) const
void print_summary(std::ostream &out_stream=libMesh::out) const
Prints a summary of the boundary information.
std::set< boundary_id_type > _side_boundary_ids
Set of user-specified boundary IDs for sides only.
boundary_id_type get_id_by_name(std::string_view name) const
const std::set< boundary_id_type > & get_edge_boundary_ids() const
unsigned int n_shellface_boundary_ids(const Elem *const elem, const unsigned short int shellface) 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.
std::string & nodeset_name(boundary_id_type id)
std::map< boundary_id_type, std::string > _ss_id_to_name
This structure maintains the mapping of named side sets for file formats (Exodus, Gmsh) that support ...
void remove_id(boundary_id_type id, bool global=false)
Removes all entities (nodes, sides, edges, shellfaces) with boundary id id from their respective cont...
std::set< boundary_id_type > _shellface_boundary_ids
Set of user-specified boundary IDs for shellfaces only.
void clear_stitched_boundary_side_ids(boundary_id_type sideset_id, boundary_id_type other_sideset_id, bool clear_nodeset_data=false)
Clear sideset information along a stitched mesh interface.
std::map< boundary_id_type, std::string > & set_sideset_name_map()
std::vector< BCTuple > build_shellface_list() const
Create a list of (element_id, shellface_id, boundary_id) tuples for all relevant shellfaces.
void remove_shellface(const Elem *elem, const unsigned short int shellface)
Removes all boundary conditions associated with shell face shellface of element elem,...
unsigned int n_edge_boundary_ids(const Elem *const elem, const unsigned short int edge) const
std::multimap< const Node *, boundary_id_type > _boundary_node_id
Data structure that maps nodes in the mesh to boundary ids.
void raw_boundary_ids(const Elem *const elem, const unsigned short int side, std::vector< boundary_id_type > &vec_to_fill) const
std::size_t n_shellface_conds() const
const std::multimap< const Elem *, std::pair< unsigned short int, boundary_id_type > > & get_edgeset_map() const
void clear_boundary_node_ids()
Clears all the boundary information from all of the nodes in the mesh.
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.
void remove_side_id(boundary_id_type id, bool global=false)
Removes all sides with boundary id id from the BoundaryInfo object, removes it from the set of side b...
const std::multimap< const Node *, boundary_id_type > & get_nodeset_map() const
void clear()
Clears the underlying data structures and restores the object to a pristine state with no data stored...
const std::string & get_nodeset_name(boundary_id_type id) const
void print_info(std::ostream &out_stream=libMesh::out) const
Prints the boundary information data structure.
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.
void copy_boundary_ids(const BoundaryInfo &old_boundary_info, const Elem *const old_elem, const Elem *const new_elem)
const std::multimap< const Elem *, std::pair< unsigned short int, boundary_id_type > > & get_sideset_map() const
const std::set< boundary_id_type > & get_boundary_ids() const
const std::set< boundary_id_type > & get_node_boundary_ids() const
std::tuple< dof_id_type, boundary_id_type > NodeBCTuple
Create a list of (node_id, boundary_id) tuples for all relevant nodes.
void remove_edge_id(boundary_id_type id, bool global=false)
Removes all edges with boundary id id from the BoundaryInfo object, removes it from the set of edge b...
void parallel_sync_side_ids()
Synchronize the boundary element side and node across processors.
~BoundaryInfo()
Destructor.
void build_node_list_from_side_list(const std::set< boundary_id_type > &sideset_list={})
Adds nodes with boundary ids based on the side's boundary ids they are connected to.
void renumber_shellface_id(boundary_id_type old_id, boundary_id_type new_id)
Changes all shellfaces with boundary id old_id to instead be labeled by boundary id new_id.
const std::string & get_sideset_name(boundary_id_type id) const
std::string & edgeset_name(boundary_id_type id)
void raw_edge_boundary_ids(const Elem *const elem, const unsigned short int edge, std::vector< boundary_id_type > &vec_to_fill) const
const std::set< boundary_id_type > & get_side_boundary_ids() const
void add_node(const Node *node, const boundary_id_type id)
Add Node node with boundary id id to the boundary information data structures.
bool is_children_on_boundary_side() const
static const boundary_id_type invalid_id
Number used for internal use.
std::map< boundary_id_type, std::string > & set_edgeset_name_map()
std::set< boundary_id_type > _edge_boundary_ids
Set of user-specified boundary IDs for edges only.
void renumber_id(boundary_id_type old_id, boundary_id_type new_id)
Changes all entities (nodes, sides, edges, shellfaces) with boundary id old_id to instead be labeled ...
const std::string & get_edgeset_name(boundary_id_type id) const
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.
void regenerate_id_sets()
Clears and regenerates the cached sets of ids.
void build_node_boundary_ids(std::vector< boundary_id_type > &b_ids) const
Builds the list of unique node boundary ids.
const std::set< boundary_id_type > & get_shellface_boundary_ids() const
void renumber_node_id(boundary_id_type old_id, boundary_id_type new_id)
Changes all nodes with boundary id old_id to instead be labeled by boundary id new_id.
void build_side_boundary_ids(std::vector< boundary_id_type > &b_ids) const
Builds the list of unique side boundary ids.
BoundaryInfo & operator=(const BoundaryInfo &other_boundary_info)
Copy assignment operator.
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.
void remove(const Node *node)
Removes the boundary conditions associated with node node, if any exist.
bool operator!=(const BoundaryInfo &other_boundary_info) const
void renumber_side_id(boundary_id_type old_id, boundary_id_type new_id)
Changes all sides with boundary id old_id to instead be labeled by boundary id new_id.
std::map< boundary_id_type, std::string > _ns_id_to_name
This structure maintains the mapping of named node sets for file formats (Exodus, Gmsh) that support ...
void transfer_boundary_ids_from_children(const Elem *const parent)
Update parent's boundary id list so that this information is consistent with its children.
std::vector< BCTuple > build_edge_list() const
Create a list of (element_id, edge_id, boundary_id) tuples for all relevant edges.
void build_shellface_boundary_ids(std::vector< boundary_id_type > &b_ids) const
Builds the list of unique shellface boundary ids.
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.
void libmesh_assert_valid_multimaps() const
Helper method for ensuring that our multimaps don't contain entries with duplicate keys and values.
std::map< boundary_id_type, std::string > _es_id_to_name
This structure maintains the mapping of named edge sets for file formats (Exodus, Gmsh) that support ...
const std::map< boundary_id_type, std::string > & get_edgeset_name_map() const
const std::map< boundary_id_type, std::string > & get_nodeset_name_map() const
std::vector< BCTuple > build_active_side_list() const
Create a list of (element_id, side_id, boundary_id) tuples for all relevant active sides.
std::map< boundary_id_type, std::string > & set_nodeset_name_map()
const std::map< boundary_id_type, std::string > & get_sideset_name_map() const
This is the base class from which all geometric element types are derived.
Definition elem.h:96
This is the MeshBase class.
Definition mesh_base.h:81
A Node is like a Point, but with more information.
Definition node.h:55
An object whose state is distributed along a set of processors.
The UnstructuredMesh class is derived from the MeshBase class.
The libMesh namespace provides an interface to certain functionality in the library.
int8_t boundary_id_type
Definition id_types.h:51
OStreamProxy out
uint8_t dof_id_type
Definition id_types.h:67
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real