- inputThe mesh we want to modify
C++ Type:MeshGeneratorName
Description:The mesh we want to modify
BreakMeshByBlockGenerator
Break boundaries based on the subdomains to which their sides are attached. Naming convention for the new boundaries will be the old boundary name plus "_to_" plus the subdomain name. At the momentthis only works on REPLICATED mesh
Description
This class implements a MeshGenerator to split a monolithic mesh by blocks similar to what is proposed by VP Nguyen Nguyen (2014).
To split the mesh, nodes shared by multiple blocks are duplicated N-1 times (where N is the number of blocks sharing a particular node). Each duplicated nodes is assigned to one block and all the elements sharing that node are updated. A new sideset identifying the new interface is added, and it is always linked to elements belonging to blocks with the lower ID.
As an option, the interface can be split into different sidesets, where is the number of adjacent block pairs. This is achieved by setting split_interface=true
and is useful when modeling interfaces with different parameters.
The split can be restricted to the blocks listed in the block
input parameter. When blocks are provided the additional boundary interface_transition
is added. The interface_transition
boundary identifies the interface between the provided blocks and the rest of the mesh. The creation of interface_transition
boundary can be inhibited by setting add_transition_interface=false
and transition boundaries are added to the interface
sidesets. The interface_transition_name
parameter allows to change the name of the resulting interface transition boundary. If present, the interface_transition
boundary can be split by setting split_transition_interface=true
.
Example Input File Syntax
Single Interface
[Mesh]
[./fmg]
type = FileMeshGenerator
file = 4ElementJunction.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
[]
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_auto.i)Multiple Interfaces
When split_interface=true
, the new generated interface is split by block pairs and named by joining the block names. For instance if one has two neighboring blocks - one named wood
and named steel
with blockID
equal to 1
and 2
, respectively - the new interface will be named wood_steel
. The naming order follows the block ID order. For this simple example, the new sideset will be on the block named wood
. If one block is not named, its name will default to Block
plus the blockID
. For instance, if block 2 is not named the new interface will be named wood_Block2
.
[Mesh]
[./fmg]
type = FileMeshGenerator
file = 4ElementJunction.e
[]
[./breakmesh]
type = BreakMeshByBlockGenerator
input = fmg
split_interface = true
[]
[]
(test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_splittrue.i)Input Parameters
- add_transition_interfaceTrueIf true (default) and block is not empty, a special boundary named interface_transition is generate between listed blocks and other blocks.
Default:True
C++ Type:bool
Description:If true (default) and block is not empty, a special boundary named interface_transition is generate between listed blocks and other blocks.
- blockThe list of subdomain names where the mesh should be split, default all blocks.
C++ Type:std::vector<unsigned short>
Description:The list of subdomain names where the mesh should be split, default all blocks.
- interface_nameinterfacethe name of the new interface. Cannot be used whit `split_interface=true`
Default:interface
C++ Type:std::string
Description:the name of the new interface. Cannot be used whit `split_interface=true`
- interface_transition_nameinterface_transitionthe name of the interface transition boundary created when blocks are provided
Default:interface_transition
C++ Type:BoundaryName
Description:the name of the interface transition boundary created when blocks are provided
- show_infoFalseWhether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Default:False
C++ Type:bool
Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
- split_interfaceFalseIf true, it creates a different interface for each block pair.
Default:False
C++ Type:bool
Description:If true, it creates a different interface for each block pair.
- split_transition_interfaceFalseWhether to split the transition interface by blocks.
Default:False
C++ Type:bool
Description:Whether to split the transition interface by blocks.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Description:Set the enabled status of the MooseObject.
Advanced Parameters
Input Files
- (test/tests/mesh_modifiers/break_mesh_by_blocks/2D/TestBreakMesh_2DJunction_splitTrue_Auto.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_block_restricted.i)
- (test/tests/mesh_modifiers/break_mesh_by_blocks/2D/TestBreakMesh_2D_polycrystal.i)
- (test/tests/interfacekernels/ik_displaced/different_jxw_displaced.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_auto.i)
- (test/tests/mesh_modifiers/break_mesh_by_blocks/3D/TestBreakMesh_3D_polycrystal.i)
- (test/tests/materials/interface_material/interface_value_material_split_mesh.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_auto.i)
- (modules/tensor_mechanics/test/tests/czm/czm_3DC_3D_base_input.i)
- (test/tests/mesh_modifiers/break_mesh_by_blocks/2D/TestBreakMesh_2DJunction_Auto.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_splittrue.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_splittrue.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_3D_polycrystal.i)
- (test/tests/materials/interface_material/interface_value_material_split_mesh_stateful.i)
- (test/tests/mesh_modifiers/break_mesh_by_blocks/3D/TestBreakMesh_3D_3Block_splitTrue_Auto.i)
- (test/tests/mesh_modifiers/break_mesh_by_blocks/3D/TestBreakMesh_3D_3Block_Auto.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/break_mesh_2DJunction_polycrystal.i)
- (test/tests/meshgenerators/break_mesh_by_block_generator/hanging_nodes_parallel.i)
- (modules/tensor_mechanics/test/tests/czm/czm_patch_test.i)
References
- Vinh Phu Nguyen.
An open source program to generate zero-thickness cohesive interface elements.
Advances in Engineering Software, 74:27–39, 2014.
doi:10.1016/j.advengsoft.2014.04.002.[BibTeX]