diff --git a/.coverage b/.coverage index b93a594a..97aef41c 100644 --- a/.coverage +++ b/.coverage @@ -6,7 +6,5 @@ # - warn_new: Warns below this percentage of coverage for new lines added [default] -# very low for now, but that's because there is no content in this app yet. -# this should be upped as we add content. -require_total = 87 +require_total = 90 warn_new = 90 diff --git a/doc/config.yml b/doc/config.yml index 485c919c..7a57334a 100644 --- a/doc/config.yml +++ b/doc/config.yml @@ -47,6 +47,11 @@ Extensions: MooseDocs.extensions.acronym: acronyms: framework: !include ${MOOSE_DIR}/framework/doc/acronyms.yml + fenix: + FENIX: Fusion ENergy Integrated multiphys-X + PIC: particle-in-cell + CFD: computational fluid dynamics + CAD: computer-aided design MooseDocs.extensions.sqa: active: true categories: diff --git a/doc/content/sqa/fenix_rtm.md b/doc/content/sqa/fenix_rtm.md index 559cb076..edeb27d8 100644 --- a/doc/content/sqa/fenix_rtm.md +++ b/doc/content/sqa/fenix_rtm.md @@ -1 +1,13 @@ -!template load file=sqa/app_rtm.md.template app=FENIX category=fenix \ No newline at end of file +!template load file=sqa/app_rtm.md.template app=FENIX category=fenix + +!template! item key=system-scope +!include fenix_srs.md start=system-scope-begin end=system-scope-finish +!template-end! + +!template! item key=system-purpose +!include fenix_srs.md start=system-purpose-begin end=system-purpose-finish +!template-end! + +!template! item key=log-revisions +Currently, no errors in issue references related to the changelog have been discovered. +!template-end! diff --git a/doc/content/sqa/fenix_sdd.md b/doc/content/sqa/fenix_sdd.md index 4513b520..b9ca7d1d 100644 --- a/doc/content/sqa/fenix_sdd.md +++ b/doc/content/sqa/fenix_sdd.md @@ -1 +1,57 @@ -!template load file=sqa/app_sdd.md.template app=FENIX category=fenix \ No newline at end of file +!template load file=sqa/app_sdd.md.template app=FENIX category=fenix + +!template! item key=introduction +Many of the phenomena related to fusion energy systems 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. [!ac]({{app}}) 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 [!ac]({{app}}). +!template-end! + +!template! item key=system-scope +!include fenix_srs.md start=system-scope-begin end=system-scope-finish +!template-end! + +!template! item key=dependencies-and-limitations +{{app}} inherits the [software dependencies of the MOOSE framework](framework_sdd.md#dependencies-and-limitations), +with no additional dependencies. +!template-end! + +!template! item key=design-stakeholders +Stakeholders for [!ac]({{app}}) include several of the funding sources including [!ac](DOE) and [!ac](INL). +However, since [!ac]({{app}}) is an open-source project, several universities, companies, and foreign +governments have an interest in the development and maintenance of the [!ac]({{app}}) project. +!template-end! + +!template! item key=system-design +[!ac]({{app}}) relies on MOOSE to solve the coupled physics models underlying fusion energy systems, +accounting for the couplings that may occur between various components and sub-systems of this class +of devices. The design of MOOSE is based on the concept of modular code objects that define all of +the aspects of the physics model. [!ac]({{app}}) 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. [!ac]({{app}}) provides specialized +[UserObject](syntax/UserObjects/index.md) classes that compute data for velocity updating, charge +accumulation, and [Ray](source/raytracing/Ray.md) data necessary for simple [!ac](PIC) simulations. +It also provides specialized utilities for accumulating field data on rays. Much of the remaining +functionality is provided by MOOSE modules (electromagnetics, ray tracing), the +[Cardinal](https://cardinal.cels.anl.gov/) application ([!ac](CFD) and Monte Carlo radiation transport), +and the [Tritium Migration Analysis Program Version 8 (TMAP8)](https://mooseframework.inl.gov/TMAP8) +application (tritium migration) that [!ac]({{app}}) builds on. +!template-end! + +!template! item key=system-structure +[!ac]({{app}}) 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 [!ac]({{app}}) operation are shown below: + +- [Electromagnetics](electromagnetics/index.md) +- [Ray Tracing](ray_tracing/index.md) + +The structure of [!ac]({{app}}) is based on defining C++ classes that derive from classes in the MOOSE +framework or modules that provide functionality that is specifically tailored to fusion device +modeling and simulation. By using the interfaces defined in MOOSE base classes for these classes, +[!ac]({{app}}) 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. +!template-end! + +!syntax complete subsystems=False actions=False objects=False diff --git a/doc/content/sqa/fenix_srs.md b/doc/content/sqa/fenix_srs.md index 0e76f373..40610e29 100644 --- a/doc/content/sqa/fenix_srs.md +++ b/doc/content/sqa/fenix_srs.md @@ -1 +1,84 @@ -!template load file=sqa/app_srs.md.template app=FENIX category=fenix \ No newline at end of file +!template load file=sqa/app_srs.md.template app=FENIX category=fenix + +!template! item key=system-scope +!! system-scope-begin +FENIX 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) multiphysics +calculations related to fusion energy systems. These models often include highly coupled systems of +equations related to plasma physics, electromagnetics, heat conduction, scalar transport, thermal +hydraulics, [!ac](CFD), and thermomechanics, amongst others. Interfaces to other MOOSE-based codes, +including tritium transport (TMAP8) and neutronics (Cardinal) are also included to support FENIX +simulations. FENIX will enable high-fidelity modeling of irradiation levels and plasma exposure +conditions of plasma facing components and their impact on heat and tritium distributions, as well +as the resulting mechanical constraints experienced by the plasma facing components. The [syntax/MultiApps/index.md] +is leveraged to allow for the multiscale, multiphysics coupling. Further, other MOOSE capabilities +(such as the stochastic tools module) will eventually enable engineering studies, allowing for extended +uncertainty quantification and risk analysis studies for particular system designs. Interfaces for +[!ac](CAD) meshing workflows to model complex geometries are also included. FENIX therefore supports +design, safety, engineering, and research projects. +!! system-scope-finish +!template-end! + +!template! item key=system-purpose +!! system-purpose-begin +The purpose of FENIX is to perform fully integrated, high-fidelity, multiphysics simulations of fusion +energy systems and devices at different length scales with a variety of materials, system configurations, +and component designs in order to better understand component degradation and operational impacts on +system performance. FENIX's main goal is to bring together the combined multiphysics capabilities of +the [!ac](MOOSE) ecosystem to provide an open platform for future research, safety assessment, +engineering, and design studies of fusion energy systems. +!! system-purpose-finish +!template-end! + +!template! item key=assumptions-and-dependencies +[!ac]({{app}}) has no constraints on hardware and software beyond those of the MOOSE framework and +modules listed in their respective [!ac](SRS) documents, which are accessible through the links at +the beginning of this document. + +[!ac]({{app}}) provides access to a number of code objects that perform computations, such as particle +transport, material behavior, and boundary conditions. These objects each make their own physics-based +assumptions, such as the units of the inputs and outputs. Those assumptions are described in the +documentation for those individual objects. +!template-end! + +!template! item key=user-characteristics +[!ac]({{app}}) has three main classes of users: + +- +[!ac]({{app}}) Developers+: These are the core developers of [!ac]({{app}}). They are responsible + for designing, implementing, and maintaining the software, while following and enforcing its software + development standards. +- +Developers+: These are scientists or engineers that modify or add capabilities to [!ac]({{app}}) + for their own purposes, which may include research or extending its capabilities. They will typically + have a background in fusion energy sciences, plasma physics, tritium migration, radiation transport, + heat conduction, and/or material science as well as in modeling and simulation techniques, but may have + more limited background in code development using the C++ language. In many cases, these developers + will be encouraged to contribute code back to [!ac]({{app}}). +- +Analysts+: These are users that run [!ac]({{app}}) to run simulations, but do not develop code. + The primary interface of these users with [!ac]({{app}}) is the input files that define their + simulations. These users may interact with developers of the system requesting new features and + reporting bugs found. +!template-end! + +!template! item key=information-management +[!ac]({{app}}) as well as the core MOOSE framework in its entirety will be made publicly available +on an appropriate repository hosting site. Day-to-day backups and security services will be provided +by the hosting service. More information about backups of the public repository on [!ac](INL)-hosted +services can be found on the following page: [sqa/github_backup.md] +!template-end! + +!template! item key=policies-and-regulations +!include framework_srs.md start=policies-and-regulations-begin end=policies-and-regulations-finish +!template-end! + +!template! item key=packaging +No special requirements are needed for packaging or shipping any media containing the [!ac](MOOSE) +and [!ac]({{app}}) source code. However, some [!ac](MOOSE)-based applications that use the [!ac]({{app}}) +code may be export-controlled, in which case all export control restrictions must be adhered to when +packaging and shipping media. +!template-end! + +!template! item key=reliability +The regression test suite will cover at least 90% of all lines of code at all times. Known +regressions will be recorded and tracked (see [#maintainability]) to an independent and +satisfactory resolution. +!template-end! diff --git a/doc/content/sqa/fenix_vvr.md b/doc/content/sqa/fenix_vvr.md index b856d229..fa7b3fe9 100644 --- a/doc/content/sqa/fenix_vvr.md +++ b/doc/content/sqa/fenix_vvr.md @@ -1 +1,5 @@ -!template load file=sqa/app_vvr.md.template app=FENIX category=fenix \ No newline at end of file +!template load file=sqa/app_vvr.md.template app=FENIX category=fenix + +!template! item key=introduction +The [!ac](VVR) for {{app}} provides evidence that {{app}} fulfills its intended purpose. +!template-end! diff --git a/doc/content/sqa/theory_manual.md b/doc/content/sqa/theory_manual.md new file mode 100644 index 00000000..a9e8989d --- /dev/null +++ b/doc/content/sqa/theory_manual.md @@ -0,0 +1,3 @@ +# FENIX Theory Manual + +Documentation for all the theory supporting FENIX is contained in the [syntax/index.md] page. diff --git a/doc/content/sqa/user_manual.md b/doc/content/sqa/user_manual.md new file mode 100644 index 00000000..e61dd268 --- /dev/null +++ b/doc/content/sqa/user_manual.md @@ -0,0 +1,3 @@ +# FENIX User Manual + +Documentation for all FENIX input file objects, and how they can be used in the creation of a simulation, is contained in the [syntax/index.md] page. diff --git a/doc/sqa_reports.yml b/doc/sqa_reports.yml index 223f1616..47b59258 100644 --- a/doc/sqa_reports.yml +++ b/doc/sqa_reports.yml @@ -24,7 +24,8 @@ Documents: software_library_list: sqa/fenix_sll.md communication_and_contact_information: sqa/fenix_cci.md software_coding_standards: sqa/fenix_scs.md - log_default: WARNING + user_manual: sqa/user_manual.md + theory_manual: sqa/theory_manual.md show_warning: false working_dirs: - ${ROOT_DIR}/doc/content