Skip to content

Commit

Permalink
adding moosedoc for reporting ID functions, refs idaholab#19217
Browse files Browse the repository at this point in the history
  • Loading branch information
yjung-anl committed Dec 1, 2021
1 parent 8570c56 commit 031e6d1
Show file tree
Hide file tree
Showing 7 changed files with 134 additions and 1 deletion.
3 changes: 2 additions & 1 deletion modules/reactor/doc/content/modules/reactor/index.md
Expand Up @@ -10,7 +10,8 @@ This module consists of a series of new mesh generators to enable meshing of a h
- Stitching the unit hexagon meshes and adding appropriate peripheral regions to form hexagon assembly regions;
- Creating unit hexagon meshes with adaptive external boundaries that are stitch-able with assembly meshes;
- Stitching the assembly meshes and adaptive-boundary unit hexagon meshes to form a core mesh;
- Modifying unit hexagon meshes to create azimuthal section blocks to enable static simulation of rotational control drums.
- Modifying unit hexagon meshes to create azimuthal section blocks to enable static simulation of rotational control drum;
- Adding reporting IDs (extra element integers) to mesh elements to identify pins, assemblies, plane regions.

Aside from the mesh generators, this `reactor` module also includes a Function object to enable dynamic simulation of rotational control drums in a reactor core mesh.

Expand Down
@@ -0,0 +1,47 @@
# CartesianIDPatternedMeshGenerator

!syntax description /Mesh/CartesianIDPatternedMeshGenerator

## Overview

The `CartesianIDPatternedMeshGenerator` object generates a 2D Cartesian lattice mesh with `reporting ID` assignments.
This object inherits the functionality of the lattice mesh generator named [`PatternedMeshGenerator`](PatternedMeshGenerator.md) that stitches together Cartesian cells, and adds additional functionality to assign reporting IDs to lattice cells.
The object can be used successively on its own output mesh to add IDs on the pin and assembly levels, for example.

## Reporting ID Information

The `CartesianIDPatternedMeshGenerator` object adopts the existing input structures of [`PatternedMeshGenerator`](PatternedMeshGenerator.md) for geometry building and uses additional keywords to control the reporting ID assignment.

A user can select an ID assignment scheme using [!param](/Mesh/CartesianIDPatternedMeshGenerator/assign_type), and the following schemes are currently available:

- `cell` (default): Assign unique IDs for each component in the lattice in sequential order.

- `pattern`: Assign IDs based on the ID of the input tiles.

- `manual`: Assign IDs based on user-defined mapping defined in [!param](/Mesh/CartesianIDPatternedMeshGenerator/id_pattern).

The default numbering scheme starts at 0 in the upper left hand corner of the grid and increments by 1 as the grid is traversed left to right, top to bottom.
The name of the reporting ID is provided through [!param](/Mesh/CartesianIDPatternedMeshGenerator/id_name) depending on the hierarchical level of component.
For example, the reporting IDs for individual pins (`pin_id`) can be assigned when assemblies are built, because the IDs for pin level are uniquely determined from the pin arrangement within each assembly type.
The ID values themselves are stored as extra element integers on the mesh.
Similarly, the assembly reporting IDs (`assembly_id`) are assigned in the core construction process.


Certain regions can be excluded from being labeled with an ID, for example dummy regions that will later be deleted.
This can be accommodated by listing mesh objects in the [!param](/Mesh/CartesianIDPatternedMeshGenerator/exclude_id) input parameter.
IDs will not be assigned to these mesh objects.
Usage of this parameter is helpful to retain sequential numbering when dummy region are later deleted, or to only label areas of interest.

## Example Syntax

In this example, the `CartesianIDPatternedMeshGenerator` is used to generate
a Cartesian assembly with pin reproting IDs (`pin_id`).

!listing modules/reactor/test/tests/meshgenerators/reporting_id/cartesian_id/assembly_reporting_id.i block=Mesh/assembly

!syntax parameters /Mesh/CartesianIDPatternedMeshGenerator

!syntax inputs /Mesh/CartesianIDPatternedMeshGenerator

!syntax children /Mesh/CartesianIDPatternedMeshGenerator

@@ -0,0 +1,50 @@
# HexIDPatternedMeshGenerator

!syntax description /Mesh/HexIDPatternedMeshGenerator

## Overview


The `HexIDPatternedMeshGenerator` object generates a 2D Hexagonal lattice mesh with `reporting ID` assignments.
This object inherits the functionality of the lattice mesh generator named [`PatternedHexMeshGenerator`](PatternedHexMeshGenerator.md) that stitches together Hexagonal cells, and adds additional functionality to assign reporting IDs to lattice cells.
The object can be used successively on its own output mesh to add IDs on the pin and assembly levels, for example.

## Reporting ID Information

