Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fill in MALAMUTE SQA documents #74

Merged
merged 9 commits into from
May 18, 2023
3 changes: 3 additions & 0 deletions doc/acronyms.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
AM: advanced manufacturing
EFAS: electric field-assisted sintering
SPS: spark plasma sintering
10 changes: 7 additions & 3 deletions doc/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Content:
- ${MOOSE_DIR}/modules/fluid_properties/doc/content # pulled in by navier_stokes
- ${MOOSE_DIR}/modules/heat_conduction/doc/content
- ${MOOSE_DIR}/modules/level_set/doc/content
- ${MOOSE_DIR}/modules/misc/doc/content
- ${MOOSE_DIR}/modules/navier_stokes/doc/content
- ${MOOSE_DIR}/modules/phase_field/doc/content
- ${MOOSE_DIR}/modules/ray_tracing/doc/content # pulled in by heat_conduction
Expand All @@ -21,7 +22,7 @@ Renderer:
type: MooseDocs.base.MaterializeRenderer
Extensions:
MooseDocs.extensions.navigation:
name: Malamute
name: MALAMUTE
repo: https://github.com/idaholab/malamute
menu:
Getting Started:
Expand All @@ -30,7 +31,7 @@ Extensions:
Documentation and Resources:
Complete Code Manual: syntax/index.md
Thermal Contact Verification: verification/thermal_contact_verification.md
Code Standards: development/code_standards.md
Code Standards: sqa/malamute_scs.md
Developer Information Links: development/moose_developer_info.md
Software Quality Assurance (SQA) Information: /sqa/index.md
Code Coverage: https://mooseframework.inl.gov/malamute/docs/coverage/
Expand All @@ -43,6 +44,7 @@ Extensions:
MooseDocs.extensions.acronym:
acronyms:
framework: !include ${MOOSE_DIR}/framework/doc/acronyms.yml
malamute: !include ${ROOT_DIR}/doc/acronyms.yml
MooseDocs.extensions.sqa:
active: true
categories:
Expand All @@ -52,12 +54,13 @@ Extensions:
electromagnetics: !include ${MOOSE_DIR}/modules/electromagnetics/doc/sqa_electromagnetics.yml
fluid_properties: !include ${MOOSE_DIR}/modules/fluid_properties/doc/sqa_fluid_properties.yml
heat_conduction: !include ${MOOSE_DIR}/modules/heat_conduction/doc/sqa_heat_conduction.yml
level_set: !include ${MOOSE_DIR}/modules/level_set/doc/sqa_level_set.yml
misc: !include ${MOOSE_DIR}/modules/misc/doc/sqa_misc.yml
navier_stokes: !include ${MOOSE_DIR}/modules/navier_stokes/doc/sqa_navier_stokes.yml
phase_field: !include ${MOOSE_DIR}/modules/phase_field/doc/sqa_phase_field.yml
ray_tracing: !include ${MOOSE_DIR}/modules/ray_tracing/doc/sqa_ray_tracing.yml
rdg: !include ${MOOSE_DIR}/modules/rdg/doc/sqa_rdg.yml
tensor_mechanics: !include ${MOOSE_DIR}/modules/tensor_mechanics/doc/sqa_tensor_mechanics.yml
level_set: !include ${MOOSE_DIR}/modules/level_set/doc/sqa_level_set.yml
reports: !include ${ROOT_DIR}/doc/sqa_reports.yml
repos:
default: https://github.com/idaholab/malamute
Expand All @@ -69,3 +72,4 @@ Extensions:
- batten1997average
- hales15homogenization
- kim_phase-field_1999
- popp2014dual
21 changes: 0 additions & 21 deletions doc/content/development/code_standards.md

This file was deleted.

