Reactor System Design Description

This template follows INL template TEM-140, "IT System Design Description."

commentnote

This document serves as an addendum to Framework System Design Description and captures information for Software Design Description (SDD) specific to the Reactor module.

Introduction

The MOOSE Reactor module is based on the MOOSE framework, thus it inherits the unique features and base characteristics of the framework, as outlined in the Framework System Design Description. Specific details unique to the module are outlined in this document.

System Purpose

The Software Design Description provided here is description of each object in the system. The pluggable architecture of the underlying framework of the Reactor module makes MOOSE and MOOSE-based applications straightforward to develop as each piece of end-user (developer) code that goes into the system follows a well-defined interface for the underlying systems that those object plug into. These descriptions are provided through developer-supplied "markdown" files that are required for all new objects that are developed as part of the Reactor module. More information about the design documentation for MOOSE-based applications and like the Reactor module can be found in Documenting MOOSE.

System Scope

The purpose of this software is to augment the core MOOSE framework to provide libraries and capability related to producing meshes for nuclear reactor simulations using Finite Element Method (FEM) or Finite Volume Method (FVM). Scope items specific to the framework that are therefore components of the Reactor module are given in the framework System Scope.

Dependencies and Limitations

The Reactor module, having its base on the MOOSE framework, inherits MOOSE's software dependencies. The scope of the module is evolving constantly based on funding, resources, priorities, and laboratory direction. However, like MOOSE, features and bugs can be offloaded to developers with appropriate levels of domain knowledge and direction from the module design team. The primary list of software dependencies can be found in the framework Dependencies and Limitations, as it is identical to that of MOOSE. There are currently no additional required software dependencies for using the Reactor module code and models.

Definitions and Acronyms

This section defines, or provides the definition of, all terms and acronyms required to properly understand this specification.

Definitions

  • Pull (Merge) Request: A proposed change to the software (e.g. usually a code change, but may also include documentation, requirements, design, and/or testing).

  • Baseline: A specification or product (e.g., project plan, maintenance and operations (M&O) plan, requirements, or design) that has been formally reviewed and agreed upon, that thereafter serves as the basis for use and further development, and that can be changed only by using an approved change control process (NQA-1, 2009).

  • Validation: Confirmation, through the provision of objective evidence (e.g., acceptance test), that the requirements for a specific intended use or application have been fulfilled (24765:2010(E), 2010).

  • 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

AcronymDescription
APIApplication Programming Interface
DOE-NEDepartment of Energy, Nuclear Energy
FEfinite element
FEMFinite Element Method
FVMFinite Volume Method
HITHierarchical Input Text
HPCHigh Performance Computing
I/OInput/Output
INLIdaho National Laboratory
MOOSEMultiphysics Object Oriented Simulation Environment
MPIMessage Passing Interface
SDDSoftware Design Description

Design Stakeholders and Concerns

Design Stakeholders

Stakeholders for MOOSE include several of the funding sources including Department of Energy, Nuclear Energy (DOE-NE) and the INL. However, Since MOOSE is an open-source project, several universities, companies, and foreign governments have an interest in the development and maintenance of the MOOSE project.

Stakeholder Design Concerns

Concerns from many of the stakeholders are similar. These concerns include correctness, stability, and performance. The mitigation plan for each of these can be addressed. For correctness, Reactor module development requires either regression or unit testing for all new code added to the repository. The project contains several comparisons against analytical solutions where possible and also other verification methods such as MMS. For stability, the Reactor module (located within the MOOSE repository) maintains multiple branches to incorporate several layers of testing both internally and for dependent applications. Finally, performance tests are also performed as part of the the normal testing suite to monitor code change impacts to performance.

System Design

The Reactor module inherits the wide range of pluggable systems from MOOSE. More information regarding MOOSE system design can be found in the framework System Design section. As a meshing module/library, the Reactor module contains several geometry and mesh models related to nuclear reactors. These are summarized via documentation of the capabilities and demonstration examples on the module home page. Documentation for each object, data structure, and process specific to the module are kept up-to-date alongside the MOOSE documentation. Expected failure modes and error conditions are accounted for via regression testing, and error conditions are noted in object documentation where applicable.

System Structure

The architecture of the Reactor module consists of a core and several pluggable systems (both inherited from the MOOSE framework). The core of MOOSE consists of a number of key objects responsible for setting up and managing the user-defined objects of a finite element/volume simulation. This core set of objects has limited extendability and exists for every simulation configuration that the module is capable of running.

Functions

