PatternedMeshGenerator

Creates a 2D mesh from a specified set of unique 'tiles' meshes and a two-dimensional pattern.

Overview

The PatternedMeshGenerator object is similar to TiledMeshGenerator. However, it is restricted to two dimensions and adds the ability to create a tile pattern from an arbitrary number of input meshes.

commentnote

The MeshGenerators provided in inputs are no longer required to have the same boundary ids for a given boundary name. In this case, boundary ids for all (cloned) input MeshGenerators are first renamed to a common unused set of ids. Then the resulting stitched patterned mesh will be changed again to boundary ids that are the same as the first entry of the passed inputs parameter.

commentnote

Although best efforts have been made to ensure that the PatternedMeshGenerator fails with a descriptive error message when provided with invalid or ambiguous input, there are some exceptions that will result in silent failure (the input meshes are stitched together incorrectly and the program continues to run). If this occurs, this issue is likely that one of the left/right/top/bottom_boundary input parameters is set to an incorrect value (i.e., left_boundary = 'right', when the 'right' boundary does not have outward normal (-1, 0, 0)). Check for mistakes like these when troubleshooting errors. Additionally, it should be confirmed that the values of the left/right/top/bottom_boundary parameters are correct for EVERY mesh provided in the 'inputs' parameter (i.e., each mesh in 'inputs' should have the same boundary name, ids may differ, and locations).

For example the input meshes shown in Figures 1 and 2 can be organized into a two dimensional pattern within the input file, as shown below, to create the pattern shown in Figure 3.

[Mesh]
  [./fmg]
    type = FileMeshGenerator
    file = quad_mesh.e
  []

  [./fmg2]
    type = FileMeshGenerator
    file = tri_mesh.e
  []

  [./pmg]
    type = PatternedMeshGenerator
    inputs = 'fmg fmg2'
    pattern = '0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;
               0 1 1 0 0 0 0 0 0 0 0 1 1 0 ;
               0 1 1 1 0 0 0 0 0 0 1 1 1 0 ;
               0 1 0 1 1 0 0 0 0 1 1 0 1 0 ;
               0 1 0 0 1 1 0 0 1 1 0 0 1 0 ;
               0 1 0 0 0 1 1 1 1 0 0 0 1 0 ;
               0 1 0 0 0 0 1 1 0 0 0 0 1 0 ;
               0 1 0 0 0 0 0 0 0 0 0 0 1 0 ;
               0 1 0 0 0 0 0 0 0 0 0 0 1 0 ;
               0 1 0 0 0 0 0 0 0 0 0 0 1 0 ;
               0 1 0 0 0 0 0 0 0 0 0 0 1 0 ;
               0 0 0 0 0 0 0 0 0 0 0 0 0 0'
    bottom_boundary = 1
    right_boundary = 2
    top_boundary = 3
    left_boundary = 4
  []
[]
(moose/test/tests/meshgenerators/patterned_mesh_generator/patterned_mesh_generator.i)

Fig 1: Input put mesh: quad_mesh.e

Fig 2: Input put mesh: tri_mesh.e

Fig 3: Resulting mesh created using PatternedMesh.

Input Parameters

  • inputsThe input MeshGenerators.

    C++ Type:std::vector<MeshGeneratorName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The input MeshGenerators.

  • patternA double-indexed array starting with the upper-left corner

    C++ Type:std::vector<std::vector<unsigned int>>

    Unit:(no unit assumed)

    Controllable:No

    Description:A double-indexed array starting with the upper-left corner

Required Parameters

  • bottom_boundarybottomname of the bottom (y) boundary

    Default:bottom

    C++ Type:BoundaryName

    Unit:(no unit assumed)

    Controllable:No

    Description:name of the bottom (y) boundary

  • left_boundaryleftname of the left (x) boundary

    Default:left

    C++ Type:BoundaryName

    Unit:(no unit assumed)

    Controllable:No

    Description:name of the left (x) boundary

  • right_boundaryrightname of the right (x) boundary

    Default:right

    C++ Type:BoundaryName

    Unit:(no unit assumed)

    Controllable:No

    Description:name of the right (x) boundary

  • top_boundarytopname of the top (y) boundary

    Default:top

    C++ Type:BoundaryName

    Unit:(no unit assumed)

    Controllable:No

    Description:name of the top (y) boundary

  • x_width0The tile width in the x direction

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The tile width in the x direction

  • y_width0The tile width in the y direction

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The tile width in the y direction

  • z_width0The tile width in the z direction

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The tile width in the z direction

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

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

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

  • save_with_nameKeep the mesh from this mesh generator in memory with the name specified

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Keep the mesh from this mesh generator in memory with the name specified

Advanced Parameters

  • nemesisFalseWhether or not to output the mesh file in the nemesisformat (only if output = true)

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to output the mesh file in the nemesisformat (only if output = true)

  • outputFalseWhether or not to output the mesh file after generating the mesh

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to output the mesh file after generating the mesh

  • 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

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)

Debugging Parameters