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:

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

  • 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.

Required 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.

Mesh Boundary Layer And Biasing Options Parameters

Input Files