The `HexIDPatternedMeshGenerator` object adopts the existing input structures of [`PatternedHexMeshGenerator`](PatternedHexMeshGenerator.md) for geometry building and uses additional keywords to control the reporting ID assignment.
A user can select an ID assignment scheme using [!param](/Mesh/HexIDPatternedMeshGenerator/assign_type), and the following schemes are currently available:

- `cell` (default): Assign unique IDs for each component in the lattice in sequential order.

- `pattern`: Assign IDs based on the ID of the input tiles.

- `manual`: Assign IDs based on user-defined mapping defined in [!param](/Mesh/HexIDPatternedMeshGenerator/id_pattern).

The default numbering scheme starts at 0 in the upper left hand corner of the hexagon grid (not including duct region) and increments by 1 as the grid is traversed left to right, top to bottom.
In presence of duct regions, separate reporting IDs are automatically generated for the elements on duct regions.
The duct regions will be assigned reporting IDs starting from the next integer higher than the highest one used inside of the ducts.

The name of the reporting ID variable is provided through [!param](/Mesh/HexIDPatternedMeshGenerator/id_name) depending on the hierarchical level of component.
The ID values themselves are stored as extra element integers on the mesh.
For example, the reporting IDs for individual pins (`pin_id`) can be assigned when assemblies are built because the IDs for pin level are uniquely determined from the pin arrangement within each assembly type.
Similarly, the assembly reporting IDs (`assembly_id`) are assigned in the core construction process.

Certain regions can be excluded from being labeled with an ID, for example dummy regions that will later be deleted.
This can be accommodated by listing mesh objects in the [!param](/Mesh/HexIDPatternedMeshGenerator/exclude_id) input parameter.
IDs will not be assigned to these mesh objects.

Usage of this parameter is helpful to retain sequential numbering when dummy region are later deleted, or to only label areas of interest.

## Example Syntax

In this example, the `HexIDPatternedMeshGenerator` is used to generate
an hexagonal assembly with pin reproting IDs (`pin_id`).

!listing modules/reactor/test/tests/meshgenerators/reporting_id/hexagonal_id/assembly_reporting_id.i block=Mesh/assembly

!syntax parameters /Mesh/HexIDPatternedMeshGenerator

!syntax inputs /Mesh/HexIDPatternedMeshGenerator

!syntax children /Mesh/HexIDPatternedMeshGenerator

@@ -0,0 +1,29 @@
# PlaneIDMeshGenerator

!syntax description /Mesh/PlaneIDMeshGenerator

## Overview

The `PlaneIDMeshGenerator` object applies an extra IDs to axial planes defined in a extruded mesh.

## Extra ID Control

The `PlaneIDMeshGenerator` takes a mesh object and its axial layer structure as input.
This axial plane structure given in [!param](/Mesh/PlaneIDMeshGenerator/plane_coordinates) contains a list of coordinates defining each plane from bottom to top.
If there are N planes, N+1 coordinate points should be defined here.

If each axial plane is uniformly sub-divided into mutiple layers during the extrusion, distinct extra IDs can be optionally assigned to individual layers in each plane.
[!param](/Mesh/PlaneIDMeshGenerator/num_ids_per_plane) defines the number of unique IDs in each plane defined in [!param](/Mesh/PlaneIDMeshGenerator/plane_coordinates).

Note that this generator only works for extruded geometries where the concept of axial layer is valid.
The axis of plane can be specfied using [!param](/Mesh/PlaneIDMeshGenerator/plane_axis).

## Example Syntax

!listing modules/reactor/test/tests/meshgenerators/reporting_id/plane_id/plane_id_pin3d.i block=Mesh

!syntax parameters /Mesh/PlaneIDMeshGenerator

!syntax inputs /Mesh/PlaneIDMeshGenerator

!syntax children /Mesh/PlaneIDMeshGenerator
@@ -1,4 +1,6 @@
[Tests]
design = 'meshgenerators/CartesianIDPatternedMeshGenerator.md'
issues = '#19217'
[assembly]
requirement = 'The system shall support the generation of reporting IDs for Cartesian assemblies'
[cell]
Expand Down
@@ -1,4 +1,6 @@
[Tests]
design = 'meshgenerators/HexIDPatternedMeshGenerator.md'
issues = '#19217'
[assembly]
requirement = 'The system shall support the generation of reporting IDs for hexagonal assemblies'
[cell]
Expand Down
@@ -1,4 +1,6 @@
[Tests]
design = 'meshgenerators/PlaneIDMeshGenerator.md'
issues = '#19217'
[2d_cartesian_grid]
requirement = 'The system shall support the generation of plane IDs for 2D Cartesian grid'
[x_dir]
Expand Down

0 comments on commit 031e6d1

Please sign in to comment.