Mesh

MeshDivisions

Positions

The MooseApp is the top-level object used to hold all of the other objects in a simulation. In a normal simulation a single MooseApp object is created and "run()". This object uses its Factory objects to build user defined objects which are stored in a series of Warehouse objects and executed. The Finite Element data is stored in the Systems and Assembly object while the domain information (the Mesh) is stored in the Mesh object. A series of threaded loops are used to run parallel calculations on the objects created and stored within the warehouses.

MOOSE's pluggable systems are documented on MOOSE website, and those for the Reactor module are on this webpage, accessible through the high-level system links above. Each of these systems has a set of defined polymorphic interfaces and are designed to accomplish a specific task within the simulation. The design of these systems is fluid and is managed through agile methods and ticket request system either on GitHub (for MOOSE) or on the defined software repository for this application.

Data Design and Control

At a high level, the system is designed to process Hierarchical Input Text (HIT) input files to construct several objects that will constitute an finite element (FE) simulation. Some of the objects in the simulation may in turn load other file-based resources to complete the simulation. Examples include meshes or data files. The system will then assemble systems of equations and solve them using the libraries of the Code Platform. The system can then output the solution in one or more supported output formats commonly used for visualization.

Human-Machine Interface Design

The Reactor module is a command-line driven program. All interaction with the Reactor module is ultimately done through the command line. This is typical for HPC applications that use the MPI interface for running on super computing clusters. Optional GUIs may be used to assist in creating input files and launching executables on the command line.

System Design Interface

All external system interaction is performed either through file Input/Output (I/O) or through local API calls. Neither the Reactor module, nor the MOOSE framework, nor the other MOOSE modules are designed to interact with any external system directly through remote procedure calls. Any code to code coupling performed using the framework are done directly through API calls either in a static binary or after loading shared libraries.

Security Structure

The Reactor module does not require any elevated privileges to operate and does not run any stateful services, daemons or other network programs. Distributed runs rely on the MPI library.

