- inputsThe AssemblyMeshGenerator and ControlDrumMeshGenerator objects that form the components of the assembly.
C++ Type:std::vector<MeshGeneratorName>
Controllable:No
Description:The AssemblyMeshGenerator and ControlDrumMeshGenerator objects that form the components of the assembly.
- patternA double-indexed array starting with the upper-left corner where the indexrepresents the layout of input assemblies in the core lattice.
C++ Type:std::vector<std::vector<unsigned int>>
Controllable:No
Description:A double-indexed array starting with the upper-left corner where the indexrepresents the layout of input assemblies in the core lattice.
CoreMeshGenerator
This CoreMeshGenerator object is designed to generate a core-like structure, with IDs, from a reactor geometry. The core-like structure consists of a pattern of assembly-like structures generated with AssemblyMeshGenerator and/or ControlDrumMeshGenerator and is permitted to have "empty" locations. The size and spacing of the assembly-like structures is defined, and enforced by declaration in the ReactorMeshParams.
Overview
This object is designed to be used in the Reactor MeshGenerator workflow, which also consists of ReactorMeshParams
, PinMeshGenerator
, AssemblyMeshGenerator
, and ControlDrumMeshGenerator
.
The CoreMeshGenerator
object generates core-like reactor geometry structures in either square or hexagonal geometries with block ID assignments and reporting (extra integer) IDs, as described in PatternedCartesianMeshGenerator
and PatternedHexMeshGenerator
. There is expected to only be a single CoreMeshGenerator
in a Mesh definition.
This object automates the use and functionality of the PatternedCartesianMeshGenerator
for cartesian reactor geometry, PatternedHexMeshGenerator
for hexagonal reactor geometry and, if extruding to three dimensions, the `AdvancedExtruderGenerator' through the use of the MeshSubgenerator
functionality and supporting functionality from RenameBoundaryGenerator
and `PlaneIDMeshGenerator'. In addition to the functionality of the MeshGenerators
used, this object also automates boundary ID and name assignment.
In addition to the functionality of PatternedCartesianMeshGenerator
or PatternedHexMeshGenerator
, this object allows for the definition of "empty" lattice locations using MeshSubgenerators
. This is achieved through the use of creating "dummy" assembly meshes via CartesianMeshGenerator
or HexagonConcentricCircleAdaptiveBoundaryMeshGenerator
respectively. These assemblies are then removed after the core mesh creation via BlockDeletionGenerator
. If assembly homogenization is leveraged by setting both "use_as_assembly" and "homogenized" to true, then all assemblies inputted to CoreMeshGenerator
must be homogenized. Mixtures of heterogeneous and homogeneous assembly inputs to CoreMeshGenerator
are not currently supported.
The CoreMeshGenerator
object adopts much of the existing input structure of patterned MeshGenerators but also adapts to use parameters that are more accessible for reactor design.
Reporting ID Information
The CoreMeshGenerator
object automatically tags the mesh, if three dimensional, with the axial layers using the extra integer name "plane_id". The assemblies composing the core are also tagged via PatternedCartesianMeshGenerator
or PatternedHexMeshGenerator
, using the "cell" assignment type, with the extra integer name "assembly_id" and any "dummy" assembly (identified via the "dummy_assembly_name" parameter) locations excluded.
Depletion ID Information
The CoreMeshGenerator
object can optionally assign a depletion ID, with the extra integer name "depletion_id". The depletion ID generation option can be enabled by setting the "generate_depletion_id" to true. The level of detail needed for depletion zones is specified in the input parameter "depletion_id_type". For a core with heterogeneous assemblies, "depletion_id_type" can be either pin
and pin_type
. All pins in the core have separate depletion ID values by setting "depletion_id_type" to pin
. By setting that option to pin_type
, unique ID values are assigned to individual pin types in assemblies. However, pins in different assemblies have different depletion IDs even if they have the same type. For a core with homogenized assemblies (no explicit pins), "depletion_id_type" can be either assembly
and assembly_type
, which assign unique ID values to individual assemblies or to individual assembly types, respectively.
Exterior Boundary ID Information
The CoreMeshGenerator
objects automatically assigns boundary information. The exterior core boundary ID is assigned with the parameter "radial_boundary_id" and will have the name "outer_core".
If the core is extruded to three dimensions the top-most boundary ID must be assigned using "top_boundary_id" and will have the name "top", while the bottom-most boundary must be assigned using "bottom_boundary_id" and will have the name "bottom".
Flexible Assembly Stitching
By default, CoreMeshGenerator
will stitch assemblies created by AssemblyMeshGenerator
together without regard for the number and location of nodes at the exterior boundaries of the assemblies. This works if very similar assemblies are being stitched together. However, this will lead to an output core mesh with hanging nodes if dissimilar assemblies are being stitched together. The following situations are identified as scenarios where such hanging nodes can occur between stitched assemblies:
Two assemblies have the same constituent pin geometry but vary in total number of pins in the pin lattice
Two assemblies have the same pin lattice structure and geometry, but the constituent pins of each assembly are subdivided into a different number of sectors per side.
One assembly is defined as a heterogeneous mesh (contains one or more pins), and the other assembly is homogenized.
CoreMeshGenerator
will throw a warning if it detects that assembly stitching may lead to hanging nodes. If this happens, the user can regenerate the core mesh by setting ReactorMeshParams/"flexible_assembly_stitching" to true
to enable flexible assembly stitching. This flexible assembly stitching algorithm deletes the outermost mesh interval and replaces it with a triangulated region using FlexiblePatternGenerator
. For a homogeneous assembly, the entire assembly region is triangulated. By doing so, the number of nodes at the outer boundary of each input assembly will be identical and positioned at the same locations, thus enabling stitching of dissimilar assemblies. In order to control the number of sectors at the outer assembly boundary after the triangulation step, the user can set this parameter using ReactorMeshParams/"num_sectors_at_flexible_boundary". If the core lattice consists of any structures created with ControlDrumMeshGenerator, then ReactorMeshParams/"flexible_assembly_stitching" must be set to true
. The following three images describe how flexible assembly patterning can be used to address the issue of hanging nodes for the three cases listed above:



Metadata Information
Users may be interested in defining metadata to represent the reactor geometry and region IDs assigned to each geometry zone, which may be useful to users who want mesh geometry and composition information without having to inspect the generated mesh itself. At the core level, the following metadata is defined on the output mesh:
assembly_names
: Mesh generator names of input assemblies in lattice, similar to input parameter (/Mesh/CoreMeshGenerator/inputs) but with the dummy assembly name excludedlattice
: 2-D lattice of assemblies in core, where each location represents the 0-based index of the assembly in the list of names under theassembly_names
metadata entry. A -1 entry represents a dummy assembly.
For each of the assemblies listed in assembly_names
, the assembly-level metadata is also displayed. In addition, if any of these assemblies are comprised of pins in a lattice, the pin-level metadata of these constituent pins is also displayed. A list of assembly-level and pin-level metadata defined on the core mesh can be found in AssemblyMeshGenerator and PinMeshGenerator respectively.
For meshes where a core periphery is defined, the following metadata is also defined:
peripheral_ring_radius
: Outer radius of core periphery, equivalent to the input parameterCoreMeshGenerator
/"outer_circle_radius".peripheral_ring_region_id
: Region ID associated with core periphery, equivalent to the input parameterCoreMeshGenerator
/"periphery_region_id".
In addition, the value of the metadata reactor_params_name
can be used to retrieve global metadata defined by ReactorMeshParams. Please refer to ReactorMeshParams to see a list of metadata defined by this mesh generator.
For applications where an output mesh does not need to be created and meshing routines can consist entirely of defining reactor-based metadata, the parameter [Mesh]
/"data_driven_generator" can be set to the mesh generator that would generate an output mesh from RGMB metadata.
Example Syntax
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[rmp]
type = ReactorMeshParams<<<{"description": "This ReactorMeshParams object acts as storage for persistent information about the reactor geometry.", "href": "ReactorMeshParams.html"}>>>
dim<<<{"description": "The dimension of the mesh to be generated"}>>> = 3
geom<<<{"description": "The geometry type of the reactor mesh"}>>> = "Square"
assembly_pitch<<<{"description": "Center to center distance of assemblies"}>>> = 2.84126
radial_boundary_id<<<{"description": "The boundary ID to set on the outer radial boundary of a CoreMeshGenerator object"}>>> = 200
axial_regions<<<{"description": "Length of each axial region"}>>> = '1.0'
axial_mesh_intervals<<<{"description": "Number of elements in the Z direction for each axial region"}>>> = '1'
top_boundary_id<<<{"description": "The boundary ID to set on top boundary of the extruded mesh"}>>> = 201
bottom_boundary_id<<<{"description": "The boundary ID to set on bottom boundary of the extruded mesh"}>>> = 202
[]
[pin1]
type = PinMeshGenerator<<<{"description": "This PinMeshGenerator object is designed to generate pin-like structures, with IDs, from a reactor geometry. Whether it be a square or hexagonal pin, they are divided into three substructures - the innermost radial pin regions, the single bridging background region, and the square or hexagonal ducts regions.", "href": "PinMeshGenerator.html"}>>>
reactor_params<<<{"description": "The ReactorMeshParams MeshGenerator that is the basis for this component conformal mesh."}>>> = rmp
pin_type<<<{"description": "The integer ID for this pin type definition"}>>> = 1
pitch<<<{"description": "The pitch for the outermost boundary polygon"}>>> = 1.42063
region_ids<<<{"description": "IDs for each radial and axial zone for assignment of region_id extra element id. Inner indexing is radial zones (pin/background/duct), outer indexing is axial"}>>> = '1 2 5'
quad_center_elements<<<{"description": "Whether the center elements are quad or triangular."}>>> = true
num_sectors<<<{"description": "Number of azimuthal sectors in each quadrant"}>>> = 2
ring_radii<<<{"description": "Radii of major concentric circles of the pin. If unspecified, no pin is present."}>>> = 0.2
duct_halfpitch<<<{"description": "Apothem of the ducts. If unspecified, no duct is present."}>>> = 0.68
mesh_intervals<<<{"description": "The number of meshing intervals for each region starting at the center. Parameter should be size:((length(ring_radii) + length(duct_halfpitch) + 1"}>>> = '1 1 1'
[]
[pin2]
type = PinMeshGenerator<<<{"description": "This PinMeshGenerator object is designed to generate pin-like structures, with IDs, from a reactor geometry. Whether it be a square or hexagonal pin, they are divided into three substructures - the innermost radial pin regions, the single bridging background region, and the square or hexagonal ducts regions.", "href": "PinMeshGenerator.html"}>>>
reactor_params<<<{"description": "The ReactorMeshParams MeshGenerator that is the basis for this component conformal mesh."}>>> = rmp
pin_type<<<{"description": "The integer ID for this pin type definition"}>>> = 2
pitch<<<{"description": "The pitch for the outermost boundary polygon"}>>> = 1.42063
region_ids<<<{"description": "IDs for each radial and axial zone for assignment of region_id extra element id. Inner indexing is radial zones (pin/background/duct), outer indexing is axial"}>>> = '2'
quad_center_elements<<<{"description": "Whether the center elements are quad or triangular."}>>> = true
num_sectors<<<{"description": "Number of azimuthal sectors in each quadrant"}>>> = 2
mesh_intervals<<<{"description": "The number of meshing intervals for each region starting at the center. Parameter should be size:((length(ring_radii) + length(duct_halfpitch) + 1"}>>> = '2'
[]
[pin3]
type = PinMeshGenerator<<<{"description": "This PinMeshGenerator object is designed to generate pin-like structures, with IDs, from a reactor geometry. Whether it be a square or hexagonal pin, they are divided into three substructures - the innermost radial pin regions, the single bridging background region, and the square or hexagonal ducts regions.", "href": "PinMeshGenerator.html"}>>>
reactor_params<<<{"description": "The ReactorMeshParams MeshGenerator that is the basis for this component conformal mesh."}>>> = rmp
pin_type<<<{"description": "The integer ID for this pin type definition"}>>> = 3
pitch<<<{"description": "The pitch for the outermost boundary polygon"}>>> = 1.42063
region_ids<<<{"description": "IDs for each radial and axial zone for assignment of region_id extra element id. Inner indexing is radial zones (pin/background/duct), outer indexing is axial"}>>> = '3 4'
quad_center_elements<<<{"description": "Whether the center elements are quad or triangular."}>>> = true
num_sectors<<<{"description": "Number of azimuthal sectors in each quadrant"}>>> = 2
ring_radii<<<{"description": "Radii of major concentric circles of the pin. If unspecified, no pin is present."}>>> = 0.3818
mesh_intervals<<<{"description": "The number of meshing intervals for each region starting at the center. Parameter should be size:((length(ring_radii) + length(duct_halfpitch) + 1"}>>> = '1 1'
[]
[amg1]
type = AssemblyMeshGenerator<<<{"description": "This AssemblyMeshGenerator object is designed to generate assembly-like structures, with IDs, from a reactor geometry. The assembly-like structures must consist of a full pattern of equal sized pins from PinMeshGenerator. A hexagonal assembly will be placed inside of a bounding hexagon consisting of a background region and, optionally, duct regions.", "href": "AssemblyMeshGenerator.html"}>>>
assembly_type<<<{"description": "The integer ID for this assembly type definition"}>>> = 1
inputs<<<{"description": "The PinMeshGenerators that form the components of the assembly."}>>> = 'pin2'
pattern<<<{"description": "A double-indexed array starting with the upper-left corner where the indexrepresents the layout of input pins in the assembly lattice."}>>> = '0 0;
0 0'
[]
[amg2]
type = AssemblyMeshGenerator<<<{"description": "This AssemblyMeshGenerator object is designed to generate assembly-like structures, with IDs, from a reactor geometry. The assembly-like structures must consist of a full pattern of equal sized pins from PinMeshGenerator. A hexagonal assembly will be placed inside of a bounding hexagon consisting of a background region and, optionally, duct regions.", "href": "AssemblyMeshGenerator.html"}>>>
assembly_type<<<{"description": "The integer ID for this assembly type definition"}>>> = 2
inputs<<<{"description": "The PinMeshGenerators that form the components of the assembly."}>>> = 'pin3 pin1 pin2'
pattern<<<{"description": "A double-indexed array starting with the upper-left corner where the indexrepresents the layout of input pins in the assembly lattice."}>>> = '0 1;
1 2'
[]
[cmg]
type = CoreMeshGenerator<<<{"description": "This CoreMeshGenerator object is designed to generate a core-like structure, with IDs, from a reactor geometry. The core-like structure consists of a pattern of assembly-like structures generated with AssemblyMeshGenerator and/or ControlDrumMeshGenerator and is permitted to have \"empty\" locations. The size and spacing of the assembly-like structures is defined, and enforced by declaration in the ReactorMeshParams.", "href": "CoreMeshGenerator.html"}>>>
inputs<<<{"description": "The AssemblyMeshGenerator and ControlDrumMeshGenerator objects that form the components of the assembly."}>>> = 'amg2 amg1 empty'
dummy_assembly_name<<<{"description": "The place holder name in \"inputs\" that indicates an empty position."}>>> = empty
pattern<<<{"description": "A double-indexed array starting with the upper-left corner where the indexrepresents the layout of input assemblies in the core lattice."}>>> = '1 0;
0 1'
extrude<<<{"description": "Determines if this is the final step in the geometry construction and extrudes the 2D geometry to 3D. If this is true then this mesh cannot be used in further mesh building in the Reactor workflow"}>>> = true
[]
[translate]
type = TransformGenerator<<<{"description": "Applies a linear transform to the entire mesh.", "href": "TransformGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = cmg
transform<<<{"description": "The type of transformation to perform (TRANSLATE, TRANSLATE_CENTER_ORIGIN, TRANSLATE_MIN_ORIGIN, ROTATE, SCALE)"}>>> = TRANSLATE
vector_value<<<{"description": "The value to use for the transformation. When using TRANSLATE or SCALE, the xyz coordinates are applied in each direction respectively. When using ROTATE, the values are interpreted as the Euler angles phi, theta and psi given in degrees."}>>> = '2.130945 -2.130945 0'
[]
[]
(contrib/moose/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_square.i)This is the resulting mesh block layout, where by default a single block is assigned to all of the quadrilateral elements in the mesh:

This is the resulting "region_id" extra element integer layout, which was chosen by setting the region IDs for each of the constituent pins and assemblies:

Periphery Mesh Generation
The CoreMeshGenerator
includes support for meshing a circular reactor periphery surrounding the core. This integration supports using either PeripheralTriangleMeshGenerator
(PTMG) or PeripheralRingMeshGenerator
(PRMG), selected using the "periphery_generator" input option by specifying either triangle
or quad_ring
, respectively. The input options for these mesh generators are provided below, but more details on their meaning and usage can be found in their respective documentation pages. The generated periphery region is given the block name "periphery_block_name" (default RGMB_CORE
) and extra integer reporting ID region_id
"periphery_region_id", along with outer boundary name "outside_periphery". If ReactorMeshParams/"region_id_as_block_name" is set to true
, the resulting element will have the block name RGMB_CORE_REG<region_id>
, where <region_id>
is the region ID of the element. Note that "region_id_as_block_name" should not be used in conjunction with "periphery_block_name".
Example Core Periphery Syntax
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[rmp]
type = ReactorMeshParams<<<{"description": "This ReactorMeshParams object acts as storage for persistent information about the reactor geometry.", "href": "ReactorMeshParams.html"}>>>
dim<<<{"description": "The dimension of the mesh to be generated"}>>> = 3
geom<<<{"description": "The geometry type of the reactor mesh"}>>> = "Hex"
assembly_pitch<<<{"description": "Center to center distance of assemblies"}>>> = 7.10315
axial_regions<<<{"description": "Length of each axial region"}>>> = '1.0'
axial_mesh_intervals<<<{"description": "Number of elements in the Z direction for each axial region"}>>> = '1'
top_boundary_id<<<{"description": "The boundary ID to set on top boundary of the extruded mesh"}>>> = 201
bottom_boundary_id<<<{"description": "The boundary ID to set on bottom boundary of the extruded mesh"}>>> = 202
radial_boundary_id<<<{"description": "The boundary ID to set on the outer radial boundary of a CoreMeshGenerator object"}>>> = 200
[]
[pin1]
type = PinMeshGenerator<<<{"description": "This PinMeshGenerator object is designed to generate pin-like structures, with IDs, from a reactor geometry. Whether it be a square or hexagonal pin, they are divided into three substructures - the innermost radial pin regions, the single bridging background region, and the square or hexagonal ducts regions.", "href": "PinMeshGenerator.html"}>>>
reactor_params<<<{"description": "The ReactorMeshParams MeshGenerator that is the basis for this component conformal mesh."}>>> = rmp
pin_type<<<{"description": "The integer ID for this pin type definition"}>>> = 1
pitch<<<{"description": "The pitch for the outermost boundary polygon"}>>> = 1.42063
num_sectors<<<{"description": "Number of azimuthal sectors in each quadrant"}>>> = 2
ring_radii<<<{"description": "Radii of major concentric circles of the pin. If unspecified, no pin is present."}>>> = '0.2'
duct_halfpitch<<<{"description": "Apothem of the ducts. If unspecified, no duct is present."}>>> = '0.68'
mesh_intervals<<<{"description": "The number of meshing intervals for each region starting at the center. Parameter should be size:((length(ring_radii) + length(duct_halfpitch) + 1"}>>> = '1 1 1'
region_ids<<<{"description": "IDs for each radial and axial zone for assignment of region_id extra element id. Inner indexing is radial zones (pin/background/duct), outer indexing is axial"}>>> = '1 2 5'
quad_center_elements<<<{"description": "Whether the center elements are quad or triangular."}>>> = true
[]
[pin2]
type = PinMeshGenerator<<<{"description": "This PinMeshGenerator object is designed to generate pin-like structures, with IDs, from a reactor geometry. Whether it be a square or hexagonal pin, they are divided into three substructures - the innermost radial pin regions, the single bridging background region, and the square or hexagonal ducts regions.", "href": "PinMeshGenerator.html"}>>>
reactor_params<<<{"description": "The ReactorMeshParams MeshGenerator that is the basis for this component conformal mesh."}>>> = rmp
pin_type<<<{"description": "The integer ID for this pin type definition"}>>> = 2
pitch<<<{"description": "The pitch for the outermost boundary polygon"}>>> = 1.42063
num_sectors<<<{"description": "Number of azimuthal sectors in each quadrant"}>>> = 2
mesh_intervals<<<{"description": "The number of meshing intervals for each region starting at the center. Parameter should be size:((length(ring_radii) + length(duct_halfpitch) + 1"}>>> = '2'
region_ids<<<{"description": "IDs for each radial and axial zone for assignment of region_id extra element id. Inner indexing is radial zones (pin/background/duct), outer indexing is axial"}>>> = '2'
quad_center_elements<<<{"description": "Whether the center elements are quad or triangular."}>>> = true
[]
[pin3]
type = PinMeshGenerator<<<{"description": "This PinMeshGenerator object is designed to generate pin-like structures, with IDs, from a reactor geometry. Whether it be a square or hexagonal pin, they are divided into three substructures - the innermost radial pin regions, the single bridging background region, and the square or hexagonal ducts regions.", "href": "PinMeshGenerator.html"}>>>
reactor_params<<<{"description": "The ReactorMeshParams MeshGenerator that is the basis for this component conformal mesh."}>>> = rmp
pin_type<<<{"description": "The integer ID for this pin type definition"}>>> = 3
pitch<<<{"description": "The pitch for the outermost boundary polygon"}>>> = 1.42063
num_sectors<<<{"description": "Number of azimuthal sectors in each quadrant"}>>> = 2
ring_radii<<<{"description": "Radii of major concentric circles of the pin. If unspecified, no pin is present."}>>> = '0.3818'
mesh_intervals<<<{"description": "The number of meshing intervals for each region starting at the center. Parameter should be size:((length(ring_radii) + length(duct_halfpitch) + 1"}>>> = '1 1'
region_ids<<<{"description": "IDs for each radial and axial zone for assignment of region_id extra element id. Inner indexing is radial zones (pin/background/duct), outer indexing is axial"}>>> = '3 4'
quad_center_elements<<<{"description": "Whether the center elements are quad or triangular."}>>> = true
[]
[amg1]
type = AssemblyMeshGenerator<<<{"description": "This AssemblyMeshGenerator object is designed to generate assembly-like structures, with IDs, from a reactor geometry. The assembly-like structures must consist of a full pattern of equal sized pins from PinMeshGenerator. A hexagonal assembly will be placed inside of a bounding hexagon consisting of a background region and, optionally, duct regions.", "href": "AssemblyMeshGenerator.html"}>>>
assembly_type<<<{"description": "The integer ID for this assembly type definition"}>>> = 1
background_intervals<<<{"description": "Radial intervals in the assembly peripheral region."}>>> = 1
inputs<<<{"description": "The PinMeshGenerators that form the components of the assembly."}>>> = 'pin2'
pattern<<<{"description": "A double-indexed array starting with the upper-left corner where the indexrepresents the layout of input pins in the assembly lattice."}>>> = '0 0;
0 0 0;
0 0'
background_region_id<<<{"description": "The region id for the background area between the pins and the ducts to set region_id extra-element integer"}>>> = 10
[]
[amg2]
type = AssemblyMeshGenerator<<<{"description": "This AssemblyMeshGenerator object is designed to generate assembly-like structures, with IDs, from a reactor geometry. The assembly-like structures must consist of a full pattern of equal sized pins from PinMeshGenerator. A hexagonal assembly will be placed inside of a bounding hexagon consisting of a background region and, optionally, duct regions.", "href": "AssemblyMeshGenerator.html"}>>>
assembly_type<<<{"description": "The integer ID for this assembly type definition"}>>> = 2
background_intervals<<<{"description": "Radial intervals in the assembly peripheral region."}>>> = 1
inputs<<<{"description": "The PinMeshGenerators that form the components of the assembly."}>>> = 'pin1 pin3'
pattern<<<{"description": "A double-indexed array starting with the upper-left corner where the indexrepresents the layout of input pins in the assembly lattice."}>>> = '0 0;
0 1 0;
1 0'
background_region_id<<<{"description": "The region id for the background area between the pins and the ducts to set region_id extra-element integer"}>>> = 20
[]
[cmg]
type = CoreMeshGenerator<<<{"description": "This CoreMeshGenerator object is designed to generate a core-like structure, with IDs, from a reactor geometry. The core-like structure consists of a pattern of assembly-like structures generated with AssemblyMeshGenerator and/or ControlDrumMeshGenerator and is permitted to have \"empty\" locations. The size and spacing of the assembly-like structures is defined, and enforced by declaration in the ReactorMeshParams.", "href": "CoreMeshGenerator.html"}>>>
inputs<<<{"description": "The AssemblyMeshGenerator and ControlDrumMeshGenerator objects that form the components of the assembly."}>>> = 'amg1 amg2 empty'
dummy_assembly_name<<<{"description": "The place holder name in \"inputs\" that indicates an empty position."}>>> = empty
pattern<<<{"description": "A double-indexed array starting with the upper-left corner where the indexrepresents the layout of input assemblies in the core lattice."}>>> = '1 1;
1 0 1;
1 1'
extrude<<<{"description": "Determines if this is the final step in the geometry construction and extrudes the 2D geometry to 3D. If this is true then this mesh cannot be used in further mesh building in the Reactor workflow"}>>> = false
mesh_periphery<<<{"description": "Determines if the core periphery should be meshed."}>>> = true
periphery_generator<<<{"description": "The meshgenerator to use when meshing the core boundary."}>>> = triangle
periphery_region_id<<<{"description": "ID for periphery zone for assignment of region_id extra element id."}>>> = 30
outer_circle_radius<<<{"description": "Radius of outer circle boundary."}>>> = 15
outer_circle_num_segments<<<{"description": "Number of radial segments to subdivide outer circle boundary."}>>> = 100
desired_area<<<{"description": "Desired (maximum) triangle area, or 0 to skip uniform refinement"}>>> = 0.5
periphery_block_name<<<{"description": "Block name for periphery zone."}>>> = PERIPHERY_PTMG
[]
[rotate90]
type = TransformGenerator<<<{"description": "Applies a linear transform to the entire mesh.", "href": "TransformGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = cmg
transform<<<{"description": "The type of transformation to perform (TRANSLATE, TRANSLATE_CENTER_ORIGIN, TRANSLATE_MIN_ORIGIN, ROTATE, SCALE)"}>>> = ROTATE
vector_value<<<{"description": "The value to use for the transformation. When using TRANSLATE or SCALE, the xyz coordinates are applied in each direction respectively. When using ROTATE, the values are interpreted as the Euler angles phi, theta and psi given in degrees."}>>> = '0 0 90'
[]
[]
(contrib/moose/modules/reactor/test/tests/meshgenerators/core_mesh_generator/core_periphery_ptmg_vol.i)This is the resulting mesh block layout:

Input Parameters
- assign_control_drum_idTrueWhether control drum id is assigned to the mesh as an extra integer.
Default:True
C++ Type:bool
Controllable:No
Description:Whether control drum id is assigned to the mesh as an extra integer.
- dummy_assembly_namedummyThe place holder name in "inputs" that indicates an empty position.
Default:dummy
C++ Type:std::string
Controllable:No
Description:The place holder name in "inputs" that indicates an empty position.
- extrudeFalseDetermines if this is the final step in the geometry construction and extrudes the 2D geometry to 3D. If this is true then this mesh cannot be used in further mesh building in the Reactor workflow
Default:False
C++ Type:bool
Controllable:No
Description:Determines if this is the final step in the geometry construction and extrudes the 2D geometry to 3D. If this is true then this mesh cannot be used in further mesh building in the Reactor workflow
Optional Parameters
- depletion_id_typeDetermine level of details in depletion ID assignment.
C++ Type:MooseEnum
Controllable:No
Description:Determine level of details in depletion ID assignment.
- generate_depletion_idFalseDetermine wheter the depletion ID is assigned.
Default:False
C++ Type:bool
Controllable:No
Description:Determine wheter the depletion ID is assigned.
Depletion Id Assignment Parameters
- desired_area0Desired (maximum) triangle area, or 0 to skip uniform refinement
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Desired (maximum) triangle area, or 0 to skip uniform refinement
- desired_area_funcDesired (local) triangle area as a function of x,y; omit to skip non-uniform refinement
C++ Type:std::string
Controllable:No
Description:Desired (local) triangle area as a function of x,y; omit to skip non-uniform refinement
- outer_circle_num_segments0Number of radial segments to subdivide outer circle boundary.
Default:0
C++ Type:unsigned int
Controllable:No
Description:Number of radial segments to subdivide outer circle boundary.
Periphery Meshing: Ptmg Specific Parameters
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
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
Controllable:No
Description:Keep the mesh from this mesh generator in memory with the name specified
Advanced Parameters
- mesh_peripheryFalseDetermines if the core periphery should be meshed.
Default:False
C++ Type:bool
Controllable:No
Description:Determines if the core periphery should be meshed.
- outer_circle_radius0Radius of outer circle boundary.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Radius of outer circle boundary.
- periphery_block_nameRGMB_COREBlock name for periphery zone.
Default:RGMB_CORE
C++ Type:std::string
Controllable:No
Description:Block name for periphery zone.
- periphery_generatortriangleThe meshgenerator to use when meshing the core boundary.
Default:triangle
C++ Type:MooseEnum
Controllable:No
Description:The meshgenerator to use when meshing the core boundary.
- periphery_region_id65535ID for periphery zone for assignment of region_id extra element id.
Default:65535
C++ Type:unsigned short
Controllable:No
Description:ID for periphery zone for assignment of region_id extra element id.
Periphery Meshing Parameters
- nemesisFalseWhether or not to output the mesh file in the nemesisformat (only if output = true)
Default:False
C++ Type:bool
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
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
Controllable:No
Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Debugging Parameters
- periphery_num_layers1Number of layers to subdivide the periphery boundary.
Default:1
C++ Type:unsigned int
Controllable:No
Description:Number of layers to subdivide the periphery boundary.