SubChannel System Design Description
This template follows INL template TEM-140, "IT System Design Description."
This document serves as an addendum to Framework System Design Description and captures information for SDD specific to the SubChannel module.
Introduction
The MOOSE SubChannel module is based on the MOOSE framework and thus 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 SubChannel 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 SubChannel module. More information about the design documentation for MOOSE-based applications and like the SubChannel module can be found in Documenting MOOSE.
System Scope
The scope of SCM is the single-phase modeling, of ducted subchannel sub-assemblies, with bare pins in a square arrangement enclosed in a square duct, or wire-wrapped/bare pins, in a triangular arrangement enclosed in a hexagonal duct. In the first case, the coolant is water, in the second case it can be various liquid metals (Lead,Lead-Bismuth Eutectic, Sodium, Sodium–Potassium) or water.
Dependencies and Limitations
SCM is not a finite element code. It connects to the MOOSE framework through the external problem functionality, utilizing the framework's mesh-building capabilities to project its solution onto a compatible MOOSE mesh. The solution is computed using the PETSc library of objects and solvers. Any physics-based or mathematics-based assumptions in code simulations and code objects are detailed in their respective documentation pages.
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
Acronym | Description |
---|---|
API | Application Programming Interface |
DOE-NE | Department of Energy, Nuclear Energy |
FE | finite element |
HIT | Hierarchical Input Text |
HPC | High Performance Computing |
I/O | Input/Output |
INL | Idaho National Laboratory |
MOOSE | Multiphysics Object Oriented Simulation Environment |
MPI | Message Passing Interface |
SDD | Software Design Description |
Design Stakeholders and Concerns
Design Stakeholders
Stakeholders for MOOSE include several of the funding sources including 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, SubChannel 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 SubChannel 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
SCM inherits the wide range of pluggable systems from MOOSE. More information regarding MOOSE system design can be found in the framework System Design section. 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 SCM 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 simulation. This core set of objects has limited extendability and exists for every simulation configuration that the module is capable of running.
AuxKernels
AuxVariables
FluidProperties
ICs
Mesh
Modules
Modules/FluidProperties
Outputs
Postprocessors
Problem
Transfers
UserObjects
Variables
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 the MOOSE website, and those for the SubChannel 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 solid 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 HIT input files to construct several objects that will constitute an 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 SubChannel module is a command-line driven program. All interaction with the SubChannel 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 I/O or through local API calls. Neither the SubChannel 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 SubChannel 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
- subchannel: SCMBlockedMassFlowRateAux
- 20.1.1The system shall apply inlet boundary massflow conditions for a blocked/partially blocked inlet
Specification(s): blockedtest
Design: SCMBlockedMassFlowRateAux
Issue(s): #29237
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMMassFlowRateAux
- 20.1.2The system shall apply inlet boundary massflow conditions
Specification(s): test
Design: SCMMassFlowRateAux
Issue(s): #29511
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMRZPinQPrimeAux
- 20.1.3The system shall calculate linear heat rate on fuel pin surface
Specification(s): test
Design: SCMRZPinQPrimeAux
Issue(s): #29511
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMFlatMassFlowRateAux
- 20.1.4The system shall calculate a uniform massflow rate inlet boundary
Specification(s): test
Design: SCMFlatMassFlowRateAux
Issue(s): #29213
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- subchannel: FCTFdisplacementIC
- 20.2.1The system will calculate the geometric parameters for FCTF
Specification(s): test
Design: FCTFdisplacementIC
Issue(s): #29501
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: MarvelTriFlowAreaIC
- 20.2.2The system shall calculate the flow area and wetted perimeter for a MARVEL-type microreactor core modeled in SCM
Specification(s): test
Design: MarvelTriFlowAreaICMarvelTriWettedPerimIC
Issue(s): #30295
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: MarvelTriWettedPerimIC
- 20.2.2The system shall calculate the flow area and wetted perimeter for a MARVEL-type microreactor core modeled in SCM
Specification(s): test
Design: MarvelTriFlowAreaICMarvelTriWettedPerimIC
Issue(s): #30295
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMMassFlowRateIC
- 20.2.3The system will apply initial massflow rate
Specification(s): test
Design: SCMMassFlowRateIC
Issue(s): #29513
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMQuadFlowAreaIC
- 20.2.4The system will calculate the subchannel flow area for quadrilateral assemblies
Specification(s): test
Design: SCMQuadFlowAreaIC
Issue(s): #29194
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMQuadPowerIC
- 20.2.5The system will calculate the linear heat rate on subchannels/fuel-pins in a quadrilateral lattice
Specification(s): test
Design: SCMQuadPowerIC
Issue(s): #29233
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMQuadWettedPerimIC
- 20.2.6The system will calculate the wetted perimeter of subchannels in a quadrilateral lattice
Specification(s): test
Design: SCMQuadWettedPerimIC
Issue(s): #29233
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMTriFlowAreaIC
- 20.2.7The system will calculate the subchannel flow area for triangular assemblies
Specification(s): test
Design: SCMTriFlowAreaIC
Issue(s): #29194
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMTriPowerIC
- 20.2.8The system will calculate the linear heat rate on subchannels/fuel-pins in a triangular lattice
Specification(s): test_pin_power
Design: SCMTriPowerIC
Issue(s): #29194
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.2.9The system will calculate the linear heat rate on subchannels/fuel-pins in a triangular lattice, but with an axial power profile
Specification(s): test_axial_shape
Design: SCMTriPowerIC
Issue(s): #29194
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMTriWettedPerimIC
- 20.2.10The system will calculate the wetted perimeter of subchannels in a triangular lattice
Specification(s): test
Design: SCMTriWettedPerimIC
Issue(s): #29194
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMDetailedQuadInterWrapperMeshGenerator
- 20.3.1The system will create a detailed mesh of the inter-wrapper for quadrilateral assemblies
Specification(s): coords
Design: SCMDetailedQuadInterWrapperMeshGenerator
Issue(s): #29484
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMDetailedQuadPinMeshGenerator
- 20.3.2The system will create a detailed mesh of the fuel pins for quadrilateral assemblies
Specification(s): coords
Design: SCMDetailedQuadPinMeshGenerator
Issue(s): #29246
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMDetailedQuadSubChannelMeshGenerator
- 20.3.3The system will create a detailed mesh of the subchannels for quadrilateral assemblies (3x3)
Specification(s): coords
Design: SCMDetailedQuadSubChannelMeshGenerator
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.3.4The system will create a detailed mesh of the subchannels for quadrilateral assemblies (1x2)
Specification(s): 1x2
Design: SCMDetailedQuadSubChannelMeshGenerator
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.3.5The system will create a detailed mesh of the subchannels for quadrilateral assemblies (1x3)
Specification(s): 1x3
Design: SCMDetailedQuadSubChannelMeshGenerator
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.3.6The system will create a detailed mesh of the subchannels for quadrilateral assemblies (3x1)
Specification(s): 3x1
Design: SCMDetailedQuadSubChannelMeshGenerator
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMDetailedTriPinMeshGenerator
- 20.3.7The system will create a detailed mesh of the fuel pins for triangular assemblies
Specification(s): coords
Design: SCMDetailedTriPinMeshGenerator
Issue(s): #29484
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMDetailedTriSubChannelMeshGenerator
- 20.3.8The system will create a detailed mesh of the subchannels in triangular assemblies
Specification(s): coords
Design: SCMDetailedTriSubChannelMeshGenerator
Issue(s): #29493
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMQuadInterWrapperMeshGenerator
- 20.3.9The system will create a mesh of the inter-wrapper for quadrilateral assemblies
Specification(s): coords
Design: SCMQuadInterWrapperMeshGenerator
Issue(s): #29484
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMQuadSubChannelMeshGenerator
- 20.3.10The system will create a mesh of the subchannels for quadrilateral assemblies
Specification(s): coords
Design: SCMQuadSubChannelMeshGenerator
Issue(s): #29241
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.3.11The system shall check the minimum number of subchannels
Specification(s): subchannel_number
Design: SCMQuadSubChannelMeshGenerator
Issue(s): #29224
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- subchannel: SCMQuadPinMeshGenerator
- 20.3.12The system will create a mesh of the fuel pins for quadrilateral assemblies
Specification(s): coords
Design: SCMQuadPinMeshGenerator
Issue(s): #29241
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMTriInterWrapperMeshGenerator
- 20.3.13The system will create a mesh of the inter-wrapper for triangualar assemblies
Specification(s): coords
Design: SCMTriInterWrapperMeshGenerator
Issue(s): #29484
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMTriDuctMeshGenerator
- 20.3.14The system will create a hexagonal duct mesh and a pin mesh for triangular assemblies
Specification(s): coords
Design: SCMTriDuctMeshGenerator
Issue(s): #29484
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.3.15The system will create a hexagonal duct mesh for triangular assemblies
Specification(s): test
Design: SCMTriDuctMeshGenerator
Issue(s): #28497
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMTriSubChannelMeshGenerator
- 20.3.16The system will create a subchannel mesh for triangular assemblies
Specification(s): tricoords3
Design: SCMTriSubChannelMeshGenerator
Issue(s): #29194
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: TriSubChannel1PhaseProblem
- 20.4.1The system shall be able to solve a subchannel problem as a child application.
Specification(s): check
Design: TriSubChannel1PhaseProblem
Issue(s): #30401
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.1The system will examine the tri subchannel solver for lead bismuth eutetic coolant
Specification(s): test_LBE
Design: TriSubChannel1PhaseProblem
Issue(s): #29486
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.2The system will examine the tri subchannel solver for lead coolant
Specification(s): test_LEAD
Design: TriSubChannel1PhaseProblem
Issue(s): #29486
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.3The system will examine the subchannel solver for the EBR-II case
Specification(s): SHRT-17_SS_test
Design: TriSubChannel1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.4The system will examine the subchannel explicit solver for a 19pin liquid sodium cooled assembly
Specification(s): test_explicit
Design: TriSubChannel1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.5The system will examine the subchannel implicit solver for a 19pin liquid sodium cooled assembly
Specification(s): test_implicit
Design: TriSubChannel1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.6The system will examine the subchannel monolithic solver for a 19pin liquid sodium cooled assembly
Specification(s): test_monolithic
Design: TriSubChannel1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.7The system will examine the subchannel full monolithic solver for a 19pin liquid sodium cooled assembly
Specification(s): test_full_monolithic
Design: TriSubChannel1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- subchannel: QuadSubChannelNormalSliceValues
- 20.5.1The system will print a variable on a plane in a quadrilateral assembly
Specification(s): test
Design: QuadSubChannelNormalSliceValues
Issue(s): #29226
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- subchannel: SubChannelPointValue
- 20.6.1The system will print a variable on a specific subchannel and height in quadrilateral assemblies
Specification(s): test
Design: SubChannelPointValue
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.6.2The system will test the user provided height
Specification(s): subchannel_height
Design: SubChannelPointValue
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 20.6.3The system will print a variable on a specific subchannel and height in triangular assemblies
Specification(s): test
Design: SubChannelPointValue
Issue(s): #29226
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- subchannel: QuadSubChannel1PhaseProblem
- 20.7.8The system will examine the coupling using SCM as main app
Specification(s): coupling_test
Design: QuadSubChannel1PhaseProblem
Issue(s): #29247
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.17The system shall be able to solve a PSBT-type case with the subchannel solver using an explicit algorithm.
Specification(s): psbt_regression_test_explicit
Design: QuadSubChannel1PhaseProblem
Issue(s): #29196#29199#29237#29505
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.18The system shall be able to solve a PSBT-type case with the subchannel solver using the non-default friction/mixing model.
Specification(s): psbt_regression_test_explicit_friction2
Design: QuadSubChannel1PhaseProblem
Issue(s): #29196#29199#29237#29505
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.19The system shall be able to solve a PSBT-type case with the subchannel solver using an explicit algorithm and a staggered pressure formulation.
Specification(s): psbt_regression_test_explicit_staggered
Design: QuadSubChannel1PhaseProblem
Issue(s): #29196#29199#29237#29505
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.20The system shall be able to solve a PSBT-type case with the subchannel solver using an implicit algorithm.
Specification(s): psbt_regression_test_implicit
Design: QuadSubChannel1PhaseProblem
Issue(s): #29196#29199#29237#29505
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.21The system shall be able to solve a PSBT-type case with the subchannel solver using a monolithic algorithm.
Specification(s): psbt_regression_test_monolithic
Design: QuadSubChannel1PhaseProblem
Issue(s): #29196#29199#29237#29505
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.22The system shall be able to solve a PSBT-type case with the subchannel solver using a full-monolithic algorithm.
Specification(s): psbt_regression_test_full_monolithic
Design: QuadSubChannel1PhaseProblem
Issue(s): #29196#29199#29237#29505
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.7.23The system shall be able to solve a PSBT-type case with the subchannel solver using a full-monolithic algorithm and a staggered pressure formulation.
Specification(s): psbt_regression_test_full_monolithic_staggered
Design: QuadSubChannel1PhaseProblem
Issue(s): #29196#29199#29237#29505
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- 20.8.1The system shall be able to restart after a steady state solution
Specification(s): steady
Design: QuadSubChannel1PhaseProblem
Issue(s): #28497
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.8.2The system shall be able to restart after a transient solution
Specification(s): transient
Design: QuadSubChannel1PhaseProblem
Issue(s): #28497
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: QuadInterWrapper1PhaseProblem
- 20.7.9The system will examine the explicit interwrapper solver for quadrilateral assemblies
Specification(s): quad_interwrapper
Design: QuadInterWrapper1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.7.10The system will examine the monolithic interwrapper solver for quadrilateral assemblies
Specification(s): quad_interwrapper_monolithic
Design: QuadInterWrapper1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.7.11The system will examine the monolitich staggered grid interwrapper solver for quadrilateral assemblies
Specification(s): quad_interwrapper_monolithic_staggered
Design: QuadInterWrapper1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.7.12The system will examine the explicit interwrapper solver for triangular assemblies
Specification(s): tri_interwrapper
Design: QuadInterWrapper1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.7.13The system will examine the explicit interwrapper solver for triangular assemblies and side bypass
Specification(s): tri_interwrapper_tight_side
Design: QuadInterWrapper1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.7.14The system will examine the implicit interwrapper solver for triangular assemblies
Specification(s): tri_interwrapper_implicit
Design: QuadInterWrapper1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.7.15The system will examine the monolithic interwrapper solver for triangular assemblies
Specification(s): tri_interwrapper_monolithic
Design: QuadInterWrapper1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 20.7.16The system will examine the monolithic staggered grif interwrapper solver for triangular assemblies
Specification(s): tri_interwrapper_monolithic_staggered
Design: QuadInterWrapper1PhaseProblem
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: SCMSolutionTransfer
- 20.9.1The system shall be able to transger the subchannel/pin solution onto a detailed mesh
Specification(s): quad
Design: SCMSolutionTransfer
Issue(s): #29251
Collection(s): FUNCTIONAL
Type(s): Exodiff
- subchannel: InterWrapperSolutionTransfer
- 20.9.2The system shall be able to transger the interwrapper solution onto a detailed mesh
Specification(s): quad_iw
Design: InterWrapperSolutionTransfer
Issue(s): #29258
Collection(s): FUNCTIONAL
Type(s): Exodiff