- 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.
HexagonConcentricCircleAdaptiveBoundaryMeshGenerator
This HexagonConcentricCircleAdaptiveBoundaryMeshGenerator object is designed to generate hexagonal meshes with adaptive boundary to facilitate stitching.
Overview
The HexagonConcentricCircleAdaptiveBoundaryMeshGenerator
object generates a 2D mesh for concentric circles with a hexagon enclosure with or without external ducts. It is similar to PolygonConcentricCircleMeshGenerator
and the majority of the parameters and functionalities of this object are described in the documentation of PolygonConcentricCircleMeshGenerator
. The major unique feature of this object is that the "num_sectors_per_side" parameter will be overridden to enable stitching to another hexagonal mesh (provided via "meshes_to_adapt_to" to this object). This object therefore creates hexagonal meshes that can be directly stitched with hexagonal meshes generated by PolygonConcentricCircleMeshGenerator
and PatternedHexMeshGenerator
. This object only works for hexagons instead of general polygons.
More Information
In order to adapt the external boundary to match input meshes (typically generated by PatternedHexMeshGenerator
), two extra input parameters must be provided:
"sides_to_adapt": a vector parameter that can include up to six elements which lists the reference hexagon side numbers to adaptively mesh. These entries must be non-repeating integers from 0 to 5 (see Figure 1). The hexagon sides are indexed counterclockwise starting from the upper-right side.
"meshes_to_adapt_to": a vector parameter that includes the same number of elements as "sides_to_adapt". These elements are input hexagonal meshes whose boundary nodes will be queried and used to adaptively mesh a side of the hexagonal mesh being created. The input hexagonal meshes are generated by
PatternedHexMeshGenerator
orPolygonConcentricCircleMeshGenerator
. Multiple meshes may be input, each one corresponding to the side index value specified in "sides_to_adapt". The same input mesh may be repeated multiple times.

Figure 1: A schematic drawing showing the hexagon side indices in HexagonConcentricCircleAdaptiveBoundaryMeshGenerator
object.
The "hexagon_size" provided here must be consistent with the "hexagon_size" values of all the "meshes_to_adapt_to" generators.
The mesh generator can generate meshes with either linear or quadratic elements, which is controlled by the "tri_element_type" and "quad_element_type" parameters. The "meshes_to_adapt_to" must have the consistent element types for compatibility.
One major application of this object is to generate meshes for control drums. In that case, "is_control_drum" can be set as true so that corresponding MeshMetaData
can be generated for future use with control drum related objects.
Example Syntax
(contrib/moose/modules/reactor/test/tests/meshgenerators/hexagon_concentric_circle_adaptive_boundary_generator/hex_2d.i)Here, a simple hexagon mesh stored in an Exodus file is used as the input of HexagonConcentricCircleAdaptiveBoundaryMeshGenerator
. Only Side 0 of the generated mesh is set to adapt the input mesh (i.e., Side 3 of the input mesh), as shown in Figure 2. Note that only Side 0 of the generated mesh matches the input mesh (Side 3).

