From bbac0624ae7a0703066a17c3182e874303fc301f Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Fri, 17 May 2024 01:04:21 -0400 Subject: [PATCH] Add documentation, refs #27673 --- .../meshgenerators/AssemblyMeshGenerator.md | 2 +- .../source/meshgenerators/CoreMeshGenerator.md | 3 ++- .../source/meshgenerators/PinMeshGenerator.md | 2 +- .../source/meshgenerators/ReactorMeshParams.md | 2 +- .../meshgenerators/core_mesh_generator/tests | 16 ++++++++++++++++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md index 4d5e528fb0be..e2c09294dca5 100644 --- a/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/AssemblyMeshGenerator.md @@ -18,7 +18,7 @@ The [!param](/Mesh/AssemblyMeshGenerator/background_region_id) and [!param](/Mes The user defined ID assignment using [!param](/Mesh/AssemblyMeshGenerator/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, [!param](/Mesh/AssemblyMeshGenerator/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. -For ease of use, block ids are generated automatically by the mesh generator, and for users who require element identification by block name, the optional parameters [!param](/Mesh/AssemblyMeshGenerator/background_block_name) and [!param](/Mesh/AssemblyMeshGenerator/duct_block_names) can be defined to set block names for the assembly background and duct regions respectively, where each block name will be prepended with the prefix `RGMB_ASSEMBLY_`, where `` is the assembly ID provided by the user through [!param](/Mesh/AssemblyMeshGenerator/assembly_type). If block names are not provided, block names will be assigned automatically to have the name `RGMB_ASSEMBLY`. +For ease of use, block ids are generated automatically by the mesh generator, and for users who require element identification by block name, the optional parameters [!param](/Mesh/AssemblyMeshGenerator/background_block_name) and [!param](/Mesh/AssemblyMeshGenerator/duct_block_names) can be defined to set block names for the assembly background and duct regions respectively, where each block name will be prepended with the prefix `RGMB_ASSEMBLY_`, where `` is the assembly ID provided by the user through [!param](/Mesh/AssemblyMeshGenerator/assembly_type). If block names are not provided, block names will be assigned automatically to have the name `RGMB_ASSEMBLY`. If [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/region_id_as_block_name) is set to true, the resulting element will have the name `RGMB_ASSEMBLY_REG`, where `` is the region ID of the element. Note that [!param](/Mesh/ReactorMeshParams/region_id_as_block_name) should not be used in conjunction with [!param](/Mesh/AssemblyMeshGenerator/background_block_name) or [!param](/Mesh/AssemblyMeshGenerator/duct_block_names). ## Reporting ID Information diff --git a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md index 295322bb4b2e..a5149ee61f5c 100644 --- a/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/CoreMeshGenerator.md @@ -19,6 +19,7 @@ The `CoreMeshGenerator` object adopts much of the existing input structure of pa 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`](PatternedCartesianMeshGenerator.md) or [`PatternedHexMeshGenerator`](PatternedHexMeshGenerator.md), using the "cell" assignment type, with the extra integer name "assembly_id" and any "dummy" assembly (identified via the [!param](/Mesh/CoreMeshGenerator/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 [!param](/Mesh/CoreMeshGenerator/generate_depletion_id) to true. The level of detail needed for depletion zones is specified in the input parameter [!param](/Mesh/CoreMeshGenerator/depletion_id_type). @@ -68,7 +69,7 @@ This is the resulting "region_id" extra element integer layout, which was chosen ## Periphery Mesh Generation -The `CoreMeshGenerator` includes support for meshing a circular reactor periphery surrounding the core. This integration supports using either [`PeripheralTriangleMeshGenerator`](PeripheralTriangleMeshGenerator.md) (PTMG) or [`PeripheralRingMeshGenerator`](PeripheralRingMeshGenerator.md) (PRMG), selected using the [!param](/Mesh/CoreMeshGenerator/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 [!param](/Mesh/CoreMeshGenerator/periphery_block_name) (default `RGMB_CORE`) and extra integer reporting ID `region_id` [!param](/Mesh/CoreMeshGenerator/periphery_region_id), along with outer boundary name "outside_periphery". +The `CoreMeshGenerator` includes support for meshing a circular reactor periphery surrounding the core. This integration supports using either [`PeripheralTriangleMeshGenerator`](PeripheralTriangleMeshGenerator.md) (PTMG) or [`PeripheralRingMeshGenerator`](PeripheralRingMeshGenerator.md) (PRMG), selected using the [!param](/Mesh/CoreMeshGenerator/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 [!param](/Mesh/CoreMeshGenerator/periphery_block_name) (default `RGMB_CORE`) and extra integer reporting ID `region_id` [!param](/Mesh/CoreMeshGenerator/periphery_region_id), along with outer boundary name "outside_periphery". If [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/region_id_as_block_name) is set to true, the resulting element will have the name `RGMB_CORE_REG`, where `` is the region ID of the element. Note that [!param](/Mesh/ReactorMeshParams/region_id_as_block_name) should not be used in conjunction with [!param](/Mesh/CoreMeshGenerator/periphery_block_name). ## Example Core Periphery Syntax diff --git a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md index 79f08442805c..7009f3a2b3a8 100644 --- a/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md +++ b/modules/reactor/doc/content/source/meshgenerators/PinMeshGenerator.md @@ -21,7 +21,7 @@ The [!param](/Mesh/PinMeshGenerator/region_ids) parameter provides a map of "reg The region_ids parameter entries can conveniently be selected to match material ids to be assigned to each region of the problem. Using the same value in multiple entries of the [!param](/Mesh/PinMeshGenerator/region_ids) parameter will effectively assign elements in multiple zones to the same region_id. -Region IDs are mapped to the mesh as an extra element integer, where the integer value for each mesh element will match the information provided in [!param](/Mesh/PinMeshGenerator/region_ids). For ease of use, block ids are generated automatically by the mesh generator, and for users who require element identification by block name, the optional parameter [!param](/Mesh/PinMeshGenerator/block_names) can be defined to set block names in the same manner as [!param](/Mesh/PinMeshGenerator/region_ids). In the resulting mesh, each block name will be prepended with the prefix `RGMB_PIN_`, where `` is the pin ID provided by the user through [!param](/Mesh/PinMeshGenerator/pin_type). If block names are not provided by the user, block names will be assigned automatically to have the name `RGMB_PIN`. Regardless of whether block names are provided are not, the suffix `_TRI` is automatically added to the block name for all triangular elements in the central pin mesh elements when [!param](/Mesh/PinMeshGenerator/quad_center_elements) is set to false. This is to ensure that quadrilateral elements and triangular elements that might otherwise share the same region ID are mapped to separate block names. If [!param](/Mesh/PinMeshGenerator/use_as_assembly) is set to true, the block name will have the prefix `RGMB_ASSEMBLY` instead of `RGMB_PIN`. +Region IDs are mapped to the mesh as an extra element integer, where the integer value for each mesh element will match the information provided in [!param](/Mesh/PinMeshGenerator/region_ids). For ease of use, block ids are generated automatically by the mesh generator, and for users who require element identification by block name, the optional parameter [!param](/Mesh/PinMeshGenerator/block_names) can be defined to set block names in the same manner as [!param](/Mesh/PinMeshGenerator/region_ids). In the resulting mesh, each block name will be prepended with the prefix `RGMB_PIN_`, where `` is the pin ID provided by the user through [!param](/Mesh/PinMeshGenerator/pin_type). If block names are not provided by the user, block names will be assigned automatically to have the name `RGMB_PIN`. If [ReactorMeshParams](ReactorMeshParams.md)/[!param](/Mesh/ReactorMeshParams/region_id_as_block_name) is set to true, the resulting element will have the name `RGMB_PIN_REG`, where `` is the region ID of the element. Note that [!param](/Mesh/ReactorMeshParams/region_id_as_block_name) should not be used in conjunction with [!param](/Mesh/PinMeshGenerator/block_names). Regardless of whether block names are provided are not, the suffix `_TRI` is automatically added to the block name for all triangular elements in the central pin mesh elements when [!param](/Mesh/PinMeshGenerator/quad_center_elements) is set to false. This is to ensure that quadrilateral elements and triangular elements that might otherwise share the same region ID are mapped to separate block names. If [!param](/Mesh/PinMeshGenerator/use_as_assembly) is set to true, the block name will have the prefix `RGMB_ASSEMBLY` instead of `RGMB_PIN`. ## Reporting ID Information diff --git a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md index 71dc11ac77aa..6f2c71797af6 100644 --- a/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md +++ b/modules/reactor/doc/content/source/meshgenerators/ReactorMeshParams.md @@ -4,7 +4,7 @@ ## Overview -The `ReactorMeshParams` object stores persistent mesh information about a reactor's geometry for use with [PinMeshGenerator](/PinMeshGenerator.md), [AssemblyMeshGenerator](/AssemblyMeshGenerator.md), and [CoreMeshGenerator](/CoreMeshGenerator.md). This is where the geometry type ([!param](/Mesh/ReactorMeshParams/geom) as 'Square' or 'Hex' for cartesian and hexagonal definitions respectively) and the number of dimensions of the mesh ([!param](/Mesh/ReactorMeshParams/dim) 2 or 3D) is declared and persistently enforced for the rest of the mesh definition. If the mesh is to be 3-dimensional, this is also where the axial information is declared ([!param](/Mesh/ReactorMeshParams/axial_regions) and [!param](/Mesh/ReactorMeshParams/axial_mesh_intervals)). +The `ReactorMeshParams` object stores persistent mesh information about a reactor's geometry for use with [PinMeshGenerator](/PinMeshGenerator.md), [AssemblyMeshGenerator](/AssemblyMeshGenerator.md), and [CoreMeshGenerator](/CoreMeshGenerator.md). This is where the geometry type ([!param](/Mesh/ReactorMeshParams/geom) as 'Square' or 'Hex' for cartesian and hexagonal definitions respectively) and the number of dimensions of the mesh ([!param](/Mesh/ReactorMeshParams/dim) 2 or 3D) is declared and persistently enforced for the rest of the mesh definition. If the mesh is to be 3-dimensional, this is also where the axial information is declared ([!param](/Mesh/ReactorMeshParams/axial_regions) and [!param](/Mesh/ReactorMeshParams/axial_mesh_intervals)). In addition, the global option to automatically set block names for the output mesh based on the region IDs of the mesh is defined by this mesh generator, by setting ([!param](/Mesh/ReactorMeshParams/region_id_as_block_name) to 'true'. More information about this parameter can be found in the block naming sections of [PinMeshGenerator](/PinMeshGenerator.md), [AssemblyMeshGenerator](/AssemblyMeshGenerator.md), and [CoreMeshGenerator](/CoreMeshGenerator.md). ## Metadata Information diff --git a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests index e99f58b51719..4cee17496050 100755 --- a/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests +++ b/modules/reactor/test/tests/meshgenerators/core_mesh_generator/tests @@ -9,6 +9,15 @@ exodiff = 'core_in.e' recover = false [] + [square_rid_as_block_name] + requirement = 'The system shall generate a 3D core mesh with 3 pin types and 2 assembly types, with separate block names for each region ID in the mesh' + type = 'Exodiff' + input = 'core_square.i' + cli_args = "Mesh/rmp/region_id_as_block_name=true + Outputs/file_base=core_rid_as_block_name" + exodiff = 'core_rid_as_block_name.e' + recover = false + [] [square_metadata] requirement = 'The system shall print out reactor-related metadata to console output for a full 3D square core mesh with 3 pin types and 2 assembly types' type = 'RunApp' @@ -268,6 +277,13 @@ csvdiff = 'core_periphery_ptmg_in.csv' recover = false [] + [periphery_rid_as_block_name_err] + requirement = 'The system shall throw an error when generating a core mesh with manually defined periphery block name and setting option to automatically define block names based on region IDs' + type = 'RunException' + input = 'core_periphery_ptmg_vol.i' + cli_args = "Mesh/rmp/region_id_as_block_name=true" + expect_err = 'periphery_block_name should not be specified in CoreMeshGenerator' + [] [prmg_periphery] requirement = 'The system shall generate a 2D hex core mesh with a reactor periphery meshed using a quadrilateral element ring pattern.' type = 'Exodiff'