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 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, and AssemblyMeshGenerator.

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 CartesianIDPatternedMeshGenerator. There is expected to only be a single CoreMeshGenerator in a Mesh definition.

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 boundary ID and name assignment.

In addition to the functionality of CartesianIDPatternedMeshGenerator or HexIDPatternedMeshGenerator, 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.

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 CartesianIDPatternedMeshGenerator or HexIDPatternedMeshGenerator, 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.

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

Example Syntax

[Mesh]
  [rmp]
    type = ReactorMeshParams
    dim = 3
    geom = "Square"
    assembly_pitch = 2.84126
    axial_regions = '1.0'
    axial_mesh_intervals = '1'
    top_boundary_id = 201
    bottom_boundary_id = 202
    radial_boundary_id = 200
  []

  [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'
    region_ids = '1 2 5'

    quad_center_elements = true
  []

  [pin2]
    type = PinMeshGenerator
    reactor_params = rmp
    pin_type = 2
    pitch = 1.42063
    num_sectors = 2
    mesh_intervals = '2'
    region_ids = '2'

    quad_center_elements = true
  []

  [pin3]
    type = PinMeshGenerator
    reactor_params = rmp
    pin_type = 3
    pitch = 1.42063
    num_sectors = 2
    ring_radii = '0.3818'
    mesh_intervals = '1 1'
    region_ids = '3 4'

    quad_center_elements = true
  []

  [amg1]
    type = AssemblyMeshGenerator
    assembly_type = 1
    inputs = 'pin2'
    pattern = '0 0;
               0 0'
  []

  [amg2]
    type = AssemblyMeshGenerator
    assembly_type = 2
    inputs = 'pin3 pin1 pin2'
    pattern = '0 1;
               1 2'
  []

  [cmg]
    type = CoreMeshGenerator
    inputs = 'amg2 amg1 empty'
    dummy_assembly_name = empty
    pattern = '1 0;
               0 1'
    extrude = true
  []
[]
(modules/reactor/test/tests/meshgenerators/core_mesh_generator/core.i)

Input Parameters

  • inputsThe AssemblyMeshGenerators that form the components of the assembly.

    C++ Type:std::vector<MeshGeneratorName>

    Controllable:No

    Description:The AssemblyMeshGenerators 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.

Required Parameters

  • dummy_assembly_namedummyThe place holder name in "inputs" that indicates an empty position.

    Default:dummy

    C++ Type:MeshGeneratorName

    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

  • 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

Input Files