SimpleHexagonGenerator

This SimpleHexagonGenerator object is designed to generate a simple hexagonal mesh that only contains six simple azimuthal triangular elements, two quadrilateral elements, or six central azimuthal triangular elements plus a several layers of quadrilateral elements.

Overview

SimpleHexagonGenerator is a simple version of PolygonConcentricCircleMeshGenerator. This mesh generator meshes a simple hexagon with no pin. This mesh generator is commonly used to mesh homogenized pins or assemblies with either 6 triangular elements (default option, "element_type" as TRI) or 2 quadrilateral elements ("element_type" as QUAD, see Figure 2). No additional azimuthal or radial discretizations are permitted with these two options.

A third option is available to introduce additional radial layers in the form of concentric hexagonal zones using "element_type" as HYBRID. In that case, the azimuthal discretization is identical to the TRI case (num_sectors_per_side = {1, 1, 1, 1, 1, 1}) but the mesh can now have multiple radial layers of elements (i.e. triangular elements in the center and quadrilateral elements in the outer layers as shown in simple_hex_hybrid]). The number of layers is specified by [!param. It is important to note that this option creates two separate subdomains (one for TRI elements, one for QUAD elements), and requires two separate subdomain IDs rather than one.

Figure 1: A schematic drawing showing a typical simple hexagonal mesh generated by this SimpleHexagonGenerator object with "element_type" as TRI.

Figure 2: A hexagonal mesh generated by SimpleHexagonGenerator with "element_type" as QUAD.

Figure 3: A hexagonal mesh generated by SimpleHexagonGenerator with "element_type" as HYBRID (note the additional radial discretizations).

This mesh generator creates the same MeshMetaData as PolygonConcentricCircleMeshGenerator. The produced mesh can be used as inputs to PatternedHexMeshGenerator.

Example Syntax

[Mesh]
  [shg]
    type = SimpleHexagonGenerator
    hexagon_size = 1.0
    block_id = 100
    block_name = hexagon
    external_boundary_id = 300
    external_boundary_name = 'external_side'
  []
[]
(contrib/moose/modules/reactor/test/tests/meshgenerators/simple_hexagon_generator/sim_hex.i)

Input Parameters

  • hexagon_sizeSize of the hexagon to be generated.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Size of the hexagon to be generated.

Required Parameters

  • element_typeTRIWhether the simple hexagon mesh is made of TRI or QUAD elements.

    Default:TRI

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:TRI, QUAD, HYBRID

    Controllable:No

    Description:Whether the simple hexagon mesh is made of TRI or QUAD elements.

  • hexagon_size_styleapothemStyle in which the hexagon size is given (default: apothem i.e. half-pitch). Option: apothem radius

    Default:apothem

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:apothem, radius

    Controllable:No

    Description:Style in which the hexagon size is given (default: apothem i.e. half-pitch). Option: apothem radius

  • radial_intervalsNumber of pin radial meshing rings (only applicable when 'element_type' is 'HYBRID').

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of pin radial meshing rings (only applicable when 'element_type' is 'HYBRID').

Optional Parameters

  • block_idOptional customized block id; two ids are needed for HYBRID 'element_type'.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized block id; two ids are needed for HYBRID 'element_type'.

  • block_nameOptional customized block name; two names are needed for HYBRID 'element_type'.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized block name; two names are needed for HYBRID 'element_type'.

  • external_boundary_idOptional customized external boundary id.

    C++ Type:short

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized external boundary id.

  • external_boundary_nameOptional customized external boundary name.

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional customized external boundary name.

Customized Subdomain/Boundary 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