@@ -103,13 +103,22 @@ class BoundaryInfo : public ParallelObject
103103
104104 /* *
105105 * Clears and regenerates the cached sets of ids.
106- * This is necessary after use of remove_*() functions, which remove
107- * individual id associations (an O(1) process) without checking to
108- * see whether that is the last association with the id (an O(N)
109- * process.
106+ * This is in general necessary after use of remove_*() functions,
107+ * which remove individual id associations (an O(1) process) without
108+ * checking to see whether that is the last association with the id
109+ * (an O(N) process) .
110110 */
111111 void regenerate_id_sets ();
112112
113+ /* *
114+ * Synchronizes the boundary_ids set on each processor to determine
115+ * global_boundary_ids.
116+ *
117+ * This may be necessary after use of renumber_*() functions, which
118+ * perform only local operations, if \p get_global_boundary_ids() is
119+ * to be used without a full regenerate_id_sets() call first.
120+ */
121+ void synchronize_global_id_set ();
113122
114123 /* *
115124 * Generates \p boundary_mesh data structures corresponding to the
@@ -373,19 +382,89 @@ class BoundaryInfo : public ParallelObject
373382 * \p id's existence from the BoundaryInfo object. That is, after
374383 * calling remove_id(), \p id will no longer be in the sets returned by
375384 * get_boundary_ids(), get_side_boundary_ids(), etc., and will not
376- * be in the bc_id_list vector returned by build_side_list(), etc. Set
377- * the \p global parameter to true if this is being called for all processes
378- * in the object's communicator, in which case we will remove the id from
379- * the global boundary ID container
385+ * be in the bc_id_list vector returned by build_side_list(), etc.
386+ *
387+ * Set the \p global parameter to true if this is being called for
388+ * all processes in the object's communicator, in which case we will
389+ * remove the id from the global boundary ID container
380390 */
381391 void remove_id (boundary_id_type id, bool global = false );
382392
393+ /* *
394+ * Removes all sides with boundary id \p id from the BoundaryInfo
395+ * object, removes it from the set of side boundary ids, and removes
396+ * it from the set of boundary ids if no other boundary type uses it.
397+ *
398+ * Set the \p global parameter to true if this is being called for
399+ * all processes in the object's communicator, in which case we will
400+ * remove the id from the global boundary ID container
401+ */
402+ void remove_side_id (boundary_id_type id, bool global = false );
403+
404+ /* *
405+ * Removes all edges with boundary id \p id from the BoundaryInfo
406+ * object, removes it from the set of edge boundary ids, and removes
407+ * it from the set of boundary ids if no other boundary type uses it.
408+ *
409+ * Set the \p global parameter to true if this is being called for
410+ * all processes in the object's communicator, in which case we will
411+ * remove the id from the global boundary ID container
412+ */
413+ void remove_edge_id (boundary_id_type id, bool global = false );
414+
415+ /* *
416+ * Removes all shellfaces with boundary id \p id from the
417+ * BoundaryInfo object, removes it from the set of shellface
418+ * boundary ids, and removes it from the set of boundary ids if no
419+ * other boundary type uses it.
420+ *
421+ * Set the \p global parameter to true if this is being called for
422+ * all processes in the object's communicator, in which case we will
423+ * remove the id from the global boundary ID container
424+ */
425+ void remove_shellface_id (boundary_id_type id, bool global = false );
426+
427+ /* *
428+ * Removes all nodes with boundary id \p id from the BoundaryInfo
429+ * object, removes it from the set of node boundary ids, and removes
430+ * it from the set of boundary ids if no other boundary type uses it.
431+ *
432+ * Set the \p global parameter to true if this is being called for
433+ * all processes in the object's communicator, in which case we will
434+ * remove the id from the global boundary ID container
435+ */
436+ void remove_node_id (boundary_id_type id, bool global = false );
437+
383438 /* *
384439 * Changes all entities (nodes, sides, edges, shellfaces) with boundary
385440 * id \p old_id to instead be labeled by boundary id \p new_id.
386441 */
387442 void renumber_id (boundary_id_type old_id, boundary_id_type new_id);
388443
444+ /* *
445+ * Changes all sides with boundary id \p old_id to instead be
446+ * labeled by boundary id \p new_id.
447+ */
448+ void renumber_side_id (boundary_id_type old_id, boundary_id_type new_id);
449+
450+ /* *
451+ * Changes all edges with boundary id \p old_id to instead be
452+ * labeled by boundary id \p new_id.
453+ */
454+ void renumber_edge_id (boundary_id_type old_id, boundary_id_type new_id);
455+
456+ /* *
457+ * Changes all shellfaces with boundary id \p old_id to instead be
458+ * labeled by boundary id \p new_id.
459+ */
460+ void renumber_shellface_id (boundary_id_type old_id, boundary_id_type new_id);
461+
462+ /* *
463+ * Changes all nodes with boundary id \p old_id to instead be
464+ * labeled by boundary id \p new_id.
465+ */
466+ void renumber_node_id (boundary_id_type old_id, boundary_id_type new_id);
467+
389468 /* *
390469 * \returns The number of user-specified boundary ids on the
391470 * semilocal part of the mesh.
@@ -654,8 +733,12 @@ class BoundaryInfo : public ParallelObject
654733 /* *
655734 * Adds nodes with boundary ids based on the side's boundary
656735 * ids they are connected to.
736+ *
737+ * @param sideset_list sidesets to build nodesets from.
738+ * If empty (default), builds from all existing
739+ * sidesets
657740 */
658- void build_node_list_from_side_list ();
741+ void build_node_list_from_side_list (const std::set<boundary_id_type> & sideset_list = {} );
659742
660743 /* *
661744 * Adds sides to a sideset if every node on that side are in the same
0 commit comments