13 #include <unordered_set> 25 std::unique_ptr<MeshBase>
generate()
override;
45 std::unordered_set<std::pair<SubdomainID, SubdomainID>>
_block_pairs;
66 std::map<std::pair<subdomain_id_type, subdomain_id_type>,
67 std::set<std::pair<dof_id_type, unsigned int>>>
void addInterfaceBoundary(MeshBase &mesh)
generate the new boundary interface
std::unordered_set< std::pair< SubdomainID, SubdomainID > > _block_pairs
set of subdomain pairs between which interfaces will be generated.
static InputParameters validParams()
const bool _surrounding_blocks_restricted
whether interfaces will be generated surrounding blocks
const bool _split_transition_interface
whether to split the transition boundary between the blocks and the rest of the mesh ...
const bool _block_pairs_restricted
whether interfaces will be generated between block pairs
bool findBlockPairs(subdomain_id_type block_one, subdomain_id_type block_two)
Return true if block_one and block_two are found in users' provided block_pairs list.
const BoundaryName _interface_transition_name
the name of the transition interface
std::unique_ptr< MeshBase > & _input
the mesh to modify
subdomain_id_type blockRestrictedElementSubdomainID(const Elem *elem)
This is a helper method to avoid recoding the same if everywhere.
std::unordered_set< SubdomainID > _block_set
set of the blocks to split the mesh on
const bool _add_transition_interface
whether to add a boundary when splitting the mesh
BreakMeshByBlockGenerator(const InputParameters ¶meters)
const bool _add_interface_on_two_sides
whether to add two sides interface boundaries
std::set< std::pair< subdomain_id_type, subdomain_id_type > > _neighboring_block_list
const InputParameters & parameters() const
Get the parameters of the object.
std::map< std::pair< subdomain_id_type, subdomain_id_type >, std::set< std::pair< dof_id_type, unsigned int > > > _new_boundary_sides_map
std::unique_ptr< MeshBase > generate() override
Generate / modify the mesh.