Figure 2: A schematic drawing showing the input and generated meshes of the example case.
Input Parameters
- background_inner_boundary_layer_bias1Growth factor used for mesh biasing of the background inner boundary layer.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Growth factor used for mesh biasing of the background inner boundary layer.
- background_inner_boundary_layer_intervals1Number of radial intervals of the background inner boundary layer
Default:1
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Number of radial intervals of the background inner boundary layer
- background_inner_boundary_layer_width0Width of background region that is assigned to be the inner boundary layer.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Width of background region that is assigned to be the inner boundary layer.
- background_outer_boundary_layer_bias1Growth factor used for mesh biasing of the background outer boundary layer.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Growth factor used for mesh biasing of the background outer boundary layer.
- background_outer_boundary_layer_intervals1Number of radial intervals of the background outer boundary layer
Default:1
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Number of radial intervals of the background outer boundary layer
- background_outer_boundary_layer_width0Width of background region that is assigned to be the outer boundary layer.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Width of background region that is assigned to be the outer boundary layer.
- background_radial_bias1Value used to create biasing in radial meshing for background region.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Value used to create biasing in radial meshing for background region.
- duct_inner_boundary_layer_biasesGrowth factors used for mesh biasing of the duct inner boundary layers.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Growth factors used for mesh biasing of the duct inner boundary layers.
- duct_inner_boundary_layer_intervalsNumber of radial intervals of the duct inner boundary layers
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:Number of radial intervals of the duct inner boundary layers
- duct_inner_boundary_layer_widthsWidths of duct regions that are assigned to be the inner boundary layers.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Widths of duct regions that are assigned to be the inner boundary layers.
- duct_outer_boundary_layer_biasesGrowth factors used for mesh biasing of the duct outer boundary layers.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Growth factors used for mesh biasing of the duct outer boundary layers.
- duct_outer_boundary_layer_intervalsNumber of radial intervals of the duct outer boundary layers
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:Number of radial intervals of the duct outer boundary layers
- duct_outer_boundary_layer_widthsWidths of duct regions that are assigned to be the outer boundary layers.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Widths of duct regions that are assigned to be the outer boundary layers.
- duct_radial_biasesValues used to create biasing in radial meshing for duct regions.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Values used to create biasing in radial meshing for duct regions.
- duct_sizesDistance(s) from polygon center to duct(s) inner boundaries.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Distance(s) from polygon center to duct(s) inner boundaries.
- duct_sizes_styleradiusStyle in which polygon center to duct inner boundary distance is given (apothem = center to face, radius = center to vertex). Options: apothem radius
Default:radius
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:Style in which polygon center to duct inner boundary distance is given (apothem = center to face, radius = center to vertex). Options: apothem radius
- flat_side_upFalseWhether to rotate the generated polygon mesh to ensure that one flat side faces up.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether to rotate the generated polygon mesh to ensure that one flat side faces up.
- hexagon_size_styleapothemStyle in which the hexagon size is given (default: apothem i.e. half-pitch).
Default:apothem
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:Style in which the hexagon size is given (default: apothem i.e. half-pitch).
- meshes_to_adapt_toThe name list of the input meshes to adapt to.
C++ Type:std::vector<MeshGeneratorName>
Unit:(no unit assumed)
Controllable:No
Description:The name list of the input meshes to adapt to.
- preserve_volumesTrueVolume of concentric circles can be preserved using this function.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Volume of concentric circles can be preserved using this function.
- quad_element_typeQUAD4Type of the quadrilateral elements to be generated.
Default:QUAD4
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:Type of the quadrilateral elements to be generated.
- ring_radiiRadii of major concentric circles (rings).
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Radii of major concentric circles (rings).
- sides_to_adaptList of the hexagon reference side indices that correspond to the sides that need adaptive meshing. The meshes to adapt these sides to are provided in 'inputs'.
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:List of the hexagon reference side indices that correspond to the sides that need adaptive meshing. The meshes to adapt these sides to are provided in 'inputs'.
- tri_element_typeTRI3Type of the triangular elements to be generated.
Default:TRI3
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:Type of the triangular elements to be generated.
Optional Parameters
- background_block_idsOptional customized block id for the background block.
C++ Type:std::vector<unsigned short>
Unit:(no unit assumed)
Controllable:No
Description:Optional customized block id for the background block.
- background_block_namesOptional customized block names for the background block.
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
Controllable:No
Description:Optional customized block names for the background block.
- block_id_shift0Integer used to shift block IDs.
Default:0
C++ Type:unsigned short
Unit:(no unit assumed)
Controllable:No
Description:Integer used to shift block IDs.
- create_inward_interface_boundariesFalseWhether the inward interface boundaries are created.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether the inward interface boundaries are created.
- create_outward_interface_boundariesTrueWhether the outward interface boundaries are created.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether the outward interface boundaries are created.
- duct_block_idsOptional customized block ids for each duct geometry block.
C++ Type:std::vector<unsigned short>
Unit:(no unit assumed)
Controllable:No
Description:Optional customized block ids for each duct geometry block.
- duct_block_namesOptional customized block names for each duct geometry block.
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
Controllable:No
Description:Optional customized block names for each duct geometry block.
- 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.
- generate_side_specific_boundariesFalsewhether the side-specific external boundaries are generated or not
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:whether the side-specific external boundaries are generated or not
- interface_boundary_id_shift0Integer used to shift interface boundary IDs.
Default:0
C++ Type:short
Unit:(no unit assumed)
Controllable:No
Description:Integer used to shift interface boundary IDs.
- inward_interface_boundary_namesOptional customized boundary names for the internal inward interfaces between block.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Optional customized boundary names for the internal inward interfaces between block.
- outward_interface_boundary_namesOptional customized boundary names for the internal outward interfaces between block.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Optional customized boundary names for the internal outward interfaces between block.
- ring_block_idsOptional customized block ids for each ring geometry block.
C++ Type:std::vector<unsigned short>
Unit:(no unit assumed)
Controllable:No
Description:Optional customized block ids for each ring geometry block.
- ring_block_namesOptional customized block names for each ring geometry block.
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
Controllable:No
Description:Optional customized block names for each ring geometry block.
Customized Subdomain/Boundary Parameters
- background_intervals1Number of radial meshing intervals in background region (area between rings and ducts) excluding the background's boundary layers.
Default:1
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Number of radial meshing intervals in background region (area between rings and ducts) excluding the background's boundary layers.
- duct_intervalsNumber of meshing intervals in each enclosing duct excluding duct boundary layers.
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:Number of meshing intervals in each enclosing duct excluding duct boundary layers.
- num_sectors_per_sideNumber of azimuthal sectors per polygon side (rotating counterclockwise from top right face).
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:Number of azimuthal sectors per polygon side (rotating counterclockwise from top right face).
- ring_intervalsNumber of radial mesh intervals within each major concentric circle excluding their boundary layers.
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:Number of radial mesh intervals within each major concentric circle excluding their boundary layers.
General Mesh Density 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
- is_control_drumFalseWhether this mesh is for a control drum. The value can be set as 'false' if the user wants to use this object for other components.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether this mesh is for a control drum. The value can be set as 'false' if the user wants to use this object for other components.
Control Drum 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
- ring_id_assign_typeblock_wiseType of ring ID assignment: block_wise or ring_wise
Default:block_wise
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:Type of ring ID assignment: block_wise or ring_wise
- ring_id_nameName of integer (reporting) ID for ring regions to use the reporting ID for annular regions of ring geometry block.
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:Name of integer (reporting) ID for ring regions to use the reporting ID for annular regions of ring geometry block.
- sector_id_nameName of integer (reporting) ID for sector regions to use the reporting ID for azimuthal sector regions of ring geometry block.
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:Name of integer (reporting) ID for sector regions to use the reporting ID for azimuthal sector regions of ring geometry block.
Ring/Sector Ids Parameters
- ring_inner_boundary_layer_biasesGrowth factors used for mesh biasing of the rings' inner boundary layers.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Growth factors used for mesh biasing of the rings' inner boundary layers.
- ring_inner_boundary_layer_intervalsNumber of radial intervals of the rings' inner boundary layers
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:Number of radial intervals of the rings' inner boundary layers
- ring_inner_boundary_layer_widthsWidths of each ring regions that are assigned to be each ring's inner boundary layers.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Widths of each ring regions that are assigned to be each ring's inner boundary layers.
- ring_outer_boundary_layer_biasesGrowth factors used for mesh biasing of the rings' outer boundary layers.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Growth factors used for mesh biasing of the rings' outer boundary layers.
- ring_outer_boundary_layer_intervalsNumber of radial intervals of the rings' outer boundary layers
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:Number of radial intervals of the rings' outer boundary layers
- ring_outer_boundary_layer_widthsWidths of each ring regions that are assigned to be each ring's outer boundary layers.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Widths of each ring regions that are assigned to be each ring's outer boundary layers.
- ring_radial_biasesValues used to create biasing in radial meshing for ring regions.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Values used to create biasing in radial meshing for ring regions.