2 changes: 1 addition & 1 deletion doc/content/sqa/index.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
!template load file=sqa/app_index.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_index.md.template app=MALAMUTE category=malamute
14 changes: 13 additions & 1 deletion doc/content/sqa/malamute_cci.md
Original file line number Diff line number Diff line change
@@ -1 +1,13 @@
!template load file=sqa/app_cci.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_cci.md.template app=MALAMUTE category=malamute

!template item key=general-communication
Please use the [{{app}} Discussion forum](https://github.com/idaholab/{{category}}/discussions) for all
questions and inquiries.

!template item key=problem-reporting
If you are having a problem with a specific release of {{app}} please contact the team
using the [{{app}} Discussion forum](https://github.com/idaholab/{{category}}/discussions) and be sure
to include the release information with the inquiry.

!template item key=contributing
With the exception of the location of the [code repository for {{app}}](https://github.com/idaholab/{{category}}), the same processes outlined in the instructions for contributing to the MOOSE framework [framework/contributing.md] apply for contributing to {{app}}.
2 changes: 1 addition & 1 deletion doc/content/sqa/malamute_far.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
!template load file=sqa/app_far.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_far.md.template app=MALAMUTE category=malamute
10 changes: 9 additions & 1 deletion doc/content/sqa/malamute_rtm.md
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
!template load file=sqa/app_rtm.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_rtm.md.template app=MALAMUTE category=malamute

!template! item key=system-scope
!include malamute_srs.md start=system-scope-begin end=system-scope-finish
!template-end!

!template! item key=system-purpose
!include malamute_srs.md start=system-purpose-begin end=system-purpose-finish
!template-end!
27 changes: 26 additions & 1 deletion doc/content/sqa/malamute_scs.md
Original file line number Diff line number Diff line change
@@ -1 +1,26 @@
!template load file=sqa/app_scs.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_scs.md.template app=MALAMUTE category=malamute

## Clang Format

!style halign=left
Like MOOSE, MALAMUTE uses `clang-format` with a customized
[config file](https://github.com/idaholab/malamute/blob/devel/.clang-format)
for code formatting. If you have clang installed, you can run

```
git clang-format [<branch>]
```

to automatically format code changed between your currently checked-out branch
and `<branch>` (if left out, it defaults to the `HEAD` commit). If you don't do
this before submitting your code, don't worry! The continuous integration
testing system, [CIVET](https://civet.inl.gov), that is triggered when
you submit a pull request will check your code and provide information on the
changes needed to conform to the code style (if any).

## MALAMUTE Code Standards

!style halign=left
MALAMUTE follows the MOOSE code standards for all development. For information on file guidelines, naming conventions, example code,
doxygen documentation, and other tips, please see
[the MOOSE standard here](sqa/framework_scs.md).
64 changes: 63 additions & 1 deletion doc/content/sqa/malamute_sdd.md
Original file line number Diff line number Diff line change
@@ -1 +1,63 @@
!template load file=sqa/app_sdd.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_sdd.md.template app=MALAMUTE category=malamute

!template! item key=introduction
Many of the phenomena related to advanced manufacturing processes 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. {{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 {{app}}.
!template-end!

!template! item key=system-scope
!include malamute_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
!include framework_sdd.md start=design-stakeholders-begin end=design-stakeholders-finish
!template-end!

!template! item key=system-design
{{app}} relies on MOOSE to solve the coupled physics models underlying advanced manufacturing processes,
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. {{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.

{{app}} provides specialized `Kernel` classes that compute the contributions from the terms in the
partial differential equations for heat conduction and electric current transport in an electric field
assisted sintering apparatus; the heat conduction, fluid flow, and surface deformation of a melt pool
and laser welding; and for simulating directed energy deposition (DED) processes. It also provides
specialized `Material` classes that define the constitutive behavior of materials of interest for
sintering, DED, melt pools, and the level set method. In addition, it provides miscellaneous `BC` and
`InterfaceKernel` classes to facilitate various aspects of these simulations. Much of the functionality
of {{app}} is provided by the MOOSE modules that it builds on.
!template-end!

!template! item key=system-structure
{{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 MALAMUTE operation are shown below:

- [Contact](contact/index.md)
- [Electromagnetics](electromagnetics/index.md)
- [Heat Conduction](heat_conduction/index.md)
- [Level Set](level_set/index.md)
- [Miscellaneous Module](misc/index.md)
- [Navier Stokes](navier_stokes/index.md)
- [Phase Field](phase_field/index.md)
- [Tensor Mechanics](tensor_mechanics/index.md)

The structure of {{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 the structural degradation
problem. By using the interfaces defined in MOOSE base classes for these classes, {{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
!template-end!
2 changes: 1 addition & 1 deletion doc/content/sqa/malamute_sll.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
!template load file=sqa/app_sll.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_sll.md.template app=MALAMUTE category=malamute
66 changes: 65 additions & 1 deletion doc/content/sqa/malamute_srs.md
Original file line number Diff line number Diff line change
@@ -1 +1,65 @@
!template load file=sqa/app_srs.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_srs.md.template app=MALAMUTE category=malamute

!template! item key=system-scope
!! system-scope-begin

MALAMUTE performs simulations related to [!ac](AM) processes. These models often include highly coupled
systems of equations related to heat conduction, electromagnetics, Navier Stokes, mechanics, and surface
morphology, amongst others. Material models are also included to support these simulations (such as
graphite and stainless steel), and they themselves are often dependent on simulation variables: temperature,
electromagnetic field strength, stress/strain, etc. While many models within MALAMUTE are performed
at the "engineering scale" (i.e., at the scale of centimeters and meters), the [syntax/MultiApps/index.md]
can be leveraged to allow for multiscale coupling to the micro- and nano-scale of a given experiment.
This allows for not only experimental process design and evaluation at the operator level but also
evaluation of a process on the formation of a part and the experiment's end result.

In addition to modeling full experiments (like in [!ac](EFAS)), MALAMUTE also contains building blocks
for use in larger manufacturing models or as individual studies, such as directed energy deposition
and laser welding (with surface deformation and melting). Mechanics models for pressing procedures are
also under development.

!! system-scope-finish
!template-end!

!template! item key=system-purpose
!! system-purpose-begin
The purpose of MALAMUTE is to serve as a simulation platform and library for a variety of advanced
manufacturing (AM) processes and to connect the microscale characteristics and evolution of materials
with their engineering-scale, post-manufacture performance. MALAMUTE currently simulates several main
[!ac](AM) processes, including: [!ac](EFAS) (also known as [!ac](SPS)), directed energy deposition,
and surface melting. MALAMUTE's main goal is to bring together the combined multiphysics capabilities
of the [!ac](MOOSE) ecosystem to provide an open platform for future research in novel materials development
and [!ac](AM) technologies.
!! system-purpose-finish
!template-end!

!template! item key=assumptions-and-dependencies
{{app}} has no constraints on hardware and software beyond those of the MOOSE framework and modules listed in their respective SRS documents, which are accessible through the links at the beginning of this document.

{{app}} provides access to a number of code objects that perform computations such as 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
{{app}} has three main classes of users:

- +{{app}} Developers+: These are the core developers of {{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 {{app}} for their own purposes, which may include research or extending its capabilities. They will typically have a background in structural or mechanical engineering, and 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 {{app}}.
- +Analysts+: These are users that run {{app}} to run simulations, but do not develop code. The primary interface of these users with {{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
{{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 {{app}} source code. However, some [!ac](MOOSE)-based applications that use the {{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 65% of all lines of code at all times. Known
regressions will be recorded and tracked (see [#maintainability]) to an independent and
satisfactory resolution.
2 changes: 1 addition & 1 deletion doc/content/sqa/malamute_stp.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
!template load file=sqa/app_stp.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_stp.md.template app=MALAMUTE category=malamute
2 changes: 1 addition & 1 deletion doc/content/sqa/malamute_vvr.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
!template load file=sqa/app_vvr.md.template app=MalamuteApp category=malamute
!template load file=sqa/app_vvr.md.template app=MALAMUTE category=malamute
27 changes: 27 additions & 0 deletions doc/sqa_reports.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,46 @@ Applications:
show_warning: false

Documents:
software_quality_plan: sqa/inl_records.md#software_quality_plan
enterprise_architecture_entry: sqa/inl_records.md#enterprise_architecture_entry
safety_software_determination: sqa/inl_records.md#safety_software_determination
quality_level_determination: sqa/inl_records.md#quality_level_determination
configuration_management_plan: sqa/inl_records.md#configuration_management_plan
asset_management_plan: sqa/inl_records.md#asset_management_plan
verification_validation_plan: sqa/inl_records.md#verification_and_validation_plan
software_requirements_specification: sqa/malamute_srs.md
software_design_description: sqa/malamute_sdd.md
software_test_plan: sqa/malamute_stp.md
requirements_traceablity_matrix: sqa/malamute_rtm.md
verification_validation_report: sqa/malamute_vvr.md
failure_analysis_report: sqa/malamute_far.md
software_library_list: sqa/malamute_sll.md
communication_and_contact_information: sqa/malamute_cci.md
software_coding_standards: sqa/malamute_scs.md
log_default: WARNING
show_warning: false
working_dirs:
- ${ROOT_DIR}/doc/content
- ${MOOSE_DIR}/framework/doc/content

Requirements:
malamute:
working_dirs:
- ${ROOT_DIR}/doc/content
- ${MOOSE_DIR}/framework/doc/content
- ${MOOSE_DIR}/modules/contact/doc/content
- ${MOOSE_DIR}/modules/electromagnetics/doc/content
- ${MOOSE_DIR}/modules/fluid_properties/doc/content # pulled in by navier_stokes
- ${MOOSE_DIR}/modules/heat_conduction/doc/content
- ${MOOSE_DIR}/modules/level_set/doc/content
- ${MOOSE_DIR}/modules/misc/doc/content
- ${MOOSE_DIR}/modules/navier_stokes/doc/content
- ${MOOSE_DIR}/modules/phase_field/doc/content
- ${MOOSE_DIR}/modules/ray_tracing/doc/content # pulled in by heat_conduction
- ${MOOSE_DIR}/modules/rdg/doc/content # pulled in by navier_stokes
- ${MOOSE_DIR}/modules/tensor_mechanics/doc/content
directories:
- ${ROOT_DIR}/test
- ${ROOT_DIR}/examples
log_default: WARNING
show_warning: false
4 changes: 2 additions & 2 deletions test/tests/bcs/radiation_heat_loss/tests
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@
input = 'simple_radiation.i'
cli_args = 'BCs/heatloss/T_infinity="293 293"'
expect_err = 'The number of coupled components does not match the number of `T_infinity` components.'
requirement = 'The system shall not all the computation of the simple radiative heat transfer when an excessive number of absolute blackboady temperatures are supplied by the user.'
requirement = 'The system shall error and not compute the simple radiative heat transfer when an excessive number of absolute blackbody temperatures are supplied by the user.'
prereq = simple_radiation
[../]
[./multiple_phases_missing_emissivities]
type = RunException
input = 'multiple_phases_simple_radiation.i'
cli_args = 'BCs/heatloss/emissivity=0.9'
expect_err = 'The number of coupled components does not match the number of `T_infinity` components.'
requirement = 'The system shall not all the computation of the simple radiative heat transfer when an excessive number of absolute blackboady temperatures are supplied by the user.'
requirement = 'The system shall error and not compute the simple radiative heat transfer when an insufficient number of emissivities are supplied by the user.'
prereq = multiple_phases_simple_radiation
[../]
[]
Loading