- inputThe input mesh to be modified.
C++ Type:MeshGeneratorName
Unit:(no unit assumed)
Controllable:No
Description:The input mesh to be modified.
- input_mesh_external_boundaryThe external boundary of the input mesh.
C++ Type:BoundaryName
Unit:(no unit assumed)
Controllable:No
Description:The external boundary of the input mesh.
- peripheral_ring_block_idThe block id assigned to the created peripheral layer.
C++ Type:unsigned short
Unit:(no unit assumed)
Controllable:No
Description:The block id assigned to the created peripheral layer.
- peripheral_ring_radiusRadius of the peripheral ring to be added.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Radius of the peripheral ring to be added.
PeripheralRingMeshGenerator
This PeripheralRingMeshGenerator object adds a circular peripheral region to the input mesh.
Overview
The PeripheralRingMeshGenerator
object adds a 2D peripheral region using either first-order or second-order quadrilateral elements (i.e., QUAD4 or QUAD9) with a circular external boundary to the input 2D mesh. The order of the elements is automatically determined by the order of the input mesh elements on its external boundary. Mixed element order is NOT supported. A common use of this mesh generator is to mesh the circular peripheral region of a reactor core. This mesh generator can be used recursively on a mesh to add as many rings of peripheral regions as desired.
More Information
The use of this mesh generator requires an input mesh defined by "input" and the name/ID of its external boundary defined by "input_mesh_external_boundary". PeripheralRingMeshGenerator
examines the external boundary of the input mesh to confirm whether the algorithm will function properly for the given external boundary. Trivially, the external boundary of the input mesh must be a single-segment closed loop.
This object then calculates the azimuthal angles of all the nodes on the external boundary of the input mesh. Each node on the input mesh external boundary is then used as the start point of a line segment, whose end point (node) lies on the circle defined by "peripheral_ring_radius". The segment is therefore aligned along the same azimuthal angle as the start point. Intermediate nodes may also be added if "peripheral_layer_num" is greater than unity. Currently, the algorithm only works when the azimuthal angles of the boundary nodes change monotonically as the external boundary is traversed. This object always generates a peripheral ring with its center at the origin, no matter where the centroid of the "input" mesh is. Optionally, "force_input_centroid_as_center" can be set as true
to move the centroid of the "input" mesh to the origin.
The added peripheral block must be assigned an ID given by "peripheral_ring_block_id" along with an optional name given by "peripheral_ring_block_name". The new external boundary of the mesh can also be assigned an ID and a name through "external_boundary_id" and "external_boundary_name", respectively.
Optionally, users can preserve the volume of the peripheral ring region by setting "preserve_volumes" as true
to enable correction of polygonization effect.

Figure 1: The peripheral block (in teal) created by this mesh generator using the input shown in Example Syntax section.
In addition, the radial meshing density of the peripheral ring region can be biased by setting the "peripheral_radial_bias" parameter. The bias value should be a positive Real
type parameter, which is the radial dimension ratio between two radially-neighboring elements (outer to inner).
Aside from the general mesh radial biasing options described above, users can also define boundary layers within the peripheral ring region. Both inner and outer boundary layers are supported. Each boundary layer has three key parameters that need to be provided:
"peripheral_inner_boundary_layer_width"/"peripheral_outer_boundary_layer_width": the radiation width of the boundary layer within the region. Note that the summation of the inner and outer boundary layers width must be smaller than the thinnest part of the peripheral ring.
"peripheral_inner_boundary_layer_intervals"/"peripheral_outer_boundary_layer_intervals": the number of radial mesh discretization of the boundary layer.
"peripheral_inner_boundary_layer_bias"/"peripheral_outer_boundary_layer_bias": the growth factor used for radial mesh biasing for the boundary layer.

Figure 2: The peripheral block (in teal) created by this mesh generator with biased boundary layers.
Example Syntax
(contrib/moose/modules/reactor/test/tests/meshgenerators/peripheral_ring_mesh_generator/core_ring.i)Input Parameters
- 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.
- force_input_centroid_as_centerFalseWhether to enforce use of the centroid position of the input mesh as the center of the peripheral ring by translating the input mesh to the origin.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether to enforce use of the centroid position of the input mesh as the center of the peripheral ring by translating the input mesh to the origin.
- peripheral_layer_num3The radial layers of the peripheral ring to be added.
Default:3
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The radial layers of the peripheral ring to be added.
- peripheral_ring_block_nameThe block name assigned to the created peripheral layer.
C++ Type:SubdomainName
Unit:(no unit assumed)
Controllable:No
Description:The block name assigned to the created peripheral layer.
- preserve_volumesTrueWhether the volume of the peripheral region is preserved by fixing the radius.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether the volume of the peripheral region is preserved by fixing the radius.
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
- peripheral_inner_boundary_layer_bias1Growth factor used for mesh biasing of the peripheral ring inner boundary layer.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Growth factor used for mesh biasing of the peripheral ring inner boundary layer.
- peripheral_inner_boundary_layer_intervals1Number of radial intervals of the peripheral ring inner boundary layer
Default:1
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Number of radial intervals of the peripheral ring inner boundary layer
- peripheral_inner_boundary_layer_width0Width of peripheral ring region that is assigned to be the inner boundary layer.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Width of peripheral ring region that is assigned to be the inner boundary layer.
- peripheral_outer_boundary_layer_bias1Growth factor used for mesh biasing of the peripheral ring outer boundary layer.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Growth factor used for mesh biasing of the peripheral ring outer boundary layer.
- peripheral_outer_boundary_layer_intervals1Number of radial intervals of the peripheral ring outer boundary layer
Default:1
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Number of radial intervals of the peripheral ring outer boundary layer
- peripheral_outer_boundary_layer_width0Width of peripheral ring region that is assigned to be the outer boundary layer.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Width of peripheral ring region that is assigned to be the outer boundary layer.
- peripheral_radial_bias1Value used to create biasing in radial meshing for peripheral ring region.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Value used to create biasing in radial meshing for peripheral ring region.