- inputThe input mesh to be modified. Note that this generator only works with PatternedHex/CartesianMeshGenerator and its derived classes such as HexIDPatternedMeshGenerator.
C++ Type:MeshGeneratorName
Controllable:No
Description:The input mesh to be modified. Note that this generator only works with PatternedHex/CartesianMeshGenerator and its derived classes such as HexIDPatternedMeshGenerator.
- input_mesh_external_boundaryThe external boundary of the input mesh.
C++ Type:BoundaryName
Controllable:No
Description:The external boundary of the input mesh.
- new_num_sectorNumber of sectors of each side for the new mesh.
C++ Type:unsigned int
Controllable:No
Description:Number of sectors of each side for the new mesh.
PatternedCartesianPeripheralModifier
PatternedPolygonPeripheralModifierBase is the base class for PatternedCartPeripheralModifier and PatternedHexPeripheralModifier.
Overview
This PatternedCartesianPeripheralModifier
class utilizes FillBetweenPointVectorsTools
to replace the outmost layer of the quad elements of the 2D cartesian assembly mesh generated by PatternedCartesianMeshGenerator
with a transition layer consisting of triangular elements so that the assembly mesh can have nodes on designated positions on the external boundary. This boundary modification facilitates the stitching of cartesian assemblies which have different node numbers on their outer periphery due to differing numbers of interior pins and/or different azimuthal discretization.
Motivation
The motivation of developing this mesh generator is similar to that of the PatternedHexPeripheralModifier
. Please refer to that documentation for details.
Modification of Peripheral Boundary to Allow Stitching
The PatternedCartesianPeripheralModifier
class modifies assembly meshes so that assemblies with different number of pins can be stitched together without increasing the mesh fidelity to an impractically fine fidelity. This mesh generator only works with the "input" mesh created by PatternedCartesianMeshGenerator
. Users must specify the external boundary of the input assembly mesh through "input_mesh_external_boundary". Given this input, the mesh generator identifies and deletes the outmost layer of elements and uses the newly formed external boundary as one of the two vectors of boundary nodes needed by FillBetweenPointVectorsTools
after symmetry reduction. In addition, uniformly distributed nodes are placed along the original external boundary of the mesh and defined as the second vector of boundary nodes needed by FillBetweenPointVectorsTools
. The number of new boundary nodes is specified using "new_num_sector". Thus, the outmost layer of the assembly mesh can be replaced with a triangular element transition layer mesh that can be easily stitched with another transition layer mesh. An example of the assembly mesh modified by this mesh generator is shown in Figure 1

Figure 1: A schematic drawing of an example cartesian assembly mesh with transition layer as its outmost mesh layer.
The extra element IDs from the original peripheral region are conserved. They may be modified using the "extra_id_names_to_modify" and "new_extra_id_values_to_assign" parameters.
Advantages
This mesh generator forces the number of nodes on a cartesian mesh to match a user-specified input. This allows assemblies with different number of pins or azimuthal discretizations (and consequently different numbers of boundary nodes) to be stitched together without increasing the mesh density to an unreasonable level.

Figure 2: A schematic drawing showing a virtual core design with assemblies including 9, 16, 25 and 36 pins.
Figure 2 illustrates a core comprising four types of assemblies. This mesh generator's functionality was leveraged to force a common mesh density on each cartesian assembly side (10 nodes on each assembly side) so that the assemblies can be easily stitched.
Example Syntax
[pmg_1]
type = PatternedCartesianPeripheralModifier
input = pattern_1
input_mesh_external_boundary = 10000
new_num_sector = ${new_num_sector}
num_layers = ${num_layer}
[]
(modules/reactor/test/tests/meshgenerators/patterned_cartesian_peripheral_modifier/patterned.i)Input Parameters
- extra_id_names_to_modifyNames of the element extra ids in the peripheral region that should be modified
C++ Type:std::vector<std::string>
Controllable:No
Description:Names of the element extra ids in the peripheral region that should be modified
- new_extra_id_values_to_assignValues of the modified extra ids in the peripheral region.
C++ Type:std::vector<unsigned long>
Controllable:No
Description:Values of the modified extra ids in the peripheral region.
- num_layers1Layers of elements for transition.
Default:1
C++ Type:unsigned int
Controllable:No
Description:Layers of elements for transition.
- transition_layer_id10000Optional customized block id for the transition layer block.
Default:10000
C++ Type:unsigned short
Controllable:No
Description:Optional customized block id for the transition layer block.
- transition_layer_nametransition_layerOptional customized block name for the transition layer block.
Default:transition_layer
C++ Type:SubdomainName
Controllable:No
Description:Optional customized block name for the transition layer block.
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.
- 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
- 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
Input Files
- (modules/reactor/test/tests/meshgenerators/patterned_cartesian_peripheral_modifier/single_square.i)
- (modules/reactor/test/tests/meshgenerators/patterned_cartesian_peripheral_modifier/patterned.i)
- (modules/reactor/test/tests/meshgenerators/cartesian_mesh_trimmer/assembly_trim.i)
- (modules/reactor/test/tests/meshgenerators/patterned_cartesian_peripheral_modifier/err_hex_input.i)