- inputsThe PinMeshGenerators that form the components of the assembly.
C++ Type:std::vector<MeshGeneratorName>
Controllable:No
Description:The PinMeshGenerators that form the components of the assembly.
- patternA double-indexed array starting with the upper-left corner where the indexrepresents the layout of input pins in the assembly 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 pins in the assembly lattice.
AssemblyMeshGenerator
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 PinMeshGeneratorA hexagonal assembly will be placed inside of a bounding hexagon consisting of a background region and, optionally, duct regions.
Overview
This object is designed to be used in the Reactor MeshGenerator workflow, which also consists of ReactorMeshParams
, PinMeshGenerator
, and CoreMeshGenerator
.
The AssemblyMeshGenerator
object generates assembly reactor geometry structures in either square or hexagonal geometries using component pin cell meshes from the PinMeshGenerator
in "inputs". The component pin cell meshes are tagged with pin cell reporting ID
values according to their location in the assembly grid. Any newly created regions such as ducts are given block ID assignments.
This object automates the use and functionality of the CartesianIDPatternedMeshGenerator
for cartesian reactor geometry, HexIDPatternedMeshGenerator
for hexagonal reactor geometry and, if extruding to three dimensions, the `FancyExtruderGenerator' 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 block ID assignment for background and duct regions (only available for hexagonal assemblies) and boundary ID and name assignment.
The AssemblyMeshGenerator
object adopts much of the existing input structure of patterned MeshGenerators but uses parameters that are more typical for reactor design.
Block ID Information
The "background_region_id" and "duct_region_ids" parameters are used to identify regions within the assembly, that do not belong to one of the constituent pins, that belong to the same block both radially and axially. This functionality is intended for easy identification of regions within the mesh that will have the same properties, such as material assignments, and will assign the region ID to both the subdomain (block) ID and name.
The user defined ID assignment using "background_region_id" is given as a 1-D vector of size A
, where A
is the number of axial levels. This vector defines the background block IDs (single value per axial layer) starting from the bottom axial layer and ending with the top axial layer. Similarly, "duct_region_ids" is given as an A
by D
vector, where D
is the number of duct intervals per axial layer. This vector assignment starts from the innermost duct region of the bottom axial layer, and extends out first radially and then axially.
It should be noted here that the extra integer "region_id" and the block ID of the resultant background and duct elements will be modified to match the same value as specified by "background_region_id" and "duct_region_ids".
Reporting ID Information
The AssemblyMeshGenerator
object will tag all elements (that do not belong to one of the constituent pins) with the extra integer reporting ID named "region_id" with the value equal to their region ID.
The AssemblyMeshGenerator
object also automatically tags all elements in the mesh with the "assembly_type" using the extra_integer name "assembly_type_id" and, if extruded, elements in each axial layer are tagged the axial layers using the name "plane_id". The pins composing the assembly are also tagged via CartesianIDPatternedMeshGenerator
or HexIDPatternedMeshGenerator
, using the "cell" assignment type, with the extra integer name "pin_id".
Exterior Boundary ID Information
The AssemblyMeshGenerator
objects automatically assigns boundary information derived from the "assembly_type" parameter. The exterior assembly boundary is assigned the ID equal to 2000 + the assembly type ID and is named "outer_assembly_<assembly_type_id>" (for example an assembly with an assembly type ID of 1 will have a boundary ID of 2001 and boundary name of "outer_assembly_1").
If the assembly 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".
Example Syntax
[Mesh]
[rmp]
type = ReactorMeshParams
dim = 3
geom = "Square"
assembly_pitch = 2.84126
axial_regions = '1.0 1.0'
axial_mesh_intervals = '1 1'
top_boundary_id = 201
bottom_boundary_id = 202
[]
[pin1]
type = PinMeshGenerator
reactor_params = rmp
pin_type = 1
pitch = 1.42063
num_sectors = 2
ring_radii = '0.2'
duct_halfpitch = '0.68'
mesh_intervals = '1 1 1'
quad_center_elements = false
region_ids = '1 2 5; 11 12 15'
[]
[pin2]
type = PinMeshGenerator
reactor_params = rmp
pin_type = 2
pitch = 1.42063
num_sectors = 2
mesh_intervals = '2'
region_ids = '3; 13'
[]
[amg]
type = AssemblyMeshGenerator
assembly_type = 1
inputs = 'pin1 pin2'
pattern = '0 0;
0 1;'
extrude = true
[]
[]
(modules/reactor/test/tests/meshgenerators/assembly_mesh_generator/assembly_only.i)
Input Parameters
- 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
- 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
- assembly_typeThe integer ID for this assembly type definition
C++ Type:unsigned short
Controllable:No
Description:The integer ID for this assembly type definition
Id Assigment Parameters
- background_intervalsRadial intervals in the assembly peripheral region.
C++ Type:unsigned int
Controllable:No
Description:Radial intervals in the assembly peripheral region.
- background_region_idThe region id for the background area between the pins and the ducts to set block ID and region_id extra-element integer
C++ Type:std::vector<unsigned short>
Controllable:No
Description:The region id for the background area between the pins and the ducts to set block ID and region_id extra-element integer
Background Specifications 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
- duct_halfpitchDistance(s) from center to duct(s) inner boundaries.
C++ Type:std::vector<double>
Controllable:No
Description:Distance(s) from center to duct(s) inner boundaries.
- duct_intervalsNumber of meshing intervals in each enclosing duct.
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of meshing intervals in each enclosing duct.
- duct_region_idsThe region id for the ducts from innermost to outermost, to set block ID and region_id extra-element integer.
C++ Type:std::vector<std::vector<unsigned short>>
Controllable:No
Description:The region id for the ducts from innermost to outermost, to set block ID and region_id extra-element integer.