- inputThe input mesh to be modified.
C++ Type:MeshGeneratorName
Controllable:No
Description:The input mesh to be modified.
- input_mesh_external_boundaryThe external boundary of the input mesh.
C++ Type:BoundaryName
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
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
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 first-order quadrilateral elements (i.e., QUAD4) with a circular external boundary to the input 2D mesh. 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.
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
[pr]
type = PeripheralRingMeshGenerator
input = fmg
peripheral_layer_num = 3
peripheral_ring_radius = 80.0
input_mesh_external_boundary = 10000
peripheral_ring_block_id = 250
peripheral_ring_block_name = reactor_ring
[]
(modules/reactor/test/tests/meshgenerators/peripheral_ring_mesh_generator/core_ring.i)Input Parameters
- external_boundary_idOptional customized external boundary id.
C++ Type:short
Controllable:No
Description:Optional customized external boundary id.
- external_boundary_nameOptional customized external boundary name.
C++ Type:std::string
Controllable:No
Description:Optional customized external boundary name.
- peripheral_layer_num3The radial layers of the peripheral ring to be added.
Default:3
C++ Type:unsigned int
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
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
Controllable:No
Description:Whether the volume of the peripheral region is preserved by fixing the radius.
- 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
Controllable:No
Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
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
Controllable:No
Description:Set the enabled status of the MooseObject.
Advanced Parameters
- peripheral_inner_boundary_layer_bias1Growth factor used for mesh biasing of the peripheral ring inner boundary layer.
Default:1
C++ Type:double
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
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
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
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
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
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
Controllable:No
Description:Value used to create biasing in radial meshing for peripheral ring region.