Reactor System Requirements Specification
This template follows INL template TEM-135, "IT System Requirements Specification".
This document serves as an addendum to Framework System Requirements Specification and captures information for Software Requirement Specification (SRS) specific to the Reactor module.
Introduction
System Purpose
The MOOSE Reactor module provides an interface and libraries for creating meshes for nuclear reactor systems.
It is intended to be used using other MOOSE ecosystem codes (including MOOSE-wrapped applications) to perform the physics solve as it does not contain any physics. Thus, the Reactor module uses the same object-oriented design as MOOSE in order to make simulation design and new development straightforward for engineers and researchers.
System Scope
The scope of the Reactor module is to provide a set of utilities for building reactor meshes for finite element or finite volume simulations. The modules relies on the MOOSE framework for utilities that are common with other applications.
It covers several reactor types, mostly those with geometry that are axially extruded or close to being so. This includes: liquid metal fast reactors, prismatic high temperature reactors, some variations of micro reactors and pressurized water reactors. Every design variation of each advanced reactor type cannot be covered by the module. It covers the meshing and rotation of control drum in certain reactors.
The system contains, generally, a base set of mesh generators and meshing utilities. Reactor module developers work with framework and other module and application developers to ensure that the Reactor module provides adequate capability to support ongoing and prospective research opportunities involving advanced reactors.
System Overview
System Context
The Reactor module is command-line driven. Like MOOSE, this is typical for a high-performance software that is designed to run across several nodes of a cluster system. As such, all usage of the software is through any standard terminal program generally available on all supported operating systems. Similarly, for the purpose of interacting through the software, there is only a single user, "the user", which interacts with the software through the command-line. The Reactor module does not maintain any back-end database or interact with any system daemons. It is an executable, which may be launched from the command line and writes out various result files as it runs.
Figure 1: Usage of the Reactor module and other MOOSE-based applications.
System Functions
Since the Reactor module is a command-line driven application, all functionality provided in the software is operated through the use of standard UNIX command line flags and the extendable MOOSE input file. The Reactor module is completely extendable so individual design pages should be consulted for specific behaviors of each user-defined object.
User Characteristics
Like MOOSE, there are three kinds of users working on the Reactor module:
Reactor module Developers: These are the core developers of the Reactor module. They are responsible for following and enforcing the software development standards of the module, as well as designing, implementing, and maintaining the software.
Developers: A scientist or engineer that uses the Reactor module alongside MOOSE to build their own application. This user will typically have a background in modeling or simulation techniques (and perhaps numerical analysis) but may only have a limited skillset when it comes to code development using the C++ language. This is the primary focus group of the module. In many cases, these developers will be encouraged to contribute module-appropriate code back to the Reactor module, or to MOOSE itself.
Analysts: These are users that will run the code and perform analysis on the simulations they perform. These users may interact with developers of the system requesting new features and reporting bugs found and will typically make heavy use of the input file format.
Assumptions and Dependencies
The Reactor module is developed using MOOSE and can itself be based on various MOOSE modules, as such the SRS for the Reactor module is dependent upon the files listed at the beginning of this document. Any further assumptions or dependencies are outlined in the remainder of this section.
The Reactor module is designed with the fewest possible constraints on hardware and software. For more context on this point, the Reactor module SRS defers to the framework Assumptions and Dependencies. Any physics-based or geometry-based assumptions in code simulations and code objects are highlighted in their respective documentation pages.
References
Definitions and Acronyms
This section defines, or provides the definition of, all terms and acronyms required to properly understand this specification.
Definitions
Verification: (1) The process of: evaluating a system or component to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase. (2) Formal proof of program correctness (e.g., requirements, design, implementation reviews, system tests) (24765:2010(E), 2010).
Acronyms
Acronym | Description |
---|---|
INL | Idaho National Laboratory |
LGPL | GNU Lesser General Public License |
MOOSE | Multiphysics Object Oriented Simulation Environment |
NQA-1 | Nuclear Quality Assurance Level 1 |
POSIX | Portable Operating System Interface |
SRS | Software Requirement Specification |
System Requirements
In general, the following is required for MOOSE-based development:
A POSIX compliant Unix-like operating system. This includes any modern Linux-based operating system (e.g., Ubuntu, Fedora, Rocky, etc.), or a Macintosh machine running either of the last two MacOS releases.
Hardware | Information |
---|---|
CPU Architecture | x86_64, ARM (Apple Silicon) |
Memory | 8 GB (16 GBs for debug compilation) |
Disk Space | 30GB |
Libraries | Version / Information |
---|---|
GCC | 9.0.0 - 12.2.1 |
LLVM/Clang | 10.0.1 - 19 |
Intel (ICC/ICX) | Not supported at this time |
Python | 3.10 - 3.13 |
Python Packages | packaging pyaml jinja2 |
Functional Requirements
- reactor: Functions
- 9.1.1The system shall include a function that describes the rotation of multiple control drums
- using control_drum_id.
- without using control_drum_id.
- 9.1.2The function that describes control drums shall throw an error
- if start_angles and angular_speeds have different lengths.
- if angle_ranges and angular_speeds have different lengths.
- if input control drum parameters are not compatible with MeshMetaData.
- if rotation_end_time is smaller than rotation_start_time.
- reactor: Meshdivisions
- 9.2.1The system shall be able to divide the mesh using
- a hexagonal grid,
- hexagonal grids, centered on user-input positions.
- reactor: Meshgenerators
- 9.3.1The system shall generate
- a volume preserved concentric circles mesh.
- a volume preserved concentric circles mesh with quadratic elements.
- a one-element-layer volume preserved concentric circles mesh with quadratic TRI7 elements.
- a non volume preserved concentric circles mesh.
- a volume preserved concentric circles mesh with custom nodal azimuthal angles.
- a volume preserved concentric circles mesh with custom nodal azimuthal angles and with quadratic elements.
- 9.3.2The system shall throw an error
- if the number of sectors is not specified in the absence of customized azimuthal angles.
- if the number of sectors is not consistent with the number of customized azimuthal angles.
- if the customized azimuthal angles are not monotonically increasing.
- if some of the customized azimuthal angles are larger than the supported intervals.
- if the inward interface boundary names are provided while no inward interface boundaries are created.
- if the outward interface boundary names are provided while no outward interface boundaries are created.
- if interface bondary id shift is provided while no interface boundaries are created.
- if the provided inward interface boundary names have the wrong size.
- if the provided outward interface boundary names have the wrong size.
- if the provided number of ring radii and ring intervals are inconsistent.
- if the provided number of ring radii and ring meshing biases are inconsistent.
- if provided radius array of the ring regions is not strictly ascending.
- if the elements of the circular mesh to be generated have incompatible types.
- 9.3.3The system shall generate a 3D square assembly mesh from 2 pin types
- The system shall throw an error if an assembly mesh is composed of pins with identical pin_type ids
- 9.3.5The system shall generate a 3D square assembly mesh from 2 pin types and a background region
- 9.3.6The system shall allow for multiple region IDs to be mapped to a specific block name
- 9.3.7The system shall generate a 3D square assembly mesh from 2 pin types, with separate block names assigned based on region IDs in the mesh
- 9.3.8The system shall throw an error when generating an assembly mesh with manually defined block names and being set to automatically define block names based on region IDs
- 9.3.9The system shall generate a 3D hexagonal assembly mesh with duct regions with assigned IDs
- 9.3.10The system shall generate a 2D hexagonal assembly mesh with the outermost duct layer removed and re-meshed with FlexiblePatternGenerator
- 9.3.11The system shall generate a 2D hexagonal assembly mesh that transfers metadata correctly across RGMB mesh generators
- 9.3.12The system shall generate a 2D hexagonal assembly mesh with pin-wise depletion IDs
- 9.3.13The system shall generate a 2D hexagonal assembly mesh with pin type-wise depletion IDs
- 9.3.14The system should modify the azimuthal blocks
- (without the external block) based on the given angle range.
- (without the external block) that consists of quadratic elements based on the given angle range.
- (without the external block) in a mesh with center quad elements based on the given angle range.
- (with the external block) based on the given angle range.
- (based on block names) based on the given angle range.
- 9.3.15The system shall throw an error
- if the input mesh contains elements of mixed orders.
- if the input mesh contains elements of an unsupported type.
- if old_blocks given as block ids and new_block_ids have different sizes.
- if old_blocks given as block names and new_block_ids have different sizes.
- if new_block_names and new_block_ids have different sizes.
- if old_blocks contains blocks that do not exist in the input mesh.
- if the list of blocks whose nodes should be moved contains a block with center quad elements.
- if the circular region is overlapped with background region after radius correction.
- if the mesh is too corase for the absorber.
- 9.3.16The system shall generate a square mesh that adapts one boundary of a mesh loaded from an exodus file.
- 9.3.17The system shall generate a square mesh with one side adapted to another mesh that has quadratic elements.
- 9.3.18The system shall generate a non-adaptive square mesh when inputs and sides_to_adapt are not provided.
- 9.3.19The system shall throw an error if the vector of sides to adapts and the vector of input meshes to adapt to have different sizes for the adaptive cartesian mesh.
- 9.3.20The system shall be able to trim all of the four peripheral regions off a square assembly mesh.
- 9.3.21The system shall be able to trim a fraction of the four peripheral regions off a square assembly mesh.
- 9.3.22The system shall be able to trim a fraction of a square assembly mesh through its center.
- 9.3.23The system shall be able to trim a fraction of a square assembly mesh with its peripheral regions modified through its center.
- 9.3.24The system shall be able to perform both peripheral and center trimming simultaneously on a square assembly.
- 9.3.25The system shall be able to perform center trimming on a center-trimmable cartesian mesh with peripheral ring(s) added.
- 9.3.26The system shall be able to perform center trimming on a cartesian core mesh generated by double cartesian patterning.
- 9.3.27The system shall be able to perform center trimming on a cartesian core mesh generated by double cartesian patterning with the peripheral regions of assembly meshes modified.
- 9.3.28The system shall be able to perform center trimming on a core mesh generated by double cartesian patterning with pin centers consisting of triangular elements.
- 9.3.29The system shall be able to stitch together cartesian assembly meshes after peripheral trimming.
- 9.3.30The system shall throw an error if the input cartesian mesh does not contain the provided external boundary.
- 9.3.31The system shall throw an error if the input mesh has not been marked compatible with cartesian mesh trimming.
- 9.3.32The system shall throw an error if the input cartesian mesh cannot be center trimmed.
- 9.3.33The system shall throw an error if the input cartesian mesh is not to be trimmed at the center but the center trimming boundary is provided anyway.
- 9.3.34The system shall throw an error if the center trimming would yield a mesh that is over half of the input cartesian mesh, because more than half of the angular sectors are requested.
- 9.3.35The system shall throw an error if the center trimming index parameters are not given in a pair for cartesian mesh trimming.
- 9.3.36The system shall throw an error if the input cartesian mesh cannot be trimmed at the periphery.
- 9.3.37The system shall throw an error if the input cartesian mesh is not to be trimmed at the periphery but the peripheral trimming boundary is provided.
- 9.3.38The system shall throw an error if the block name assigned to the newly generated TRI elements already exists in the input cartesian mesh.
- 9.3.39The system shall throw a warning if new blocks are created in the cartesian mesh to avert degenerate elements.
- 9.3.40The system shall include the ability to assign coarse element IDs based on a coarse mesh for elements of a fine mesh.
- 9.3.41The system shall include the ability to assign extra element IDs based on the subdomain ID of a coarse mesh for elements of a fine mesh.
- 9.3.42The system shall include the ability to assign extra element IDs based on an extra element ID of a coarse mesh for elements of a fine mesh.
- 9.3.43The system shall be able to assign extra element IDs based on a coarse mesh for subdomain-restricted elements of a fine mesh.
- 9.3.44The system shall return an error if
- the coarse mesh extra element id used for assigning does not exist
- the input mesh is not nested in the coarse mesh in CoarseMeshExtraElementIDGenerator
- the fine mesh lies beyond the extent of the coarse mesh
- any node of the fine mesh lies beyond the extent of the coarse mesh
- requested subdomain restriction does not exist on the fine mesh
- 9.3.45The system shall generate
- a 2D hexagonal control drum assembly mesh with an explicit drum pad region
- a 2D hexagonal control drum assembly mesh without an explicit drum pad region
- a 2D Cartesian control drum assembly mesh with an explicit drum pad region
- a 2D Cartesian control drum assembly mesh without an explicit drum pad region
- additional azimuthal nodes for a control drum assembly mesh when the azimuthal discretization does not line up with the pad start and end angles
- a control drum assembly mesh with shifted azimuthal nodes to match the drum pad locations when the azimuthal angles line up to within tolerance
- depletion IDs for each region in a 2D control drum mesh
- 9.3.46The system shall throw an error
- if flexible assembly stitching is not used when generating a control drum mesh
- if the inner radius of the control drum exceeds the outer radius
- if the outer radius of the control drum exceeds the radius of the inscribed circle of the assembly boundary
- if the user sets the start angle of the drum pad but not the end angle
- if the user sets the end angle of the drum pad but not the start angle
- if the difference between the end and start angle of the pad region is less than 0
- if the difference between the end and start angle of the pad region exceeeds 360 inclusive
- if the azimuthal node tolerance is larger than half the azimuthal interval size
- if the azimuthal node tolerance is larger than half the difference of the pad angle range
- if region IDs are not provided for the control drum mesh
- if the number of region IDs provided per radial level does not match the number of axial levels for a control drum mesh
- if the number of radial region IDs provided per axial level does not equal 3 for a control drum mesh with no explicit pad region
- if the number of radial region IDs provided per axial level does not equal 4 for a control drum mesh with an explicit pad region
- if block names are defined explicitly while also using auto-assigned block names for a control drum mesh
- if the size of block_names does not match the size of region_ids in the axial dimension for a control drum mesh
- if the size of block_names does not match the size of region_ids in the radial dimension for a control drum mesh
- if a 2-D mesh with no axial information is extruded into 3-D for a control drum mesh
- if a 3-D mesh is extruded but is missing top and bottom boundary id data
- if a depletion id type other than pin type is used for a control drum mesh
- 9.3.47The system shall generate a full 3D square core mesh with 3 pin types and 2 assembly types
- 9.3.48The 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
- 9.3.49The system shall output reactor-related metadata for a full 3D square core mesh in mesh generation mode
- 9.3.50The system shall output reactor-related metadata for a full 3D square core mesh in data driven mode with another mesh generator as the data driven generator
- 9.3.51The system shall output reactor-related metadata for a full 3D square core mesh in data driven mode with an additional mesh generator appended to the data driven generator
- 9.3.52The system shall throw an error in data driven mode with an RGMB mesh as the data driven generator
- The system shall throw an error if a core is composed of different assemblies with a shared assembly type id
- The system shall throw an error if a core is composed of different pins with a shared pin type id
- 9.3.55The system shall generate a full 3D square core mesh with an assembly that has a background and duct region and another with no duct/background region
- 9.3.56The system shall generate a 3D square core mesh with empty lattice positions
- 9.3.57The system shall generate a 3D square core mesh with empty lattice positions defined as the first input name
- 9.3.58The system shall throw an error if all input assembly names are defined as dummy assemblies
- 9.3.59The system shall generate a 3D hexagonal core mesh with empty lattice positions and explicit block name specification
- 9.3.60The system shall output reactor-related metadata for a full 3D hexagonal core mesh in mesh generation mode
- 9.3.61The system shall output reactor-related metadata for a full 3D hexagonal core mesh in data driven mode and default to the data-driven generator mesh generator as the final generator
- 9.3.62The system shall generate a full 3D square core mesh with 2 single assembly types
- 9.3.63The system shall generate a full 3D hexagonal core mesh with 2 single assembly types
- 9.3.64The system shall generate a full 3D hexagonal core mesh with 2 duct heterogeneous assembly types
- 9.3.65The system shall generate a 2D hexagonal core mesh that transfers metadata correctly across RGMB mesh generators
- 9.3.66The system shall generate a 2D hexagonal core mesh that transfers metadata correctly across RGMB mesh generators in mesh only with extra element ids that have been defined with default values for certain id names
- 9.3.67The system shall output reactor-related metadata for a 2D hexagonal core mesh in mesh generation mode
- 9.3.68The system shall output reactor-related metadata to for a 2D hexagonal core mesh in data driven mode and default to the data-driven generator mesh generator as the final generator
- 9.3.69The system shall output reactor-related metadata for a 3D hexagonal core mesh with extra assemblies not part of core lattice
- 9.3.70The system shall generate a 2D hex core mesh with a reactor periphery meshed using a triangular mesh.
- 9.3.71The system shall throw an error when generating a core mesh with a manually defined periphery block name and being set to automatically define block names based on region IDs
- 9.3.72The system shall generate a 2D hex core mesh with a reactor periphery meshed using a quadrilateral element ring pattern.
- 9.3.73The system shall generate a 3D hexagonal core mesh with pin-wise depletion IDs
- 9.3.74The system shall generate a 3D hexagonal core mesh with pin type-wise depletion IDs
- 9.3.75The system shall generate a 3D hexagonal core mesh with flexible assembly patterning that avoids hanging nodes at assembly interfaces
- 9.3.76The system shall generate a 3D Cartesian core mesh with flexible assembly patterning that avoids hanging nodes at assembly interfaces
- 9.3.77The system shall generate a 3D core mesh with the number of sectors at the assembly boundary being set by the user
- 9.3.78The system shall generate a 3D Cartesian core mesh with heterogeneous and homogeneous assemblies stitched alongside drum structures
- 9.3.79The system shall generate a 3D hexagonal core mesh with heterogeneous and homogeneous assemblies stitched alongside drum structures
- 9.3.80The system shall output reactor-related metadata for a full 3D hexagonal core mesh with a drum assembly in mesh generation mode
- 9.3.81The system shall output reactor-related metadata for a full 3D hexagonal core mesh with a drum assembly in data driven mode
- 9.3.82The system shall generate pin-wise depletion IDs for a 3D hexagonal core mesh with a control drum
- 9.3.83The system shall generate pin type-wise depletion IDs for a 3D hexagonal core mesh with a control drum
- 9.3.84The system shall include the ability to copy an element ID to other element IDs.
- 9.3.85The system shall return an error if the requested source element ID does not exist on the mesh.
- 9.3.86The system shall generate
- a single full hexagonal patterned mesh within a hexagonal background.
- a single full hexagonal patterned mesh with a cartesian background shape.
- a single full hexagonal patterned mesh with a circular background shape.
- a single full hexagonal patterned mesh with a custom background shape.
- a rotated single partial hexagonal patterned mesh with hexagonal background.
- two full hexagonal patterned pins mesh with hexagonal background.
- a single rectangular patterned mesh with hexagonal background.
- an single circular patterned mesh with hexagonal background.
- an double circular patterned mesh with hexagonal background.
- a custom patterned mesh with hexagonal background.
- a mixed patterned mesh with hexagonal background.
- a patterned mesh with an extra element id assigned to each component mesh (cell mode).
- a patterned mesh with an extra element id assigned to each input mesh (pattern mode).
- a patterned assembly mesh by stitching flexible patterned meshes.
- a hexagonal mesh with the input mesh's default external boundary being deleted.
- an assembly mesh with quadratic elements.
- 9.3.87The system shall throw an error
- if the unit mesh used for the pattern is not provided in the input meshes.
- if some of the input meshes are not used in patterning.
- if then subdomain name of the background is specified without providing a non-trivial subdomain id.
- if the hexagnal pattern provided has an even number of size.
- if the hexagonal pattern provided has a unity length element.
- if the hexagonal pattern provided has an incorrect, non-hexagonal, shape.
- if the provided pitch values of the hexagonal patterns have a size that does not match the number of hexagonal patterns to be generated.
- if the provided origin locations of the hexagonal patterns have a size that does not match the number of hexagonal patterns to be generated.
- if the provided rotation angles of the hexagonal patterns have a size that does not match the number of hexagonal patterns to be generated.
- if the rectangular pattern provided has a correct shape.
- if the provided x pitch values of the rectangular patterns have a size that does not match the number of rectangular patterns to be generated.
- if the provided y pitch values of the rectangular patterns have a size that does not match the number of rectangular patterns to be generated.
- if the provided origin locations of the rectangular patterns have a size that does not match the number of rectangular patterns to be generated.
- if the provided rotation angles of the rectangular patterns have a size that does not match the number of rectangular patterns to be generated.
- if one of the rectangular patterns contains an empty row.
- if the provided circular radii values of the rectangular patterns have a size that does not match the number of circular patterns to be generated.
- if the provided origin locations of the circular patterns have a size that does not match the number of circular patterns to be generated.
- if the provided rotation angles of the circular patterns have a size that does not match the number of circular patterns to be generated.
- if the provided mesh indices of the extra positioned meshes have a size that does not match the number of extra positions provided.
- if the boundary input mesh is not provided when the boundary type is selected to be custom.
- if the boundary sector number is provided when the boundary type is selected to be custom.
- if the boundary pitch value is provided when the boundary type is selected to be custom.
- if the boundary input mesh is provided when the boundary type is not custom.
- if the boundary sectors nunber is not provided when the boundary type is not custom.
- if the boundary pitch value is not provided when the boundary type is not custom.
- if an empty cell type id name is provided.
- if a cell type id shift is set without specifying the unit mesh id name.
- if an empty pattern id name is provided.
- if a pattern id shift is set without specifying the unit mesh id name.
- 9.3.88The system shall generate a hexagon mesh that adapts one boundary of the mesh saved in the exodus file.
- 9.3.89The system shall generate a hexagon mesh with one side adapted to another mesh that has quadratic elements.
- 9.3.90The system shall generate a non-adaptive hexagon mesh when inputs and sides_to_adapt are not provided.
- 9.3.91The system shall throw an error if sides_to_adapt and inputs have different sizes for the adaptive hexagonal mesh.
- 9.3.92The system shall throw an error if the deprecated input parameter is provided along with the new parameter.
- 9.3.93The system shall throw an error if the input mesh to adapt a polygon mesh side to has a different order than the order of the hexagonal mesh to be generated.
- 9.3.94The system shall be able to trim all of the six peripheral regions off an hexagonal assembly mesh.
- 9.3.95The system shall be able to trim a fraction of the six peripheral regions off an hexagonal assembly mesh.
- 9.3.96The system shall be able to trim a fraction of an hexagonal assembly mesh through its center.
- 9.3.97The system shall be able to trim a fraction of an hexagonal assembly mesh with its peripheral regions modified through its center.
- 9.3.98The system shall be able to perform both peripheral and center trimming simultaneously on an hexagonal assembly.
- 9.3.99The system shall be able to perform center trimming on a center-trimmable hexagonal mesh with peripheral ring(s) added.
- 9.3.100The system shall be able to perform center trimming on an hexagonal core mesh generated by double hexagonal patterning.
- 9.3.101The system shall be able to perform center trimming on an hexagonal core mesh generated by double hexagonal patterning with the peripheral regions of assembly meshes modified.
- 9.3.102The system shall be able to perform center trimming on a core mesh generated by double hexagonal patterning with pin centers consisting of triangular elements.
- 9.3.103The system shall be able to stitch together hexagonal assembly meshes after peripheral trimming.
- 9.3.104The system shall throw an error if the input hexagonal mesh does not contain the provided external boundary.
- 9.3.105The system shall throw an error if the input mesh has not been marked compatible with hexagonal mesh trimming.
- 9.3.106The system shall throw an error if the input hexagonal mesh cannot be center trimmed.
- 9.3.107The system shall throw an error if the input hexagonal mesh is not to be trimmed at the center but the center trimming boundary is provided anyway.
- 9.3.108The system shall throw an error if the center trimming would yield a mesh that is over half of the input hexagonal mesh, because more than half of the angular sectors are requested.
- 9.3.109The system shall throw an error if the center trimming index parameters are not given in a pair for hexagonal mesh trimming.
- 9.3.110The system shall throw an error if the input hexagonal mesh cannot be trimmed at the periphery.
- 9.3.111The system shall throw an error if the input hexagonal mesh is not to be trimmed at the periphery but the peripheral trimming boundary is provided.
- 9.3.112The system shall throw an error if the block name assigned to the newly generated TRI elements already exists in the input hexagonal mesh.
- 9.3.113The system shall throw a warning if new blocks are created in the hexagonal mesh to avert degenerate elements.
- 9.3.114The system shall stitch square meshes to form a large mesh with square boundary.
- 9.3.115The system shall be able to stitch square meshes to form a larger patterned mesh with a square boundary using QUAD8 elements.
- 9.3.116The system shall be able to stitch square meshes to form a larger patterned mesh with a square boundary using QUAD9 elements.
- 9.3.117The system shall stitch square meshes to form a large mesh with square boundary and without interface boundaries defined.
- 9.3.118The system shall stitch square meshes to form a large mesh with square boundary without deforming the input meshes.
- 9.3.119The system shall stitch square meshes to form a large mesh with square boundary, with a custom boundary used for stitching.
- 9.3.120The system shall stitch cartesian meshes to form a large mesh without extra boundary.
- 9.3.121The system shall stitch square patterned meshes to form a large mesh.
- 9.3.122The system shall allow input structures to be defined in "inputs" without being part of the Cartesian lattice.
- 9.3.123The system shall stitch square patterned meshes to form a large mesh with a control drum.
- 9.3.124The system shall throw a reasonable error when generating patterned cartesian mesh if one of the input meshes has a flat side facing up.
- 9.3.125The system shall throw an error if the input cartesian meshes contain different block ids that share the same block name.
- 9.3.126The system shall throw an error if cartesian pattern input contains an empty row.
- 9.3.127The system shall throw an error if the layer number of cartesian pattern is zero or unity.
- 9.3.128The system shall throw an error if the cartesian pattern does not represent a square pattern.
- 9.3.129The system shall throw an error if the pattern includes input cartesian mesh indices that exceed number of elements of input meshes.
- 9.3.130The system shall throw an error if background_block_id and duct_block_ids are not provided simultaneously if the cartesian mesh has ducts.
- 9.3.131The system shall throw an error if background_block_name and duct_block_names are not provided simultaneously if the cartesian mesh has ducts.
- 9.3.132The system shall throw an error if the specified duct size exceeds the external square boundary.
- 9.3.133The system shall throw an error if the specified square duct size is not strictly ascending.
- 9.3.134The system shall throw an error if length of duct_block_ids is not consistent with number of cartesian ducts.
- 9.3.135The system shall throw an error if number of duct names specified is not consistent with number of cartesian ducts.
- 9.3.136The system shall throw an error if background_block_name or background_block_id are provided for the cartesian pattern when pattern_boundary is none.
- 9.3.137The system shall throw an error if the enclosing square size is not provided when the pattern boundary style is expanded, which means there is an additional region around the pattern.
- 9.3.138The system shall throw an error if the enclosing square size is provided when pattern boundary style is none, which means there is no additional region around the pattern
- 9.3.139The system shall throw an error if not all the cartesian meshes provided in inputs are used in pattern.
- 9.3.140The system shall throw an error if no pitch meta data can be obtained from the input cartesian mesh.
- 9.3.141The system shall throw an error if no pattern pitch meta data can be obtained from the input cartesian mesh.
- 9.3.142The system shall throw an error if input cartesian meshes that should form a lattice have different pattern pitch meta data.
- 9.3.143The system shall throw an error if the circular regions or protected non-circular regions of the input cartesian mesh geometry are cut off.
- 9.3.144The system shall be able to shift boundary IDs of cartesian mesh geometry based on the user-defined pattern, for each cell, of shifts in boundary ids of interfaces.
- 9.3.145The system shall generate a square assembly mesh of linear elements then modify the peripheral region to facilitate further stitching.
- 9.3.146The system shall generate a square assembly mesh of quadratic QUAD9 elements then modify the peripheral region with TRI7 elements to facilitate further stitching.
- 9.3.147The system shall generate square assembly meshes with peripheral regions modified in order to stitch them together to form a core mesh.
- 9.3.148The system shall throw an error if the peripheral modification is set to be performed twice.
- 9.3.149The system shall throw an error if the cartesian peripheral modifier is applied to a hexagonal mesh.
- 9.3.150The system shall stitch hexagon meshes to form a large mesh with hexagon boundary.
- 9.3.151The system shall be able to stitch hexagonal meshes to form a larger patterned mesh with a hexagonal boundary using QUAD8 elements.
- 9.3.152The system shall be able to stitch hexagonal meshes to form a larger patterned mesh with a hexagonal boundary using QUAD9 elements.
- 9.3.153The system shall stitch hexagon meshes to form a large mesh with hexagon boundary and without interface boundaries defined.
- 9.3.154The system shall stitch hexagon meshes to form a large mesh with hexagon boundary without deforming the input meshes.
- 9.3.155The system shall stitch hexagon meshes to form a large mesh without extra boundary.
- 9.3.156The system shall stitch simple hexagon meshes to form a large mesh without extra boundary.
- 9.3.157The system shall stitch hexagon meshes twice to form a larger mesh.
- 9.3.158The system shall allow input structures to be defined in "inputs" without being part of the hexagonal lattice.
- 9.3.159The system shall stitch hexagon meshes twice to form a larger mesh with a control drum.
- 9.3.160The system shall throw a reasonable error when generating patterned hexagon mesh if one of the input meshes has a flat side facing up.
- 9.3.161The system shall throw an error if the input hexagonal meshes contain different block ids that share the same block name.
- 9.3.162The system shall throw an error if the layer number of pattern is not odd.
- 9.3.163The system shall throw an error if the layer number of hexagonal pattern is zero or unity.
- 9.3.164The system shall throw an error if the hexagonal pattern does not represent a hexagonal pattern.
- 9.3.165The system shall throw an error if the pattern includes input hexagonal mesh indices that exceed number of elements of inputs.
- 9.3.166The system shall throw an error if background_block_id and duct_block_ids are not provided simultaneously if the mesh has ducts.
- 9.3.167The system shall throw an error if background_block_name and duct_block_names are not provided simultaneously if the hexagonal mesh has ducts.
- 9.3.168The system shall throw an error if the specified duct size exceeds the external hexagonal boundary.
- 9.3.169The system shall throw an error if the specified hexagonal duct size is not strictly ascending.
- 9.3.170The system shall throw an error if length of duct_block_ids is not consistent with number of hexagonal ducts.
- 9.3.171The system shall throw an error if length of duct_block_names is not consistent with number of hexagonal ducts.
- 9.3.172The system shall throw an error if background_block_name or background_block_id are provided for the hexagonal pattern when pattern_boundary is none.
- 9.3.173The system shall throw an error if no hexagon size is provided when pattern_boundary is hexagon.
- 9.3.174The system shall throw an error if not all the hexagonal meshes provided in inputs are used in pattern.
- 9.3.175The system shall throw an error if no pitch meta data can be obtained from the input hexagonal mesh.
- 9.3.176The system shall throw an error if no pattern pitch meta data can be obtained from the input hexagonal mesh.
- 9.3.177The system shall throw an error if input hexagonal meshes have different pattern pitch meta data.
- 9.3.178The system shall throw an error if the input hexagonal mesh geometry that should not be deformed is cut off.
- 9.3.179The system shall throw an error if hexagon boundary needs to be generated for simple unit hexagon mesh.
- 9.3.180The system shall be able to shift boundary IDs of hexagonal mesh geometry based on the user-defined pattern, for each cell, of shifts in boundary ids of interfaces.
- 9.3.181The system shall generate a hexagonal assembly mesh of linear elements then modify the peripheral region to facilitate further stitching.
- 9.3.182The system shall generate a hexagonal assembly mesh of quadratic QUAD8 elements then modify the peripheral region with TRI6 elements to facilitate further stitching.
- 9.3.183The system shall generate a hexagonal assembly mesh with modified peripheral region and retain the specified reporting id.
- 9.3.184The system shall generate a hexagonal assembly mesh with modified peripheral region and assign new values to the specified reporting id.
- 9.3.185The system shall generate hexagonal assembly meshes with peripheral regions modified in order to stitch them together to form a core mesh.
- 9.3.186The system shall throw an error if the size of specificed reporting id values does not match size of specified reporting id names.
- 9.3.187The system shall throw an error if the specified reporting id to be modified does not exist on the input mesh.
- 9.3.188The system shall throw an error if the input mesh to the hexagonal mesh boundary modifier is generated by an incompatible mesh generator.
- 9.3.189The system shall throw an error if the hexagonal peripheral modifier is applied to a cartesian mesh.
- 9.3.190The system shall add a peripheral ring to to the input mesh without preserving volumes due to polygonization.
- 9.3.191The system shall add a peripheral ring to the input mesh with its centroid off the origin.
- 9.3.192The system shall add a peripheral ring to the input mesh after moving its centroid to the origin.
- 9.3.193The system shall be able to add a peripheral ring to the input mesh and preserve volumes even with polygonization.
- 9.3.194The system shall be able to add a peripheral ring with radial biasing to the input mesh and preserve volumes even with polygonization.
- 9.3.195The system shall be able to add a peripheral ring with boundary layers to the input mesh and preserve volumes even with polygonization.
- 9.3.196The system shall be able to add a peripheral ring consisting of quadratic elements with boundary layers to the input mesh and preserve volumes despite polygonization.
- 9.3.197The system shall throw an error if the external sideset of input mesh contains mixed types of side elements.
- 9.3.198The system shall throw an error if the specified inner and outer boundary layers are overlapped.
- 9.3.199The system shall throw an error if a non-2D mesh is given as the input mesh.
- 9.3.200The system shall throw an error if the given boundary of the input mesh has two or more segments.
- 9.3.201The system shall throw an error if the given boundary of the input mesh is an open curve.
- 9.3.202The system shall throw an error if the consecutive nodes of the given boundary of the input mesh do not change monotonically.
- 9.3.203The system shall throw an error if the given peripheral ring radius is not enough to cover the input mesh.
- 9.3.204The system shall throw an error if the given external boundary is actually an internal boundary of the input mesh.
- 9.3.205The system shall throw an error if the given external boundary does not exist in the input mesh.
- 9.3.206The system shall generate a triangulation without any refinement.
- 9.3.207The system shall generate a triangulation with area refinement.
- 9.3.208The system shall generate a 2D square pin mesh with fuel, gap, clad, background regions
- 9.3.209The system shall generate a 2D square pin mesh with fuel, gap, clad, background regions, with separate block names assigned based on region IDs in the mesh
- 9.3.210The system shall throw an error when generating a pin mesh with manually defined block names and being set to automatically define block names based on region IDs
- 9.3.211The system shall throw an error if 3d info is provided to a 2d mesh
- 9.3.212The system shall generate a 3D square pin mesh with ring and background region and tri center elements
- 9.3.213The system shall generate a pin mesh with more than 1 radial region and tri center elements
- 9.3.214The system shall generate a pin mesh with more than 1 radial region and quad center elements
- 9.3.215The system shall generate a pin mesh with no radial region and more than 1 background intervals with tri center elements
- 9.3.216The system shall generate a 2D hexagonal pin mesh with 2 radial regions
- 9.3.217The system shall generate a 3D hexagonal pin mesh with radial, background, and duct regions
- 9.3.218The system shall generate a 2D hexagonal homogenized pin mesh with quad discretization
- 9.3.219The system shall generate a 2D hexagonal homogenized pin mesh with tri discretization
- 9.3.220The system shall generate a 3D hexagonal homogenized pin mesh with quad discretization
- 9.3.221The system shall generate a 2D hexagonal homogenized pin mesh that is treated as a single assembly
- 9.3.222The system shall generate a 2D hexagonal ducted pin mesh that is treated as a single assembly
- 9.3.223The system shall generate a 2D Cartesian ducted pin mesh that is treated as a single assembly
- 9.3.224The system shall generate a polygon concentric circle mesh without rings and ducts.
- 9.3.225The system shall generate a polygon concentric circle mesh without rings and ducts with quadratic TRI7 and QUAD9 elements.
- 9.3.226The system shall generate a polygon concentric circle mesh without rings and ducts with quadratic TRI6 and QUAD8 elements.
- 9.3.227The system shall generate a polygon concentric circle mesh without rings and ducts with quadratic TRI7 and QUAD8 elements.
- 9.3.228The system shall generate a polygon concentric circle mesh without rings and ducts with quadratic TRI6 and QUAD9 elements.
- 9.3.229The system shall generate a polygon concentric circle mesh without rings and ducts and without generating side specific boundaries.
- 9.3.230The system shall generate a polygon mesh without rings and ducts and with a multilayer QUAD background using a single set of block id and name.
- 9.3.231The system shall generate a polygon mesh without rings and ducts and with a multilayer QUAD background using a single set of block id and name with quadratic QUAD9 elements.
- 9.3.232The system shall generate a polygon concentric circle mesh without rings and ducts with one of its flat side facing up.
- 9.3.233The system shall generate a polygon concentric circle mesh with only one radial layer of elements without rings and ducts.
- 9.3.234The system shall generate a polygon concentric circle mesh with only one radial layer of elements without rings and ducts with quadratic TRI7 elements.
- 9.3.235The system shall generate a polygon concentric circle mesh with only one radial layer of specially patterned quad elements without rings and ducts.
- 9.3.236The system shall generate a polygon concentric circle mesh with only one radial layer of specially patterned quad elements without rings and ducts with quadratic QUAD9 elements.
- 9.3.237The system shall generate a polygon concentric circle mesh with rings.
- 9.3.238The system shall generate a polygon concentric circle mesh with rings, with the innermost ring having multilayer QUAD elements and being assigned by a single set of block id and name.
- 9.3.239The system shall generate a polygon concentric circle mesh with rings with a Delaunay mesh in the inner ring.
- 9.3.240The system shall generate a polygon concentric circle mesh with an inner ring consisting of a Delaunay mesh with spatially varying element sizes
- 9.3.241The system shall generate a polygon concentric circle mesh with ducts.
- 9.3.242The system shall generate a polygon concentric circle mesh with rings and ducts.
- 9.3.243The system shall generate a polygon concentric circle mesh with rings and ducts and without interface boundaries defined.
- 9.3.244The system shall generate a polygon concentric circle mesh with rings and ducts and with inward interface boundaries defined.
- 9.3.245The system shall generate a radially biased polygon concentric circle mesh with rings and ducts.
- 9.3.246The system shall generate a polygon concentric circle mesh with boundary layer.
- 9.3.247The system shall generate a polygon concentric circle mesh with rings and ducts including boundary layers.
- 9.3.248The system shall generate a polygon concentric circle mesh with rings and ducts including boundary layers with quadratic TRI7 and QUAD9 elements.
- 9.3.249The system shall generate a polygon concentric circle mesh with rings, ducts and quad central elements.
- 9.3.250The system shall generate a polygon concentric circle mesh with rings, ducts and quad central elements with custom center quad factor.
- 9.3.251The system shall generate a pin mesh with the reporting ID
- for annular blocks.
- for annular individual rings.
- for sectors.
- for ring and sectors on hexagonal pin.
- 9.3.252The system shall throw an error if
- num_sectors_per_side and quad_center_elements are not compatible.
- the number of outward interface boundary names is different from the number of outward interfaces.
- multiple background block ids have been specified at the same time as one or more ring(s) for the inner region
- multiple background block names have been specified at the same time as one or more ring(s) for the inner region.
- background_block_ids has a length other than zero or two when the mesh does not have rings and the total number of background intervals does not equal one.
- background_block_names has a length other than zero or two when the mesh does not have rings and the total number of background intervals does not equal one.
- multiple block ids share a single block name.
- size of num_sectors_per_side is not num_sides.
- num_sectors_per_side elements are not all even.
- ring_radii and ring_intervals have different sizes.
- ring_radii and ring_radial_biases have different sizes.
- ring_block_ids size is not consistent with number of rings in the mesh.
- ring_block_names size is not consistent with number of rings in the mesh.
- ring_block_ids size is not consistent with number of rings in the mesh when central elements are quad.
- ring_block_names size is not consistent with number of rings in the mesh when central elements are quad.
- ring_radii is not strictly ascending.
- rings are bigger than the polygon.
- duct_sizes and duct_intervals have different sizes.
- duct_sizes and duct_radial_biases have different sizes.
- duct_block_ids size is not consistent with the number of ducts in the mesh.
- duct_block_names size is not consistent with the number of ducts in the mesh.
- duct_sizes is not strictly ascending.
- duct_sizes is non-positive or is low enough to be overlapped with rings.
- duct_sizes is bigger than the polygon.
- boundary layers in background region of a hexagonal cell are overlapped.
- inner and outer ring boundary layer parameters have inconsistent size.
- ring's inner boundary layer has zero interval but non-zero thickness.
- ring's inner boundary layer has nonzero intervals but zero thickness.
- ring's outer boundary layer has zero interval but non-zero thickness.
- ring's outer boundary layer has nonzero intervals but zero thickness.
- ring's boundary layers are thicker than the ring itself.
- inner and outer duct boundary layer parameters have inconsistent size.
- duct's inner boundary layer has zero interval but non-zero thickness.
- duct's inner boundary layer has nonzero intervals but zero thickness.
- duct's outer boundary layer has zero interval but non-zero thickness.
- duct's outer boundary layer has nonzero intervals but zero thickness.
- duct's boundary layers are thicker than the ring itself.
- center_quad_factor is provided for triangular center elements.
- outward interface boundaries related parameters are provided while outward interface boundaries are not set to be created.
- inward interface boundaries related parameters are provided but inward interface boundaries are not set to be created.
- interface boundary id shift parameter is provided but neither inward and outward boundaries are set to be created.
- the elements of the polygon mesh to be generated have incompatible types.
- 9.3.253The system shall support the generation of reporting IDs for Cartesian assemblies assigned
- in sequential order for each components in the lattice
- based on the ID of the input pattern tiles
- based on user-defined mapping
- 9.3.254The system shall support the generation of assembly and pin reporting IDs for Cartesian cores
- with regular square core boundary
- with zagged core boundary formed by removal of certain assemblies on periphery
- 9.3.255The system shall support the generation of reporting IDs
- for Cartesian assemblies assigned in sequential order for each components in the lattice
- for Cartesian assemblies assigned based on the ID of the input pattern tiles
- for Cartesian assemblies assigned based on user-defined mapping
- for Cartesian cores with regular square core boundary
- for having different reporting ID assignment schemes for each pattern
- 9.3.256The system shall support the generation of depletion IDs for a 2D reactor core
- 9.3.257The system shall support the generation of plane depletion IDs for 2D reactor cores with skipped materials
- 9.3.258The system shall support the generation of depletion IDs with a given extra element integer name for a 2D reactor core
- 9.3.259The system shall support the generation of sub-pin level depletion IDs
- 9.3.260The system shall support the generation of reporting IDs for hexagonal assemblies assigned
- in sequential order for each components in the lattice
- based on the ID of the input pattern tiles
- based on user-defined mapping
- 9.3.261The system shall support the generation of reporting IDs for hexagonal cores
- 9.3.262The system shall support the generation of reporting IDs for hexagonal cores with removal of certain assemblies on periphery
- 9.3.263The system shall support the generation of multiple reporting IDs for hexagonal assemblies with different assignment schemes
- 9.3.264The system shall support the generation of reporting IDs for hexagonal assemblies with the same user-defined background block id settings for both the pins and the assembly.
- 9.3.265The system shall
- generate a 3D mesh by fully revolving a simple 2D mesh with TRI3 elements
- generate a 3D mesh by fully revolving a simple 2D mesh with TRI6 elements
- generate a 3D mesh by fully revolving a simple 2D mesh with TRI7 elements
- generate a 3D mesh by fully revolving a simple 2D mesh with QUAD8 elements along an axis overlapped with edges of some elements
- generate a 3D mesh by fully revolving a simple 2D mesh with QUAD8 elements along an axis overlapped with a node of the 2D mesh
- generate a 3D mesh by fully revolving a simple 2D mesh with QUAD9 elements along an axis overlapped with edges of some elements
- generate a 3D mesh by fully revolving a simple 2D mesh with QUAD9 elements along an axis overlapped with a node of the 2D mesh
- generate a 3D mesh by partially revolving a simple 2D mesh with TRI3 elements clockwise
- generate a 3D mesh by partially revolving a simple 2D mesh with TRI3 elements counterclockwise
- generate a 3D mesh by fully revolving a simple 2D mesh with TRI3 elements using radius correction to preserve volumes
- generate a 3D mesh by fully revolving a simple 2D mesh with TRI3 elements along an axis overlapped with a node of the 2D mesh
- generate a 3D mesh by fully revolving a simple 2D mesh with TRI3 elements along an axis overlapped with an edge of an element of the 2D mesh
- generate a 3D mesh by fully revolving a simple 2D mesh with QUAD4 elements
- generate a 3D mesh by fully revolving a simple 2D mesh with QUAD4 elements along an axis overlapped with a node of the 2D mesh
- generate a 3D mesh by fully revolving a simple 2D mesh with QUAD4 elements along an axis overlapped with an edge of an element of the 2D mesh
- generate a 3D mesh by fully revolving a simple 2D mesh with mixed TRI3 and QUAD4 elements
- generate a 3D mesh that consists multiple azimuthal sections by fully revolving a simple 2D mesh with TRI3 elements
- generate a 3D mesh that consists multiple azimuthal sections by partially revolving a simple 2D mesh with TRI3 elements
- generate a 3D mesh by revolving a 2D mesh with the original element extra integers retained and swapped
- generate a 2D mesh by revolving a simple 1D mesh with EDGE2 elements
- generate a 2D mesh by revolving a simple 1D mesh with a single EDGE2 element
- generate a 2D mesh by revolving a simple 1D mesh with EDGE3 elements
- generate a 2D mesh by revolving a simple 1D mesh with a single EDGE3 element
- 9.3.266The system shall throw an error if
- if input mesh has an inappropriate dimension.
- if input 1D mesh is not perpendicular to the rotation axis.
- if the input 1D mesh has its centroid overlapped with the rotation axis.
- if the input 1D mesh is across the rotation axis.
- if the input 2D mesh is across the rotation axis.
- the input 1D mesh is not coplanar to the rotation axis.
- the source subdomain for a subdomain swap does not exist in the mesh.
- 9.3.267The system shall include the ability to create a simple hexagon mesh
- with TRI elements
- with QUAD elements
- with hybrid elements
- 9.3.268The system shall throw an error
- if the radial element layer number is provided but a non-hybrid mesh is to be generated.
- if excessive subdomain ids are provided.
- if insufficient subdomain ids are provided.
- if the custom subdomain ids and names provided have inconsistent sizes.
- 9.3.269The system shall include the ability to assign element IDs based on mesh subdomain IDs or names.
- 9.3.270The system shall return an error if
- the subdomain vector to use for assigning extra element IDs is empty
- a subdomain is listed more than once when assigning extra element IDs
- a subdomain listed by the user does not exist in the mesh
- the subdomain ids and the extra element id names arent vectors of the same size
- the subdomain ids and the extra element ids to set arent vectors of the same size
- the default extra element IDs arent specified for each extra element id
- 9.3.271The system shall be able to generate a tri-pin hexagonal assembly mesh.
- 9.3.272The system shall be able to generate a tri-pin assembly mesh by specifying the apothem size.
- 9.3.273The system shall be able to generate a tri-pin assembly mesh with ring and sector Ids.
- 9.3.274The system shall generate a tri-pin assembly mesh with three identical pins.
- 9.3.275The system shall be able to generate a dummy core mesh containing a tri-pin assembly.
- 9.3.276The system shall throw an error if the number of rings radii specified does not match either one or the number of pins
- 9.3.277The system shall throw an error if the largest ring specified exceeds the assembly boundary.
- 9.3.278The system shall throw an error if the parameter specifying the radial intervals of ring regions does not have appropriate size.
- 9.3.279The system shall throw an error if the parameter specifying the block ids of ring regions does not have appropriate size.
- 9.3.280The system shall throw an error if the parameter specifying the radial intervals of ring regions is inconsistent with the parameter specifying the sizes of ring regions.
- 9.3.281The system shall throw an error if the parameter specifying the block ids of ring regions is inconsistent with the parameter specifying the sizes of ring regions (case 1).
- 9.3.282The system shall throw an error if the parameter specifying the block ids of ring regions is inconsistent with the parameter specifying the sizes of ring regions (case 2).
- 9.3.283The system shall throw an error if the parameter specifying the block names of ring regions is inconsistent with the parameter specifying the sizes of ring regions (case 1).
- 9.3.284The system shall throw an error if the parameter specifying the block names of ring regions is inconsistent with the parameter specifying the sizes of ring regions (case 2).
- 9.3.285The system shall throw an error if the parameter specifying the block names of ring regions is inconsistent with the parameter specifying the block ids of ring regions.
- 9.3.286The system shall throw an error if the size of the parameter specifying the block ids of background region is not one when all the three sections have rings.
- 9.3.287The system shall throw an error if the size of the parameter specifying the block names of background region is not one when all the three sections have rings.
- 9.3.288The system shall throw an error if the size of the parameter specifying the block ids of background region is not two when ring-free section exists.
- 9.3.289The system shall throw an error if the size of the parameter specifying the block names of background region is not two when ring-free section exists.
- 9.3.290The system shall throw an error if the size of the parameter specifying the block ids of background region is not one when all the sections are ring-free and background_intervals is 1.
- 9.3.291The system shall throw an error if the size of the parameter specifying the block names of background region is not one when all the sections are ring-free and background_intervals is 1.
- 9.3.292The system shall throw an error if extra element integer values of the pins are provided without specifying extra element integer names.
- 9.3.293The system shall throw an error if extra element integer values specified do not have the correct size.
- 9.3.294The system shall throw an error if the offset of the ring region center moves the center of the ring out of the hexagon assembly region.
- reactor: Positions
- 9.4.1The system shall be able to compute positions from
- a regular hexagonal grid,
- a two-ring hexagonal grid with some positions excluded,
- a three-ring hexagonal grid with some positions excluded,
- a two-level nested hexagonal grid, with some positions excluded from the parent grid,
- a regular cartesian grid,
- a two-dimensional cartesian grid with some positions excluded, and
- a three-dimensional cartesian grid with some positions excluded.
- 9.4.2The system shall error
- if the hexagonal lattice flat-to-flat specified is too small for a single pin to fit,
- and if the hexagonal lattice flat-to-flat specified is too small for the rings of pins to fit.
Usability Requirements
No requirements of this type exist for this application, beyond those of its dependencies.Performance Requirements
No requirements of this type exist for this application, beyond those of its dependencies.System Interfaces
No requirements of this type exist for this application, beyond those of its dependencies.System Operations
Human System Integration Requirements
The Reactor module is command line driven and conforms to all standard terminal behaviors. Specific human system interaction accommodations shall be a function of the end-user's terminal. MOOSE (and therefore the Reactor module) does support optional coloring within the terminal's ability to display color, which may be disabled.
Maintainability
The latest working version (defined as the version that passes all tests in the current regression test suite) shall be publicly available at all times through the repository host provider.
Flaws identified in the system shall be reported and tracked in a ticket or issue based system. The technical lead will determine the severity and priority of all reported issues and assign resources at their discretion to resolve identified issues.
The software maintainers will entertain all proposed changes to the system in a timely manner (within two business days).
The core software in its entirety will be made available under the terms of a designated software license. These license terms are outlined in the LICENSE file alongside the Reactor module source code. As a MOOSE physics module, the license for the Reactor module is identical to that of the framework - that is, the GNU Lesser General Public License (LGPL) version 2.1 license.
Reliability
The regression test suite will cover at least 95% of all lines of code within the Reactor module at all times. Known regressions will be recorded and tracked (see Maintainability) to an independent and satisfactory resolution.
System Modes and States
MOOSE applications normally run in normal execution mode when an input file is supplied. However, there are a few other modes that can be triggered with various command line flags as indicated here:
Command Line Flag | Description of mode |
---|---|
-i <input_file> | Normal execution mode |
--split-mesh <splits> | Read the mesh block splitting the mesh into two or more pieces for use in a subsequent run |
--use-split | (implies -i flag) Execute the simulation but use pre-split mesh files instead of the mesh from the input file |
--yaml | Output all object descriptions and available parameters in YAML format |
--json | Output all object descriptions and available parameters in JSON format |
--syntax | Output all registered syntax |
--registry | Output all known objects and actions |
--registry-hit | Output all known objects and actions in HIT format |
--mesh-only (implies -i flag) | Run only the mesh related tasks and output the final mesh that would be used for the simulation |
--start-in-debugger <debugger> | Start the simulation attached to the supplied debugger |
The list of system-modes may not be extensive as the system is designed to be extendable to end-user applications. The complete list of command line options for applications can be obtained by running the executable with zero arguments. See the command line usage.
Physical Characteristics
The Reactor module is software only with no associated physical media. See System Requirements for a description of the minimum required hardware necessary for running the Reactor module.
Environmental Conditions
Not Applicable
System Security
MOOSE-based applications such as the Reactor module have no requirements or special needs related to system security. The software is designed to run completely in user-space with no elevated privileges required nor recommended.
Information Management
The core framework and all modules in their entirety will be made publicly available on an appropriate repository hosting site. Day-to-day backups and security services will be provided by the hosting service. More information about MOOSE backups of the public repository on INL-hosted services can be found on the following page: GitHub Backups
Polices and Regulations
MOOSE-based applications must comply with all export control restrictions.
System Life Cycle Sustainment
MOOSE-based development follows various agile methods. The system is continuously built and deployed in a piecemeal fashion since objects within the system are more or less independent. Every new object requires a test, which in turn requires an associated requirement and design description. The Reactor module development team follows the NQA-1 standards.
Packaging, Handling, Shipping and Transportation
No special requirements are needed for packaging or shipping any media containing MOOSE and Reactor module source code. However, some MOOSE-based applications that use the Reactor module may be export-controlled, in which case all export control restrictions must be adhered to when packaging and shipping media.
Verification
The regression test suite will employ several verification tests using comparison against known analytical solutions, the method of manufactured solutions, and convergence rate analysis.