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

  • inputThe mesh we want to modify

    C++ Type:MeshGeneratorName

    Options:

    Description:The mesh we want to modify

Required 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

    Options:

    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>

    Options:

    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

    Options:

    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

    Options:

    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

    Options:

    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

    Options:

    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

    Options:

    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>

    Options:

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Options:

    Description:Set the enabled status of the MooseObject.

Advanced Parameters

Input Files

References

  1. 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]