MALAMUTE System Design Description

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

commentnote

This document serves as an addendum to Framework System Design Description and captures information for SDD specific to the MALAMUTE application.

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

System Purpose

The Software Design Description provided here is description of each object in the system. The pluggable architecture of the underlying framework of MALAMUTE 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 MALAMUTE. More information about the design documentation for MOOSE-based applications like MALAMUTE can be found in Documenting MOOSE.

System Scope

MALAMUTE performs simulations related to advanced manufacturing (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 MultiApp System 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 electric field-assisted sintering (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.

Dependencies and Limitations

MALAMUTE 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

AcronymDescription
AMadvanced manufacturing
APIApplication Programming Interface
DOEDepartment of Energy
EFASelectric field-assisted sintering
FEfinite element
HITHierarchical Input Text
HPCHigh Performance Computing
I/OInput/Output
INLIdaho National Laboratory
MOOSEMultiphysics Object Oriented Simulation Environment
MPIMessage Passing Interface
SDDSoftware Design Description

Design Stakeholders and Concerns

Design Stakeholders

Stakeholders for MALAMUTE include several of the funding sources including Department of Energy (DOE) and INL. However, Since MALAMUTE is an open-source project, several universities, companies, and foreign governments have an interest in the development and maintenance of the MALAMUTE 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, MALAMUTE 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, MALAMUTE 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

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

MALAMUTE 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 MALAMUTE is provided by the MOOSE modules that it builds on.

System Structure

MALAMUTE 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:

The structure of MALAMUTE 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, MALAMUTE 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 MALAMUTE application is a command-line driven program. All interaction with MALAMUTE 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 MALAMUTE, 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 MALAMUTE 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

  • malamute: ThermalContactCondition
  • 2.7.1The system shall support the calculation of heat transfer across an interface due to thermal conductivity and electrostatic joule heating for the case of low thermal contact conductance and low electrical contact conductance.

    Specification(s): low_low

    Design: ThermalContactCondition

    Issue(s): #10

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 2.7.2The system shall support the calculation of heat transfer across an interface due to thermal conductivity and electrostatic joule heating for the case of low thermal contact conductance and high electrical contact conductance.

    Specification(s): low_high

    Design: ThermalContactCondition

    Issue(s): #10

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 2.7.3The system shall support the calculation of heat transfer across an interface due to thermal conductivity and electrostatic joule heating for the case of high thermal contact conductance and low electrical contact conductance.

    Specification(s): high_low

    Design: ThermalContactCondition

    Issue(s): #10

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 2.7.4The system shall support the calculation of heat transfer across an interface due to thermal conductivity and electrostatic joule heating for the case of high thermal contact conductance and high electrical contact conductance.

    Specification(s): high_high

    Design: ThermalContactCondition

    Issue(s): #10

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 2.7.5The system shall support the calculation of heat transfer across an interface due to thermal conductivity and electrostatic joule heating with the correct jacobian.

    Specification(s): jacobian

    Design: ThermalContactCondition

    Issue(s): #13#14

    Collection(s): FUNCTIONAL

    Type(s): PetscJacobianTester

  • 2.7.6The system shall support error-generation when the user supplies both conductances and mean hardness values (to calculate a conductance) to calculate thermal conductivity across an interface.

    Specification(s): conductance_error

    Design: ThermalContactCondition

    Issue(s): #13

    Collection(s): FAILURE_ANALYSISFUNCTIONAL

    Type(s): RunException

  • 2.7.7The system shall support the calculation of thermal and electrical conductances when determining the heat transfer across an interface due to thermal conductivity and electrostatic joule heating.

    Specification(s): conductance_calculated

    Design: ThermalContactCondition

    Issue(s): #13

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

  • 2.7.8The system shall calculate the correct thermal contact temperature solution when compared to an analytic result, given a one-dimensional, two-material-block scenario.

    Specification(s): analytic_solution_test

    Design: ThermalContactCondition

    Issue(s): #13

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

    Verification: Thermal Contact Condition Verification Case

  • malamute: GraphiteThermal
  • 2.8.15The system shall compute the thermal conductivity and heat capacity of AT 101 graphite as a function of temperature and the computed properties shall align with original figure data points.

    Specification(s): thermal_material_properties

    Design: GraphiteThermal

    Issue(s): #12

    Collection(s): FUNCTIONAL

    Type(s): CSVDiff

  • 2.8.16The system will warn the user when the calculation of graphite thermal material properties with a temperature below the curve calibration range.

    Specification(s): thermal_properties_lower_range_check

    Design: GraphiteThermal

    Issue(s): #12

    Collection(s): FAILURE_ANALYSISFUNCTIONAL

    Type(s): RunException

  • 2.8.17The system shall not allow the calculation of graphite thermal material properties with a temperature above the curve calibration range.

    Specification(s): thermal_properties_upper_range_check

    Design: GraphiteThermal

    Issue(s): #12

    Collection(s): FAILURE_ANALYSISFUNCTIONAL

    Type(s): RunException

  • 2.8.18The system shall compute the thermal conductivity and heat capacity of AT 101 graphite, using the automatic differentiation capabilities, as a function of temperature and the computed properties shall align with original figure data points.

    Specification(s): ad_thermal_material_properties

    Design: GraphiteThermal

    Issue(s): #12#14

    Collection(s): FUNCTIONAL

    Type(s): CSVDiff

  • 2.8.19The system will warn the user when the calculation of graphite thermal material properties with a temperature below the curve calibration range while using automatic differentiation.

    Specification(s): ad_thermal_properties_lower_range_check

    Design: GraphiteThermal

    Issue(s): #12#14

    Collection(s): FAILURE_ANALYSISFUNCTIONAL

    Type(s): RunException

  • 2.8.20The system shall not allow the calculation of graphite thermal material properties with a temperature above the curve calibration range while using automatic differentiation.

    Specification(s): ad_thermal_properties_upper_range_check

    Design: GraphiteThermal

    Issue(s): #12#14

    Collection(s): FAILURE_ANALYSISFUNCTIONAL

    Type(s): RunException

  • 2.8.21The system shall support the calculation of the temperature dependent heat capacity and thermal conductivity for AT 101 graphite with the correct jacobian.

    Specification(s): jacobian_ad_thermal_properties

    Design: GraphiteThermal

    Issue(s): #12#14

    Collection(s): FUNCTIONAL

    Type(s): PetscJacobianTester

  • malamute: StainlessSteelThermal
  • 2.8.37The system shall compute the thermal conductivity and heat capacity of AISI 304 stainless steel as a function of temperature and the computed properties shall align with original figure data points.

    Specification(s): thermal_material_properties

    Design: StainlessSteelThermal

    Issue(s): #12

    Collection(s): FUNCTIONAL

    Type(s): CSVDiff

  • 2.8.38The system shall warn the user if the calculation of stainless steel thermal material properties with a temperature below the curve calibration range.

    Specification(s): thermal_properties_lower_range_check

    Design: StainlessSteelThermal

    Issue(s): #12

    Collection(s): FAILURE_ANALYSISFUNCTIONAL

    Type(s): RunException

  • 2.8.39The system shall not allow the calculation of stainless steel thermal material properties with a temperature above the curve calibration range.

    Specification(s): thermal_properties_upper_range_check

    Design: StainlessSteelThermal

    Issue(s): #12

    Collection(s): FAILURE_ANALYSISFUNCTIONAL

    Type(s): RunException

  • 2.8.40The system shall compute the thermal conductivity and heat capacity of AISI 304 stainless steel as a function of temperature and the computed properties shall align with original figure data points while using automatic differentiation.

    Specification(s): ad_thermal_material_properties

    Design: StainlessSteelThermal

    Issue(s): #12#14

    Collection(s): FUNCTIONAL

    Type(s): CSVDiff

  • 2.8.41The system shall warn the user if the calculation of stainless steel thermal material properties with a temperature below the curve calibration range while using automatic differentiation.

    Specification(s): ad_thermal_properties_lower_range_check

    Design: StainlessSteelThermal

    Issue(s): #12#14

    Collection(s): FAILURE_ANALYSISFUNCTIONAL

    Type(s): RunException

  • 2.8.42The system shall not allow the calculation of stainless steel thermal material properties with a temperature above the curve calibration range while using automatic differentiation.

    Specification(s): ad_thermal_properties_upper_range_check

    Design: StainlessSteelThermal

    Issue(s): #12#14

    Collection(s): FAILURE_ANALYSISFUNCTIONAL

    Type(s): RunException

  • 2.8.43The system shall support the calculation of the temperature dependent heat capacity and thermal conductivity for AISI 304 stainless steel with the correct jacobian.

    Specification(s): jacobian_ad_thermal_properties

    Design: StainlessSteelThermal

    Issue(s): #12#14

    Collection(s): FUNCTIONAL

    Type(s): PetscJacobianTester

  • malamute: Melt pool heat source
  • 2.11.1The system shall compute laser heat source and heat loss due to convection and radiation at the level set interface.

    Specification(s): heat

    Design: Melt pool heat source

    Issue(s): #2

    Collection(s): FUNCTIONAL

    Type(s): Exodiff

References

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

ActionComponents

Adaptivity

Adaptivity/Indicators

Adaptivity/Markers

Application

AuxKernels

AuxKernels/MatVecRealGradAuxKernel

AuxKernels/MaterialVectorAuxKernel

AuxKernels/MaterialVectorGradAuxKernel

AuxScalarKernels

AuxVariables

AuxVariables/MultiAuxVariables

BCs

BCs/CavityPressure

BCs/CoupledPressure

BCs/InclinedNoDisplacementBC

BCs/Periodic

BCs/Pressure

Bounds

ChainControls

Constraints

Contact

Controls

Convergence

Correctors

Covariance

DGKernels

Dampers

Debug

Debug/MaterialDerivativeTest

DeprecatedBlock

DiracKernels

Distributions

DomainIntegral

Executioner

Executioner/Adaptivity

Executioner/Predictor

Executioner/Quadrature

Executioner/TimeIntegrator

Executioner/TimeIntegrators

Executioner/TimeStepper

Executioner/TimeSteppers

Executors

ExplicitDynamicsContact

FVBCs

FVICs

FVInterfaceKernels

FVKernels

FluidProperties

FluidPropertiesInterrogator

Functions

FunctorMaterials

GlobalParams

GrayDiffuseRadiation

HDGKernels

ICs

ICs/PolycrystalICs

ICs/PolycrystalICs/BicrystalBoundingBoxIC

ICs/PolycrystalICs/BicrystalCircleGrainIC

ICs/PolycrystalICs/PolycrystalColoringIC

ICs/PolycrystalICs/PolycrystalRandomIC

ICs/PolycrystalICs/PolycrystalVoronoiVoidIC

ICs/PolycrystalICs/Tricrystal2CircleGrainsIC

InterfaceKernels

Kernels

Kernels/CHPFCRFFSplitKernel

Kernels/DynamicSolidMechanics

Kernels/DynamicTensorMechanics

Kernels/HHPFCRFFSplitKernel

Kernels/PFCRFFKernel

Kernels/PolycrystalElasticDrivingForce

Kernels/PolycrystalKernel

Kernels/PolycrystalStoredEnergy

Kernels/PoroMechanics

Kernels/RigidBodyMultiKernel

Kernels/SolidMechanics

Kernels/TensorMechanics

Likelihood

LinearFVBCs

LinearFVKernels

Materials

Mesh

Mesh/BatchMeshGeneratorAction

Mesh/Partitioner

MeshDivisions

MeshModifiers

Modules

Modules/CompressibleNavierStokes

Modules/FluidProperties

Modules/HeatTransfer

Modules/HeatTransfer/ThermalContact

Modules/HeatTransfer/ThermalContact/BC

Modules/IncompressibleNavierStokes

Modules/NavierStokesFV

Modules/PhaseField

Modules/PhaseField/Conserved

Modules/PhaseField/DisplacementGradients

Modules/PhaseField/EulerAngles2RGB

Modules/PhaseField/GrainGrowth

Modules/PhaseField/GrainGrowthLinearizedInterface

Modules/PhaseField/GrandPotential

Modules/PhaseField/Nonconserved

Modules/TensorMechanics

Modules/TensorMechanics/CohesiveZoneMaster

Modules/TensorMechanics/DynamicMaster

Modules/TensorMechanics/GeneralizedPlaneStrain

Modules/TensorMechanics/GlobalStrain

Modules/TensorMechanics/LineElementMaster

Modules/TensorMechanics/Master

Modules/TensorMechanics/MaterialVectorBodyForce

MortarGapHeatTransfer

MultiApps

NEML2

NodalKernels

NodalNormals

Outputs

ParameterStudy

Physics

Physics/Diffusion

Physics/Diffusion/ContinuousGalerkin

Physics/Diffusion/FiniteVolume

Physics/HeatConduction

Physics/HeatConduction/FiniteElement

Physics/HeatConduction/FiniteVolume

Physics/NavierStokes

Physics/NavierStokes/Flow

Physics/NavierStokes/FlowSegregated

Physics/NavierStokes/FluidHeatTransfer

Physics/NavierStokes/FluidHeatTransferSegregated

Physics/NavierStokes/ScalarTransport

Physics/NavierStokes/ScalarTransportSegregated

Physics/NavierStokes/SolidHeatTransfer

Physics/NavierStokes/Turbulence

Physics/NavierStokes/TwoPhaseMixture

Physics/NavierStokes/TwoPhaseMixtureSegregated

Physics/SolidMechanics

Physics/SolidMechanics/CohesiveZone

Physics/SolidMechanics/Dynamic

Physics/SolidMechanics/GeneralizedPlaneStrain

Physics/SolidMechanics/GlobalStrain

Physics/SolidMechanics/LineElement

Physics/SolidMechanics/LineElement/QuasiStatic

Physics/SolidMechanics/MaterialVectorBodyForce

Physics/SolidMechanics/QuasiStatic

Positions

Postprocessors

Preconditioning

Problem

ProjectedStatefulMaterialStorage

RayBCs

RayKernels

Reporters

Samplers

ScalarKernels

StochasticTools

Surrogates

ThermalContact

Times

Trainers

Transfers

UserObjects

VariableMappings

Variables

Variables/CHPFCRFFSplitVariables

Variables/HHPFCRFFSplitVariables

Variables/PFCRFFVariables

Variables/PolycrystalVariables

VectorPostprocessors