Requirements Cross-Reference

  • reactor: CartesianMeshTrimmer
  • 7.3.19The system shall be able to trim all of the four peripheral regions off a square assembly mesh.

    Specification(s): peripheral_trimming_full

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.20The system shall be able to trim a fraction of the four peripheral regions off a square assembly mesh.

    Specification(s): peripheral_trimming_partial

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.21The system shall be able to trim a fraction of a square assembly mesh through its center.

    Specification(s): center_trimming

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.22The system shall be able to trim a fraction of a square assembly mesh with its peripheral regions modified through its center.

    Specification(s): mod_center_trimming

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.23The system shall be able to perform both peripheral and center trimming simultaneously on a square assembly.

    Specification(s): double_trimming

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.24The system shall be able to perform center trimming on a center-trimmable cartesian mesh with peripheral ring(s) added.

    Specification(s): peripheral_ring_trimming

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.25The system shall be able to perform center trimming on a cartesian core mesh generated by double cartesian patterning.

    Specification(s): patterned_pattern_trimming

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.26The 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.

    Specification(s): mod_patterned_pattern_trimming

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.27The system shall be able to perform center trimming on a core mesh generated by double cartesian patterning with pin centers consisting of triangular elements.

    Specification(s): patterned_pattern_trimming_tri

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.28The system shall be able to stitch together cartesian assembly meshes after peripheral trimming.

    Specification(s): patterned_trimmed

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.29The system shall throw an error if the input cartesian mesh does not contain the provided external boundary.

    Specification(s): err_no_external_bdry

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.30The system shall throw an error if the input mesh has not been marked compatible with cartesian mesh trimming.

    Specification(s): err_incompatible

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.31The system shall throw an error if the input cartesian mesh cannot be center trimmed.

    Specification(s): err_center_trimmable

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.32The 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.

    Specification(s): err_unneeded_center_trim_bdry

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.33The 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.

    Specification(s): err_over_center_trim

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.34The system shall throw an error if the center trimming index parameters are not given in a pair for cartesian mesh trimming.

    Specification(s): err_incomplete_center_trim

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.35The system shall throw an error if the input cartesian mesh cannot be trimmed at the periphery.

    Specification(s): err_peripheral_trimmable

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.36The 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.

    Specification(s): err_unneeded_peripheral_trim_bdry

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.37The system shall throw an error if the block name assigned to the newly generated TRI elements already exists in the input cartesian mesh.

    Specification(s): err_preexistent_tri_block_name

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.38The system shall throw a warning if new blocks are created in the cartesian mesh to avert degenerate elements.

    Specification(s): warning_tri_block_gen

    Design: CartesianMeshTrimmer

    Issue(s): #22828

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • reactor: CoreMeshGenerator
  • 7.3.44The system shall generate a full 3D square core mesh with 3 pin types and 2 assembly types

    Specification(s): square

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.45The 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

    Specification(s): square_rid_as_block_name

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.46The 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

    Specification(s): square_metadata

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): RunApp

  • 7.3.47The system shall output reactor-related metadata for a full 3D square core mesh in mesh generation mode

    Specification(s): square_metadata_jsondiff

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): JSONDiff

  • 7.3.48The 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

    Specification(s): square_metadata_bypass_meshgen

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): JSONDiff

  • 7.3.49The 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

    Specification(s): square_metadata_bypass_meshgen_append_generator

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): JSONDiff

  • 7.3.50The system shall throw an error in data driven mode with an RGMB mesh as the data driven generator

    Specification(s): bypass_meshgen_err

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.51The system shall throw an error if a core is composed of different assemblies with a shared assembly type id

    Specification(s): core_shared_assembly_ids

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.52The system shall throw an error if a core is composed of different pins with a shared pin type id

    Specification(s): core_shared_pin_ids

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.53The 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

    Specification(s): square_mixed_background_duct

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.54The system shall generate a 3D square core mesh with empty lattice positions

    Specification(s): empty

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.55The system shall generate a 3D square core mesh with empty lattice positions defined as the first input name

    Specification(s): empty_first_pos

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.56The system shall throw an error if all input assembly names are defined as dummy assemblies

    Specification(s): err_all_empty

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.57The system shall generate a 3D hexagonal core mesh with empty lattice positions and explicit block name specification

    Specification(s): hex

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.58The system shall print out reactor-related metadata to console output for a 3D hexagonal core mesh with empty lattice positions and explicit block name specification

    Specification(s): hex_metadata

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): RunApp

  • 7.3.59The system shall output reactor-related metadata for a full 3D hexagonal core mesh in mesh generation mode

    Specification(s): hex_metadata_jsondiff

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): JSONDiff

  • 7.3.60The 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

    Specification(s): hex_metadata_bypass_meshgen

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): JSONDiff

  • 7.3.61The system shall generate a full 3D square core mesh with 2 single assembly types

    Specification(s): single_assembly_square_core

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.62The system shall generate a full 3D hexagonal core mesh with 2 single assembly types

    Specification(s): single_assembly_hex_core_empty

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.63The system shall generate a full 3D hexagonal core mesh with 2 duct heterogeneous assembly types

    Specification(s): duct_het_hex_core_empty

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.64The system shall generate a 2D hexagonal core mesh that transfers metadata correctly across RGMB mesh generators

    Specification(s): hex_metadata_transfer

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.65The 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

    Specification(s): hex_metadata_transfer_mesh_only

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.66The system shall print out reactor-related metadata to console output for a 2D hexagonal core mesh

    Specification(s): hex_metadata_2d

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): RunApp

  • 7.3.67The system shall output reactor-related metadata for a 2D hexagonal core mesh in mesh generation mode

    Specification(s): hex_metadata_2d_jsondiff

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): JSONDiff

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

    Specification(s): hex_metadata_2d_bypass_meshgen

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): JSONDiff

  • 7.3.69The system shall print out reactor-related metadata to console output for a 3D hexagonal core mesh with extra assemblies not part of core lattice

    Specification(s): hex_metadata_extra_assemblies

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): RunApp

  • 7.3.70The system shall generate a 2D hex core mesh with a reactor periphery meshed using a triangular mesh.

    Specification(s): ptmg_periphery

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): CSVDiff

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

    Specification(s): periphery_rid_as_block_name_err

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.72The system shall generate a 2D hex core mesh with a reactor periphery meshed using a quadrilateral element ring pattern.

    Specification(s): prmg_periphery

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.73The system shall generate a 3D hexagonal core mesh with pin-wise depletion IDs

    Specification(s): depletion_id_pin

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.74The system shall generate a 3D hexagonal core mesh with pin type-wise depletion IDs

    Specification(s): depletion_id_pin_type

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.75The system shall generate a 3D hexagonal core mesh with flexible assembly patterning that avoids hanging nodes at assembly interfaces

    Specification(s): flexible_stitching_hex

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): CSVDiff

  • 7.3.76The system shall generate a 3D Cartesian core mesh with flexible assembly patterning that avoids hanging nodes at assembly interfaces

    Specification(s): flexible_stitching_cart

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): CSVDiff

  • 7.3.77The system shall generate a 3D core mesh with the number of sectors at the assembly boundary being set by the user

    Specification(s): flexible_stitching_modify_num_sectors

    Design: CoreMeshGenerator

    Issue(s): #19949#25396

    Collection(s): FUNCTIONAL

    Type(s): CSVDiff

  • reactor: HexagonMeshTrimmer
  • 7.3.88The system shall be able to trim all of the six peripheral regions off an hexagonal assembly mesh.

    Specification(s): peripheral_trimming_full

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.89The system shall be able to trim a fraction of the six peripheral regions off an hexagonal assembly mesh.

    Specification(s): peripheral_trimming_partial

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.90The system shall be able to trim a fraction of an hexagonal assembly mesh through its center.

    Specification(s): center_trimming

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.91The system shall be able to trim a fraction of an hexagonal assembly mesh with its peripheral regions modified through its center.

    Specification(s): mod_center_trimming

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.92The system shall be able to perform both peripheral and center trimming simultaneously on an hexagonal assembly.

    Specification(s): double_trimming

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.93The system shall be able to perform center trimming on a center-trimmable hexagonal mesh with peripheral ring(s) added.

    Specification(s): peripheral_ring_trimming

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.94The system shall be able to perform center trimming on an hexagonal core mesh generated by double hexagonal patterning.

    Specification(s): patterned_pattern_trimming

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.95The 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.

    Specification(s): mod_patterned_pattern_trimming

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.96The system shall be able to perform center trimming on a core mesh generated by double hexagonal patterning with pin centers consisting of triangular elements.

    Specification(s): patterned_pattern_trimming_tri

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.97The system shall be able to stitch together hexagonal assembly meshes after peripheral trimming.

    Specification(s): patterned_trimmed

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.98The system shall throw an error if the input hexagonal mesh does not contain the provided external boundary.

    Specification(s): err_no_external_bdry

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.99The system shall throw an error if the input mesh has not been marked compatible with hexagonal mesh trimming.

    Specification(s): err_incompatible

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.100The system shall throw an error if the input hexagonal mesh cannot be center trimmed.

    Specification(s): err_center_trimmable

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.101The 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.

    Specification(s): err_unneeded_center_trim_bdry

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.102The 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.

    Specification(s): err_over_center_trim

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.103The system shall throw an error if the center trimming index parameters are not given in a pair for hexagonal mesh trimming.

    Specification(s): err_incomplete_center_trim

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.104The system shall throw an error if the input hexagonal mesh cannot be trimmed at the periphery.

    Specification(s): err_peripheral_trimmable

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.105The 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.

    Specification(s): err_unneeded_peripheral_trim_bdry

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.106The system shall throw an error if the block name assigned to the newly generated TRI elements already exists in the input hexagonal mesh.

    Specification(s): err_preexistent_tri_block_name

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.107The system shall throw a warning if new blocks are created in the hexagonal mesh to avert degenerate elements.

    Specification(s): warning_tri_block_gen

    Design: HexagonMeshTrimmer

    Issue(s): #21853

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • reactor: PinMeshGenerator
  • 7.3.199The system shall generate a 2D square pin mesh with fuel, gap, clad, background regions

    Specification(s): square

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.200The 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

    Specification(s): square_rid_as_block_name

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.201The 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

    Specification(s): square_rid_as_block_name_err

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.202The system shall throw an error if 3d info is provided to a 2d mesh

    Specification(s): 2d_square_w_3d_info

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 7.3.203The system shall generate a 3D square pin mesh with ring and background region and tri center elements

    Specification(s): tri

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.204The system shall generate a pin mesh with more than 1 radial region and tri center elements

    Specification(s): tri_intervals

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.205The system shall generate a pin mesh with more than 1 radial region and quad center elements

    Specification(s): quad_intervals

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.206The system shall generate a pin mesh with no radial region and more than 1 background intervals with tri center elements

    Specification(s): background_tri_intervals

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.207The system shall generate a 2D hexagonal pin mesh with 2 radial regions

    Specification(s): hex

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.208The system shall generate a 3D hexagonal pin mesh with radial, background, and duct regions

    Specification(s): complex

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.209The system shall generate a 2D hexagonal homogenized pin mesh with quad discretization

    Specification(s): hex_pin_homogenized_quad

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.210The system shall generate a 2D hexagonal homogenized pin mesh with tri discretization

    Specification(s): hex_pin_homogenized_tri

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.211The system shall generate a 3D hexagonal homogenized pin mesh with quad discretization

    Specification(s): hex_pin_homogenized_3d

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.212The system shall generate a 2D hexagonal homogenized pin mesh that is treated as a single assembly

    Specification(s): hex_single_assembly_homogenized

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.213The system shall generate a 2D hexagonal ducted pin mesh that is treated as a single assembly

    Specification(s): hex_single_assembly_ducted

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.214The system shall generate a 2D Cartesian ducted pin mesh that is treated as a single assembly

    Specification(s): cart_single_assembly_ducted

    Design: PinMeshGenerator

    Issue(s): #19949

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • reactor: RevolveGenerator
  • 7.3.253The system shall
    1. generate a 3D mesh by fully revolving a simple 2D mesh with TRI3 elements
    2. generate a 3D mesh by fully revolving a simple 2D mesh with TRI6 elements
    3. generate a 3D mesh by fully revolving a simple 2D mesh with TRI7 elements
    4. generate a 3D mesh by fully revolving a simple 2D mesh with QUAD8 elements along an axis overlapped with edges of some elements
    5. 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
    6. generate a 3D mesh by fully revolving a simple 2D mesh with QUAD9 elements along an axis overlapped with edges of some elements
    7. 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
    8. generate a 3D mesh by partially revolving a simple 2D mesh with TRI3 elements clockwise
    9. generate a 3D mesh by partially revolving a simple 2D mesh with TRI3 elements counterclockwise
    10. generate a 3D mesh by fully revolving a simple 2D mesh with TRI3 elements using radius correction to preserve volumes
    11. 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
    12. 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
    13. generate a 3D mesh by fully revolving a simple 2D mesh with QUAD4 elements
    14. 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
    15. 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
    16. generate a 3D mesh by fully revolving a simple 2D mesh with mixed TRI3 and QUAD4 elements
    17. generate a 3D mesh that consists multiple azimuthal sections by fully revolving a simple 2D mesh with TRI3 elements
    18. generate a 3D mesh that consists multiple azimuthal sections by partially revolving a simple 2D mesh with TRI3 elements
    19. generate a 3D mesh by revolving a 2D mesh with the original element extra integers retained and swapped
    20. generate a 2D mesh by revolving a simple 1D mesh with EDGE2 elements
    21. generate a 2D mesh by revolving a simple 1D mesh with a single EDGE2 element
    22. generate a 2D mesh by revolving a simple 1D mesh with EDGE3 elements
    23. generate a 2D mesh by revolving a simple 1D mesh with a single EDGE3 element

    Specification(s): test/simple_tri, test/simple_tri6, test/simple_tri7, test/simple_quad8_1, test/simple_quad8_2, test/simple_quad9_1, test/simple_quad9_2, test/simple_tri_270, test/simple_tri_-270, test/simple_tri_vol_preserve, test/simple_tri_on_axis_1, test/simple_tri_on_axis_2, test/simple_quad, test/simple_quad_on_axis_1, test/simple_quad_on_axis_2, test/simple_hybrid, test/multi_tri, test/multi_tri_partial, test/ei_swap, test/revolve_1d, test/revolve_1d_single, test/revolve_1d_second, test/revolve_1d_single_second

    Design: RevolveGenerator

    Issue(s): #27699

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 7.3.254The system shall throw an error if
    1. if input mesh has an inappropriate dimension.
    2. if input 1D mesh is not perpendicular to the rotation axis.
    3. if the input 1D mesh has its centroid overlapped with the rotation axis.
    4. if the input 1D mesh is across the rotation axis.
    5. if the input 2D mesh is across the rotation axis.
    6. the input 1D mesh is not coplanar to the rotation axis.
    7. the source subdomain for a subdomain swap does not exist in the mesh.

    Specification(s): error/err_3d_input, error/err_1d_nonverticle, error/err_input_centroid_on_axis, error/err_1d_input_across_axis, error/err_2d_input_across_axis, error/err_input_off_plane, error/err_bad_block_swap

    Design: RevolveGenerator

    Issue(s): #27699

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

References

  1. ISO/IEC/IEEE 24765:2010(E). Systems and software engineering—Vocabulary. first edition, December 15 2010.[BibTeX]
  2. ASME NQA-1. ASME NQA-1-2008 with the NQA-1a-2009 addenda: Quality Assurance Requirements for Nuclear Facility Applications. first edition, August 31 2009.[BibTeX]