TMAP8 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 TMAP8 application.
- Framework System Design Description
- Heat Transfer System Design Description
- Ray Tracing System Design Description
- Navier Stokes System Design Description
- Thermal Hydraulics System Design Description
- Fluid Properties System Design Description
- Reconstructed Discontinuous Galerkin System Design Description
- Scalar Transport System Design Description
- Solid Properties System Design Description
- Misc System Design Description
- Phase Field System Design Description
- Solid Mechanics System Design Description
Introduction
Many of the phenomena related to tritium transport depend on the solutions of multiple physics models, which can be described by partial differential equations that provide spatially- and temporally-varying values of solution variables. These models for individual physics often depend on each other. TMAP8 relies on the MOOSE framework to solve these physics models, accounting for the couplings that may occur between them. This document describes the system design of TMAP8.
System Purpose
The Software Design Description provided here is description of each object in the system. The pluggable architecture of the underlying framework of TMAP8 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 TMAP8. More information about the design documentation for MOOSE-based applications like TMAP8 can be found in Documenting MOOSE.
System Scope
TMAP8 is an application for performing system-level, engineering scale (i.e., at the scale of centimeters and meters), and microstructure-scale (i.e., at the scale of microns) mass and thermal transport calculations related to tritium migration. These models often include highly coupled systems of equations related to heat conduction, scalar transport, thermal hydraulics, and mechanics, amongst others. Material models are also included to support these simulations, and they themselves are often dependent on simulation variables: temperature, irradiation flux, etc. While many models within TMAP8 are performed at the system-level or engineering scale, the MultiApp System can be leveraged to allow for multiscale coupling to the micro- and nano-scale species behavior. This allows for higher fidelity modeling.
Dependencies and Limitations
TMAP8 inherits the software dependencies of the MOOSE framework, with no additional dependencies.
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 | Department of 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 TMAP8 include several of the funding sources including DOE and INL. However, since TMAP8 is an open-source project, several universities, companies, and foreign governments have an interest in the development and maintenance of the TMAP8 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, TMAP8 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, TMAP8 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
TMAP8 relies on MOOSE to solve the coupled physics models underlying tritium transport, accounting for the couplings that may occur between them. The design of MOOSE is based on the concept of modular code objects that define all of the aspects of the physics model. TMAP8 follows this design, providing code objects that define specific aspects of the solutions for its physics that derive from the base classes defined by the MOOSE framework and the modules that it depends on.
TMAP8 provides specialized Kernel
classes that compute the contributions from the terms in the partial differential equations for heat conduction, tritium diffusion, surface reactions, and other phenomena. It also provides specialized Material
classes that define the constitutive behavior of materials of interest for diffusion, solubility, trapping, resolution, reactivity, permeation, and other physical properties. In addition, it provides miscellaneous BC
and InterfaceKernel
classes to facilitate various aspects of these simulations, such as plasma exposure, surface reactions, and transfer of species across enclosures, among others. Much of the functionality of TMAP8 is provided by the MOOSE modules that it builds on.
System Structure
TMAP8 relies on the MOOSE framework to provide the core functionality of solving multiphysics problems using the finite element method. It also relies on the MOOSE modules for much of its core functionality. A summary listing of the current modules required for complete TMAP8 operation are shown below:
The structure of TMAP8 is based on defining C++ classes that derive from classes in the MOOSE framework or modules that provide functionality that is specifically tailored to tritium migration problems. By using the interfaces defined in MOOSE base classes for these classes, TMAP8 is able to rely on MOOSE to execute these models at the appropriate times during the simulation and use their results in the desired ways.
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 TMAP8 application is a command-line driven program. All interaction with TMAP8 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 TMAP8, nor the MOOSE framework, nor the 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 TMAP8 application 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
- tmap8: NegativeVariableGradientComponent
- 18.1.1The system shall be able compute a component of the negative gradient of a variable.
Specification(s): test
Design: NegativeVariableGradientComponent
Issue(s): #62
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.2.1The system shall be capable of solving an ion wall loss problem, as described in chapter 1, pages 26-27 of Principles of Plasma Discharge and Material Processing (ISBN 0-471-72001-1), and reproduce the same
- field variable results, and
- kinetic particle results.
Specification(s): lieberman/field_variables, lieberman/kinetic_data
Design: NegativeVariableGradientComponentParticleDataVectorPostprocessorUniformGridParticleInitializer
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- tmap8: ParticleDataVectorPostprocessor
- 18.2.1The system shall be capable of solving an ion wall loss problem, as described in chapter 1, pages 26-27 of Principles of Plasma Discharge and Material Processing (ISBN 0-471-72001-1), and reproduce the same
- field variable results, and
- kinetic particle results.
Specification(s): lieberman/field_variables, lieberman/kinetic_data
Design: NegativeVariableGradientComponentParticleDataVectorPostprocessorUniformGridParticleInitializer
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- tmap8: UniformGridParticleInitializer
- 18.2.1The system shall be capable of solving an ion wall loss problem, as described in chapter 1, pages 26-27 of Principles of Plasma Discharge and Material Processing (ISBN 0-471-72001-1), and reproduce the same
- field variable results, and
- kinetic particle results.
Specification(s): lieberman/field_variables, lieberman/kinetic_data
Design: NegativeVariableGradientComponentParticleDataVectorPostprocessorUniformGridParticleInitializer
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.12The system shall be capable of placing particles on a uniform grid on the mesh
- in one dimension.
Specification(s): uniform_grid/1d
Design: UniformGridParticleInitializer
Issue(s): #61
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.13The system shall return a useful error when the user tries to use the UniformGridParticleInitializer in
- a two-dimensional simulation, and
- a three-dimensional simulation.
Specification(s): unsupported_dimensions/2d, unsupported_dimensions/3d
Design: UniformGridParticleInitializer
Issue(s): #61
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- tmap8: Diffusion
- 18.3.1The system shall be able to solve a simple diffusion problem.
Specification(s): test
Design: Diffusion
Issue(s): #108
Collection(s): FUNCTIONAL
Type(s): Exodiff
- tmap8: ReflectParticleBC
- 18.4.1The system shall be capable of reflecting computational particles off of boundaries and maintain consistent velocity data
- in a 1D domain
- in a 2D domain
- in a 3D domain
Specification(s): reflection/1d, reflection/2d, reflection/3d
Design: ReflectParticleBC
Issue(s): #39
Collection(s): FUNCTIONAL
Type(s): CSVDiff
- tmap8: ParticleInitializerBase
- 18.5.1The system shall support placing particles within a bounding box uniformly in a parallel consistent manner in the element type
- EDGE2
- TRI3
- QUAD4
- HEX8
- TET4
- PYRAMID5
- PRISM6
Specification(s): rays/edge2_rays, rays/tri3_rays, rays/quad4_rays, rays/hex8_rays, rays/tet4_rays, rays/pyramid5_rays, rays/prism6_rays
Design: ParticleInitializerBaseBoundingBoxParticleInitializerElementSampler
Issue(s): #42
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.2The system return a useful error when the user
- requests an element type that initialization has not been verified for
- tries to setup a bounding box where a component of bottom_left is greater than top_right
Specification(s): errors/unsupported_element, errors/top_right_less_than_bottom_left
Design: ParticleInitializerBaseBoundingBoxParticleInitializerElementSampler
Issue(s): #42
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 18.5.3The system return a useful warning to remind the user that the
- 2 extra components of the
bottom_left
andtop_right
inputs are ignored in 1D simulations - 1 extra component of the
bottom_left
andtop_right
inputs are ignored in 2D simulations
Specification(s): warnings/unused_input_warning_1d, warnings/unused_input_warning_2d
Design: ParticleInitializerBaseBoundingBoxParticleInitializerElementSampler
Issue(s): #42
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 2 extra components of the
- 18.5.4The system shall be capable of placing particles inside of EDGE2 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): edge2/fields, edge2/rays, edge2/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.5The system shall be capable of placing particles inside of QUAD4 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): quad4/fields, quad4/rays, quad4/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.6The system shall be capable of placing particles inside of TRI3 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): tri3/fields, tri3/rays, tri3/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.7The system shall be capable of placing particles inside of HEX8 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): hex8/fields, hex8/rays, hex8/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.8The system shall be capable of placing particles inside of PRISM6 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): prism6/fields, prism6/rays, prism6/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.9The system shall be capable of placing particles inside of PYRAMID5 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): pyramid5/fields, pyramid5/rays, pyramid5/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.10The system shall be capable of placing particles inside of TET4 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): tet4/fields, tet4/rays, tet4/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.11The system return a useful error when the user
- requests an element type that initialization has not been verified for
- tries to give particles zero mass
- tries to give particles a negative mass
- does not provide enough distributions to sample for velocity initialization.
- tries to put 0 particles in each element.
- tries to request that a particle type be initialized with zero number density
- tries to request that a particle type be initialized with a negative number density
Specification(s): errors/unsupported_element, errors/zero_mass_requested, errors/negative_mass_requested, errors/too_few_distributions, errors/zero_particles_per_element_requested, errors/zero_number_density_requested, errors/negative_number_density_requested
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- tmap8: BoundingBoxParticleInitializer
- 18.5.1The system shall support placing particles within a bounding box uniformly in a parallel consistent manner in the element type
- EDGE2
- TRI3
- QUAD4
- HEX8
- TET4
- PYRAMID5
- PRISM6
Specification(s): rays/edge2_rays, rays/tri3_rays, rays/quad4_rays, rays/hex8_rays, rays/tet4_rays, rays/pyramid5_rays, rays/prism6_rays
Design: ParticleInitializerBaseBoundingBoxParticleInitializerElementSampler
Issue(s): #42
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.2The system return a useful error when the user
- requests an element type that initialization has not been verified for
- tries to setup a bounding box where a component of bottom_left is greater than top_right
Specification(s): errors/unsupported_element, errors/top_right_less_than_bottom_left
Design: ParticleInitializerBaseBoundingBoxParticleInitializerElementSampler
Issue(s): #42
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 18.5.3The system return a useful warning to remind the user that the
- 2 extra components of the
bottom_left
andtop_right
inputs are ignored in 1D simulations - 1 extra component of the
bottom_left
andtop_right
inputs are ignored in 2D simulations
Specification(s): warnings/unused_input_warning_1d, warnings/unused_input_warning_2d
Design: ParticleInitializerBaseBoundingBoxParticleInitializerElementSampler
Issue(s): #42
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 2 extra components of the
- tmap8: ElementSampler
- 18.5.1The system shall support placing particles within a bounding box uniformly in a parallel consistent manner in the element type
- EDGE2
- TRI3
- QUAD4
- HEX8
- TET4
- PYRAMID5
- PRISM6
Specification(s): rays/edge2_rays, rays/tri3_rays, rays/quad4_rays, rays/hex8_rays, rays/tet4_rays, rays/pyramid5_rays, rays/prism6_rays
Design: ParticleInitializerBaseBoundingBoxParticleInitializerElementSampler
Issue(s): #42
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.2The system return a useful error when the user
- requests an element type that initialization has not been verified for
- tries to setup a bounding box where a component of bottom_left is greater than top_right
Specification(s): errors/unsupported_element, errors/top_right_less_than_bottom_left
Design: ParticleInitializerBaseBoundingBoxParticleInitializerElementSampler
Issue(s): #42
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 18.5.3The system return a useful warning to remind the user that the
- 2 extra components of the
bottom_left
andtop_right
inputs are ignored in 1D simulations - 1 extra component of the
bottom_left
andtop_right
inputs are ignored in 2D simulations
Specification(s): warnings/unused_input_warning_1d, warnings/unused_input_warning_2d
Design: ParticleInitializerBaseBoundingBoxParticleInitializerElementSampler
Issue(s): #42
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 2 extra components of the
- 18.5.4The system shall be capable of placing particles inside of EDGE2 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): edge2/fields, edge2/rays, edge2/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.5The system shall be capable of placing particles inside of QUAD4 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): quad4/fields, quad4/rays, quad4/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.6The system shall be capable of placing particles inside of TRI3 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): tri3/fields, tri3/rays, tri3/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.7The system shall be capable of placing particles inside of HEX8 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): hex8/fields, hex8/rays, hex8/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.8The system shall be capable of placing particles inside of PRISM6 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): prism6/fields, prism6/rays, prism6/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.9The system shall be capable of placing particles inside of PYRAMID5 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): pyramid5/fields, pyramid5/rays, pyramid5/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.10The system shall be capable of placing particles inside of TET4 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): tet4/fields, tet4/rays, tet4/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.11The system return a useful error when the user
- requests an element type that initialization has not been verified for
- tries to give particles zero mass
- tries to give particles a negative mass
- does not provide enough distributions to sample for velocity initialization.
- tries to put 0 particles in each element.
- tries to request that a particle type be initialized with zero number density
- tries to request that a particle type be initialized with a negative number density
Specification(s): errors/unsupported_element, errors/zero_mass_requested, errors/negative_mass_requested, errors/too_few_distributions, errors/zero_particles_per_element_requested, errors/zero_number_density_requested, errors/negative_number_density_requested
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- tmap8: PerElementParticleInitializer
- 18.5.4The system shall be capable of placing particles inside of EDGE2 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): edge2/fields, edge2/rays, edge2/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.5The system shall be capable of placing particles inside of QUAD4 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): quad4/fields, quad4/rays, quad4/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.6The system shall be capable of placing particles inside of TRI3 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): tri3/fields, tri3/rays, tri3/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.7The system shall be capable of placing particles inside of HEX8 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): hex8/fields, hex8/rays, hex8/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.8The system shall be capable of placing particles inside of PRISM6 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): prism6/fields, prism6/rays, prism6/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.9The system shall be capable of placing particles inside of PYRAMID5 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): pyramid5/fields, pyramid5/rays, pyramid5/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.10The system shall be capable of placing particles inside of TET4 elements uniformly
- and solve an electrostatic potential based on the particle positions
- in a parallel consistent manner
- and compute the error between an exact electrostatic potential and the finite element solution
Specification(s): tet4/fields, tet4/rays, tet4/errors
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONAL
Type(s): ExodiffCSVDiff
- 18.5.11The system return a useful error when the user
- requests an element type that initialization has not been verified for
- tries to give particles zero mass
- tries to give particles a negative mass
- does not provide enough distributions to sample for velocity initialization.
- tries to put 0 particles in each element.
- tries to request that a particle type be initialized with zero number density
- tries to request that a particle type be initialized with a negative number density
Specification(s): errors/unsupported_element, errors/zero_mass_requested, errors/negative_mass_requested, errors/too_few_distributions, errors/zero_particles_per_element_requested, errors/zero_number_density_requested, errors/negative_number_density_requested
Design: ParticleInitializerBasePerElementParticleInitializerElementSampler
Issue(s): #36
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- tmap8: ChargeDensityAccumulator
- 18.5.14The system shall be capable of contributing to the residual of a variable based on the computational particles'
- charge density, and
- number density.
Specification(s): residual_accumulation/simple_potential_solve, residual_accumulation/number_density_accumulator
Design: ChargeDensityAccumulator
Issue(s): #25
Collection(s): FUNCTIONAL
Type(s): Exodiff
- tmap8: ParticleStepperBase
- 18.5.15The system shall be capable of accurately capturing the path of charged particles in both an electric and a magnetic field
Specification(s): e_cross_b
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.16The system shall be capable of accurately capturing the path of charged particles in a perpendicular magnetic field
Specification(s): cyclotron_motion
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.17The system shall be capable of applying a linear impluse from a force field perpendicular to a particles initial velocity using the boris stepper when there is 0 magnetic field
Specification(s): projectile_motion
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.18The system shall be capable of applying a linear impluse from a force field parallel to a particles velocity using the boris stepper when there is 0 magnetic field
Specification(s): parallel_acceleration
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.19The system shall report a reasonable error from the particle stepper when
- the user does not provide 3 components of the electric field
- the user does not provide 3 components of the magnetic field
Specification(s): errors/too_few_efield_components, errors/too_few_bfield_components
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 18.5.20The system shall be capable of applying a linear impulse from a force field perpendicular to a particle\'s initial velocity
Specification(s): projectile_motion
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.21The system shall be capable of applying a linear impulse from a force field parallel to a particle's velocity
Specification(s): parallel_acceleration
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.22The system shall report a reasonable error from the particle stepper when
- the user does not provide 3 components of the force field
Specification(s): errors/too_few_field_components
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 18.5.23The system shall be capable of tracking 3 velocity components within the PIC capability while propagating rays in lower dimensions
Specification(s): simple_stepping
Design: ParticleStepperBasePICStudyBase
Issue(s): #4
Collection(s): FUNCTIONAL
Type(s): Exodiff
- tmap8: PICStudyBase
- 18.5.15The system shall be capable of accurately capturing the path of charged particles in both an electric and a magnetic field
Specification(s): e_cross_b
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.16The system shall be capable of accurately capturing the path of charged particles in a perpendicular magnetic field
Specification(s): cyclotron_motion
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.17The system shall be capable of applying a linear impluse from a force field perpendicular to a particles initial velocity using the boris stepper when there is 0 magnetic field
Specification(s): projectile_motion
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.18The system shall be capable of applying a linear impluse from a force field parallel to a particles velocity using the boris stepper when there is 0 magnetic field
Specification(s): parallel_acceleration
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.19The system shall report a reasonable error from the particle stepper when
- the user does not provide 3 components of the electric field
- the user does not provide 3 components of the magnetic field
Specification(s): errors/too_few_efield_components, errors/too_few_bfield_components
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 18.5.20The system shall be capable of applying a linear impulse from a force field perpendicular to a particle\'s initial velocity
Specification(s): projectile_motion
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.21The system shall be capable of applying a linear impulse from a force field parallel to a particle's velocity
Specification(s): parallel_acceleration
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.5.22The system shall report a reasonable error from the particle stepper when
- the user does not provide 3 components of the force field
Specification(s): errors/too_few_field_components
Design: ParticleStepperBasePICStudyBase
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 18.5.23The system shall be capable of tracking 3 velocity components within the PIC capability while propagating rays in lower dimensions
Specification(s): simple_stepping
Design: ParticleStepperBasePICStudyBase
Issue(s): #4
Collection(s): FUNCTIONAL
Type(s): Exodiff
- tmap8: AuxAccumulator
- 18.6.1The system shall support the accumulation of point values as if they were point sources into an auxiliary field
Specification(s): test
Design: AuxAccumulator
Issue(s): #9
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.6.2The system shall report a reasonable error when accumulating point values into an auxiliary field when the system is not properly finalized
Specification(s): error
Design: AuxAccumulator
Issue(s): #9
Collection(s): FUNCTIONALFAILURE_ANALYSIS
Type(s): RunException
- 18.6.3The system shall support mapping data from rays to an aux variable and reset the aux variable to 0 on each time step
Specification(s): charge_mapping
Design: AuxAccumulator
Issue(s): #9
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.6.4The system shall support mapping data from rays to an aux variable and reset the aux variable to 0 on each time step on a 2 dimensional mesh
Specification(s): charge_mapping2D
Design: AuxAccumulator
Issue(s): #9
Collection(s): FUNCTIONAL
Type(s): Exodiff
- 18.6.5The system shall support mapping data from rays to an aux variable and then solve differential equations based on the data mapped from rays
Specification(s): simple_potential_solve_aux
Design: AuxAccumulator
Issue(s): #9
Collection(s): FUNCTIONAL
Type(s): Exodiff
- tmap8: ResidualAccumulator
- 18.6.6The system shall support the accumulation of point values as if they were point sources into a nonlinear field
Specification(s): test
Design: ResidualAccumulator
Issue(s): #16
Collection(s): FUNCTIONAL
Type(s): Exodiff
- tmap8: VariableSampler
- 18.6.7The system shall allow a ray to sample the value of field variable at any point in space as it moves through space
Specification(s): variable_sampling
Design: VariableSampler
Issue(s): #12
Collection(s): FUNCTIONAL
Type(s): Exodiff