Navier-Stokes Module

The MOOSE Navier-Stokes module is a library for the implementation of simulation tools that solve the Navier-Stokes equations using either the continuous Galerkin finite element (CGFE) or finite volume (FV) methods. The Navier-Stokes equations are usually solved using either the pressure-based, incompressible formulation (assuming a constant fluid density), or a density-based, compressible formulation, although there are plans to add a finite volume weakly-compressible pressured-based implementation in the not-too-distant future.

For documentation specific to finite element or finite volume implementations, please refer to the below pages:

Here we give a brief tabular summary of the Navier-Stokes implementations:

Table 1: Summary of Navier-Stokes implementations

prefixJacobiancompressibilityturbulence supportfriction supportmethodadvection strategy
INSHand-codedincompressibleNoneNot porousCGFESUPG
INSADADincompressibleSmagorinskyNot porousCGFESUPG
INSFEHand-codedincompressiblemixing lengthNot porousCGFESUPG
PINSFEHand-codedincompressiblemixing lengthporousCGFESUPG
NSHand-codedcompressibleNoneNot porousCGFESUPG
INSChorinHand-codedincompressibleNoneNot porousCGFEChorin predictor-corrector
INSFVADincompressiblemixing length; Not porousFVRC, CD velocity; limited advected
WCNSFVADweakly compressiblemixing lengthNot porousFVRC, CD velocity; limited advected
WCNSFV2PADweakly compressible; 2-phasemixing lengthNot porousFVRC, CD velocity; limited advected
PINSFVADincompressiblemixing lengthDarcy, ForcheimerFVRC, CD velocity; limited advected
CNSFVHLLCADcompressibleNoneNot porousFVHLLC, piecewise constant data
PCNSFVHLLCADcompressibleNoneDarcy, ForcheimerFVHLLC, piecewise constant data
PCNSFVKTADcompressibleNoneDarcy, ForcheimerFVKurganov-Tadmor, limited data

Table definitions:

  • INS: incompressible Navier-Stokes

  • AD: automatic differentiation

  • WCNS: weakly-compressible Navier-Stokes

  • WCNS2P: weakly-compressible Navier-Stokes 2-phase

  • CNS: compressible Navier-Stokes

  • PINS or PCNS: porous incompressible Navier-Stokes or porous compressible Navier-Stokes

  • SUPG: Streamline-Upwind Petrov-Galerkin

  • RC: Rhie-Chow interpolation

  • CD: central differencing interpolation; equivalent to average interpolation

  • HLLC: Harten Lax van Leer Contact

  • data: includes both the advector, velocity, and the advected quantities

  • limited: different limiters can be applied when interpolating cell-centered data to faces. A summary of limiter options can be found in Limiters

Note that the INS and INSFE kernel sets are redundant in terms of targeted functionality. Historically, the INS kernel set was developed in this module and the INSFE kernel set was developed in the SAM application (where there it was prefixed with "MD") (Hu et al., 2021). With the Nuclear Energy Advanced Modeling and Simulation (NEAMS) program dedicated to consolidating fluid dynamics modeling, SAM capabilities are being migrated upstream as appropriate into the common module layer. In the not-too-distant future these kernel sets will be consolidated into a single set.

For an introductory slideshow on the use of the Navier Stokes Finite Volume solvers in MOOSE, we refer the visitor to the Navier Stokes Workshop Slides.

Adaptivity

Adaptivity/Indicators

Adaptivity/Markers

AuxKernels

  • Navier Stokes App
  • CourantComputes |u| dt / h_min.
  • EnthalpyAuxThis AuxKernel computes the specific enthalpy of the fluidfrom the total energy and the pressure.
  • HasPorosityJumpFaceShows whether an element has any attached porosity jump faces
  • INSCourantComputes h_min / |u|.
  • INSFVMixingLengthTurbulentViscosityAuxComputes the turbulent viscosity for the mixing length model.
  • INSQCriterionAuxThis class computes the Q criterion, a scalar whichaids in vortex identification in turbulent flows
  • INSStressComponentAuxThis class computes the stress component based on pressure and velocity for incompressible Navier-Stokes
  • InternalEnergyAuxThis AuxKernel computes the internal energy based on the equation of state / fluid properties and the local pressure and density.
  • NSInternalEnergyAuxAuxiliary kernel for computing the internal energy of the fluid.
  • NSLiquidFractionAuxComputes liquid fraction given the temperature.
  • NSMachAuxAuxiliary kernel for computing the Mach number assuming an ideal gas.
  • NSPressureAuxNodal auxiliary variable, for computing pressure at the nodes.
  • NSSpecificTotalEnthalpyAuxNodal auxiliary variable, for computing enthalpy at the nodes.
  • NSTemperatureAuxTemperature is an auxiliary value computed from the total energy based on the FluidProperties.
  • NSVelocityAuxVelocity auxiliary value.
  • PecletNumberFunctorAuxComputes the Peclet number: u*L/alpha.
  • ReynoldsNumberFunctorAuxComputes rho*u*L/mu.
  • SpecificInternalEnergyAuxThis AuxKernel computes the specific internal energy based from the total and the kinetic energy.
  • SpecificVolumeAuxThis auxkernel computes the specific volume of the fluid.
  • TurbulentConductivityAuxCalculates the turbulent heat conductivity.
  • WallDistanceMixingLengthAuxComputes the turbulent mixing length by assuming that it is proportional to the distance from the nearest wall. The mixinglength is capped at a distance proportional to inputted parameter delta.
  • WallFunctionWallShearStressAuxCalculates the wall shear stress based on algebraic standard velocity wall functions.
  • WallFunctionYPlusAuxCalculates y+ value according to the algebraic velocity standard wall function.
  • kEpsilonViscosityAuxCalculates the turbulent viscosity according to the k-epsilon model.

AuxVariables

AuxVariables/MultiAuxVariables

BCs

Executioner

  • Navier Stokes App
  • SIMPLESolves the Navier-Stokes equations using the SIMPLE algorithm.

FVBCs

FVInterfaceKernels

  • Navier Stokes App
  • FVConvectionCorrelationInterfaceComputes the residual for a convective heat transfer across an interface for the finite volume method, using a correlation for the heat transfer coefficient.

FVKernels

  • Navier Stokes App
  • CNSFVFluidEnergyHLLCImplements the fluid energy flux portion of the free-flow HLLC discretization.
  • CNSFVMassHLLCImplements the mass flux portion of the free-flow HLLC discretization.
  • CNSFVMomentumHLLCImplements the momentum flux portion of the free-flow HLLC discretization.
  • FVMatPropTimeKernelReturns a material property which should correspond to a time derivative.
  • FVPorosityTimeDerivativeA time derivative multiplied by a porosity material property
  • INSFVBodyForceBody force that contributes to the Rhie-Chow interpolation
  • INSFVEnergyAdvectionAdvects energy, e.g. rho*cp*T. A user may still override what quantity is advected, but the default is rho*cp*T
  • INSFVEnergyTimeDerivativeAdds the time derivative term to the incompressible Navier-Stokes energy equation.
  • INSFVMassAdvectionObject for advecting mass, e.g. rho
  • INSFVMeshAdvectionImplements a source/sink term for this object's variable/advected-quantity proportional to the divergence of the mesh velocity
  • INSFVMixingLengthReynoldsStressComputes the force due to the Reynolds stress term in the incompressible Reynolds-averaged Navier-Stokes equations.
  • INSFVMixingLengthScalarDiffusionComputes the turbulent diffusive flux that appears in Reynolds-averaged fluid conservation equations.
  • INSFVMomentumAdvectionObject for advecting momentum, e.g. rho*u
  • INSFVMomentumBoussinesqComputes a body force for natural convection buoyancy.
  • INSFVMomentumDiffusionImplements the Laplace form of the viscous stress in the Navier-Stokes equation.
  • INSFVMomentumFrictionImplements a basic linear or quadratic friction model as a volumetric force, for example for the X-momentum equation: and for the linear and quadratic models respectively. A linear dependence is expected for laminar flow, while a quadratic dependence is more common for turbulent flow.
  • INSFVMomentumGravityComputes a body force due to gravity in Rhie-Chow based simulations.
  • INSFVMomentumMeshAdvectionImplements a momentum source/sink term proportional to the divergence of the mesh velocity
  • INSFVMomentumPressureIntroduces the coupled pressure term into the Navier-Stokes momentum equation.
  • INSFVMomentumPressureFluxMomentum pressure term eps grad_P, as a flux kernel using the divergence theoreom, in the incompressible Navier-Stokes momentum equation.
  • INSFVMomentumTimeDerivativeAdds the time derivative term to the incompressible Navier-Stokes momentum equation.
  • INSFVPumpEffective body force for a pump that contributes to the Rhie-Chow interpolation
  • INSFVScalarFieldAdvectionAdvects an arbitrary quantity, the associated nonlinear 'variable'.
  • INSFVTKEDSourceSinkElemental kernel to compute the production and destruction terms of turbulent kinetic energy dissipation (TKED).
  • INSFVTKESourceSinkElemental kernel to compute the production and destruction terms of turbulent kinetic energy (TKE).
  • INSFVTurbulentAdvectionAdvects an arbitrary turbulent quantity, the associated nonlinear 'variable'.
  • INSFVTurbulentDiffusionComputes residual for the turbulent scaled diffusion operator for finite volume method.
  • NSFVEnergyAmbientConvectionImplements a solid-fluid ambient convection volumetric term proportional to the difference between the fluid and ambient temperatures : .
  • NSFVMixturePhaseInterfaceImplements a phase-to-phase volumetric exchange.
  • NSFVPhaseChangeSourceComputes the energy source due to solidification/melting.
  • PCNSFVDensityTimeDerivativeA time derivative kernel for which the form is eps * ddt(rho*var).
  • PCNSFVFluidEnergyHLLCImplements the fluid energy flux portion of the porous HLLC discretization.
  • PCNSFVKTComputes the residual of advective term using finite volume method.
  • PCNSFVKTDCComputes the residual of advective term using finite volume method using a deferred correction approach.
  • PCNSFVMassHLLCImplements the mass flux portion of the porous HLLC discretization.
  • PCNSFVMomentumFrictionComputes a friction force term on fluid in porous media in the Navier Stokes i-th momentum equation.
  • PCNSFVMomentumHLLCImplements the momentum flux portion of the porous HLLC discretization.
  • PINSFVEnergyAdvectionAdvects energy, e.g. rho*cp*T. A user may still override what quantity is advected, but the default is rho*cp*T
  • PINSFVEnergyAmbientConvectionImplements the solid-fluid ambient convection term in the porous media Navier Stokes energy equation.
  • PINSFVEnergyAnisotropicDiffusionAnisotropic diffusion term in the porous media incompressible Navier-Stokes equations : -div(kappa grad(T))
  • PINSFVEnergyDiffusionDiffusion term in the porous media incompressible Navier-Stokes fluid energy equations :
  • PINSFVEnergyTimeDerivativeAdds the time derivative term to the Navier-Stokes energy equation: for fluids: d(eps * rho * cp * T)/dt, for solids: (1 - eps) * d(rho * cp * T)/dtMaterial property derivatives are ignored if not provided.
  • PINSFVMassAdvectionObject for advecting mass in porous media mass equation
  • PINSFVMomentumAdvectionObject for advecting superficial momentum, e.g. rho*u_d, in the porous media momentum equation
  • PINSFVMomentumBoussinesqComputes a body force for natural convection buoyancy in porous media: eps alpha (T-T_0)
  • PINSFVMomentumDiffusionViscous diffusion term, div(mu eps grad(u_d / eps)), in the porous media incompressible Navier-Stokes momentum equation.
  • PINSFVMomentumFrictionComputes a friction force term on fluid in porous media in the Navier Stokes i-th momentum equation in Rhie-Chow (incompressible) contexts.
  • PINSFVMomentumFrictionCorrectionComputes a correction term to avoid oscillations from average pressure interpolation in regions of high changes in friction coefficients.
  • PINSFVMomentumGravityComputes a body force, due to gravity on fluid in porous media in Rhie-Chow (incompressible) contexts.
  • PINSFVMomentumPressureIntroduces the coupled pressure term into the Navier-Stokes porous media momentum equation.
  • PINSFVMomentumPressureFluxMomentum pressure term eps grad_P, as a flux kernel using the divergence theoreom, in the porous media incompressible Navier-Stokes momentum equation. This kernel is also executed on boundaries.
  • PINSFVMomentumPressurePorosityGradientIntroduces the coupled pressure times porosity gradient term into the Navier-Stokes porous media momentum equation.
  • PINSFVMomentumTimeDerivativeAdds the time derivative term: d(rho u_d) / dt to the porous media incompressible Navier-Stokes momentum equation.
  • PNSFVMomentumPressureFluxRZAdds the porous term into the radial component of the Navier-Stokes momentum equation for the problems in the RZ coordinate system when integrating by parts.
  • PNSFVMomentumPressureRZAdds the porous term into the radial component of the Navier-Stokes momentum equation for the problems in the RZ coordinate system when integrating by parts.
  • PNSFVPGradEpsilonIntroduces a -p * grad_eps term.
  • PWCNSFVMassAdvectionObject for advecting mass in porous media mass equation
  • PWCNSFVMassTimeDerivativeAdds the time derivative term to the porous weakly-compressible Navier-Stokes continuity equation.
  • WCNSFV2PMomentumAdvectionSlipComputes the slip velocity advection kernel for two-phase mixture model.
  • WCNSFV2PMomentumDriftFluxImplements the drift momentum flux source.
  • WCNSFVEnergyTimeDerivativeAdds the time derivative term to the incompressible Navier-Stokes momentum equation.
  • WCNSFVMassAdvectionObject for advecting mass, e.g. rho
  • WCNSFVMassTimeDerivativeAdds the time derivative term to the weakly-compressible Navier-Stokes continuity equation.
  • WCNSFVMixingLengthEnergyDiffusionComputes the turbulent diffusive flux that appears in Reynolds-averaged fluid energy conservation equations.
  • WCNSFVMomentumTimeDerivativeAdds the time derivative term to the incompressible Navier-Stokes momentum equation.

FunctorMaterials

ICs

Kernels

  • Navier Stokes App
  • DistributedForceImplements a force term in the Navier Stokes momentum equation.
  • DistributedPowerImplements the power term of a specified force in the Navier Stokes energy equation.
  • INSADBoussinesqBodyForceComputes a body force for natural convection buoyancy.
  • INSADEnergyAdvectionThis class computes the residual and Jacobian contributions for temperature advection for a divergence free velocity field.
  • INSADEnergyAmbientConvectionComputes a heat source/sink due to convection from ambient surroundings.
  • INSADEnergyMeshAdvectionThis class computes the residual and Jacobian contributions for temperature advection from mesh velocity in an ALE simulation.
  • INSADEnergySUPGAdds the supg stabilization to the INS temperature/energy equation
  • INSADEnergySourceComputes an arbitrary volumetric heat source (or sink).
  • INSADGravityForceComputes a body force due to gravity.
  • INSADHeatConductionTimeDerivativeAD Time derivative term of the heat equation for quasi-constant specific heat and the density .
  • INSADMassThis class computes the mass equation residual and Jacobian contributions (the latter using automatic differentiation) for the incompressible Navier-Stokes equations.
  • INSADMassPSPGThis class adds PSPG stabilization to the mass equation, enabling use of equal order shape functions for pressure and velocity variables
  • INSADMomentumAdvectionAdds the advective term to the INS momentum equation
  • INSADMomentumCoupledForceComputes a body force due to a coupled vector variable or a vector function
  • INSADMomentumGradDivAdds grad-div stabilization to the INS momentum equation
  • INSADMomentumMeshAdvectionCorrects the convective derivative for situations in which the fluid mesh is dynamic.
  • INSADMomentumPressureAdds the pressure term to the INS momentum equation
  • INSADMomentumSUPGAdds the supg stabilization to the INS momentum equation
  • INSADMomentumTimeDerivativeThis class computes the time derivative for the incompressible Navier-Stokes momentum equation.
  • INSADMomentumViscousAdds the viscous term to the INS momentum equation
  • INSADSmagorinskyEddyViscosityComputes eddy viscosity term using Smagorinky's LES model
  • INSChorinCorrectorThis class computes the 'Chorin' Corrector equation in fully-discrete (both time and space) form.
  • INSChorinPredictorThis class computes the 'Chorin' Predictor equation in fully-discrete (both time and space) form.
  • INSChorinPressurePoissonThis class computes the pressure Poisson solve which is part of the 'split' scheme used for solving the incompressible Navier-Stokes equations.
  • INSCompressibilityPenaltyThe penalty term may be used when Dirichlet boundary condition is applied to the entire boundary.
  • INSFEFluidEnergyKernelAdds advection, diffusion, and heat source terms to energy equation, potentially with stabilization
  • INSFEFluidMassKernelAdds advective term of mass conservation equation along with pressure-stabilized Petrov-Galerkin terms
  • INSFEFluidMomentumKernelAdds advection, viscous, pressure, friction, and gravity terms to the Navier-Stokes momentum equation, potentially with stabilization
  • INSMassThis class computes the mass equation residual and Jacobian contributions for the incompressible Navier-Stokes momentum equation.
  • INSMassRZThis class computes the mass equation residual and Jacobian contributions for the incompressible Navier-Stokes momentum equation in RZ coordinates.
  • INSMomentumLaplaceFormThis class computes momentum equation residual and Jacobian viscous contributions for the 'Laplacian' form of the governing equations.
  • INSMomentumLaplaceFormRZThis class computes additional momentum equation residual and Jacobian contributions for the incompressible Navier-Stokes momentum equation in RZ (axisymmetric cylindrical) coordinates, using the 'Laplace' form of the governing equations.
  • INSMomentumTimeDerivativeThis class computes the time derivative for the incompressible Navier-Stokes momentum equation.
  • INSMomentumTractionFormThis class computes momentum equation residual and Jacobian viscous contributions for the 'traction' form of the governing equations.
  • INSMomentumTractionFormRZThis class computes additional momentum equation residual and Jacobian contributions for the incompressible Navier-Stokes momentum equation in RZ (axisymmetric cylindrical) coordinates.
  • INSPressurePoissonThis class computes the pressure Poisson solve which is part of the 'split' scheme used for solving the incompressible Navier-Stokes equations.
  • INSProjectionThis class computes the 'projection' part of the 'split' method for solving incompressible Navier-Stokes.
  • INSSplitMomentumThis class computes the 'split' momentum equation residual.
  • INSTemperatureThis class computes the residual and Jacobian contributions for the incompressible Navier-Stokes temperature (energy) equation.
  • INSTemperatureTimeDerivativeThis class computes the time derivative for the incompressible Navier-Stokes momentum equation.
  • MDFluidEnergyKernelAdds advection, diffusion, and heat source terms to energy equation, potentially with stabilization
  • MDFluidMassKernelAdds advective term of mass conservation equation along with pressure-stabilized Petrov-Galerkin terms
  • MDFluidMomentumKernelAdds advection, viscous, pressure, friction, and gravity terms to the Navier-Stokes momentum equation, potentially with stabilization
  • MassConvectiveFluxImplements the advection term for the Navier Stokes mass equation.
  • MomentumConvectiveFluxImplements the advective term of the Navier Stokes momentum equation.
  • NSEnergyInviscidFluxThis class computes the inviscid part of the energy flux.
  • NSEnergyThermalFluxThis class is responsible for computing residuals and Jacobian terms for the k * grad(T) * grad(phi) term in the Navier-Stokes energy equation.
  • NSEnergyViscousFluxViscous flux terms in energy equation.
  • NSGravityForceThis class computes the gravity force contribution.
  • NSGravityPowerThis class computes the momentum contributed by gravity.
  • NSMassInviscidFluxThis class computes the inviscid flux in the mass equation.
  • NSMomentumInviscidFluxThe inviscid flux (convective + pressure terms) for the momentum conservation equations.
  • NSMomentumInviscidFluxWithGradPThis class computes the inviscid flux with pressure gradient in the momentum equation.
  • NSMomentumViscousFluxDerived instance of the NSViscousFluxBase class for the momentum equations.
  • NSSUPGEnergyCompute residual and Jacobian terms form the SUPG terms in the energy equation.
  • NSSUPGMassCompute residual and Jacobian terms form the SUPG terms in the mass equation.
  • NSSUPGMomentumCompute residual and Jacobian terms form the SUPG terms in the momentum equation.
  • NSTemperatureL2This class was originally used to solve for the temperature using an L2-projection.
  • PINSFEFluidPressureTimeDerivativeAdds the transient term of the porous-media mass conservation equation
  • PINSFEFluidTemperatureTimeDerivativeThe time derivative operator with the weak form of .
  • PINSFEFluidVelocityTimeDerivativeThe time derivative operator with the weak form of .
  • PMFluidPressureTimeDerivativeAdds the transient term of the porous-media mass conservation equation
  • PMFluidTemperatureTimeDerivativeThe time derivative operator with the weak form of .
  • PMFluidVelocityTimeDerivativeThe time derivative operator with the weak form of .
  • PressureGradientImplements the pressure gradient term for one of the Navier Stokes momentum equations.
  • TotalEnergyConvectiveFluxImplements the advection term for the Navier Stokes energy equation.
  • VectorMassMatrixComputes a finite element mass matrix meant for use in preconditioning schemes which require one

Materials

  • Navier Stokes App
  • AirAir.
  • ConservedVarValuesMaterialProvides access to variables for a conserved variable set of density, total fluid energy, and momentum
  • GeneralFluidPropsComputes fluid properties using a (P, T) formulation
  • GenericPorousMediumMaterialComputes generic material properties related to simulation of fluid flow in a porous medium
  • INSAD3EqnThis material computes properties needed for stabilized formulations of the mass, momentum, and energy equations.
  • INSADMaterialThis is the material class used to compute some of the strong residuals for the INS equations.
  • INSADStabilized3EqnThis is the material class used to compute the stabilization parameter tau for momentum and tau_energy for the energy equation.
  • INSADTauMaterialThis is the material class used to compute the stabilization parameter tau.
  • INSFEMaterialComputes generic material properties related to simulation of fluid flow
  • MDFluidMaterialComputes generic material properties related to simulation of fluid flow
  • PINSFEMaterialComputes generic material properties related to simulation of fluid flow in a porous medium
  • PorousConservedVarMaterialProvides access to variables for a conserved variable set of density, total fluid energy, and momentum
  • PorousMixedVarMaterialProvides access to variables for a primitive variable set of pressure, temperature, and superficial velocity
  • PorousPrimitiveVarMaterialProvides access to variables for a primitive variable set of pressure, temperature, and superficial velocity
  • SoundspeedMatComputes the speed of sound

Modules

Modules/CompressibleNavierStokes

  • Navier Stokes App
  • CNSActionThis class allows us to have a section of the input file like the following which automatically adds Kernels and AuxKernels for all the required nonlinear and auxiliary variables.

Modules/IncompressibleNavierStokes

  • Navier Stokes App
  • INSActionThis class allows us to have a section of the input file for setting up incompressible Navier-Stokes equations.

Modules/NavierStokesFV

  • Navier Stokes App
  • NSFVActionThis class allows us to set up Navier-Stokes equations for porous medium or clean fluid flows using incompressible or weakly compressible approximations with a finite volume discretization.

Postprocessors

  • Navier Stokes App
  • ADCFLTimeStepSizeComputes a time step size based on a user-specified CFL number
  • CFLTimeStepSizeComputes a time step size based on a user-specified CFL number
  • INSADElementIntegralEnergyAdvectionComputes the net volumetric balance of energy transported by advection
  • INSElementIntegralEnergyAdvectionComputes the net volumetric balance of energy transported by advection
  • INSExplicitTimestepSelectorPostprocessor that computes the minimum value of h_min/|u|, where |u| is coupled in as an aux variable.
  • IntegralDirectedSurfaceForceComputes the directed force coming from friction and pressure differences on a surface. One can use this object for the computation of the drag and lift coefficient as well.
  • MassFluxWeightedFlowRateComputes the mass flux weighted average of the quantity provided by advected_quantity over a boundary.
  • MfrPostprocessorObject for outputting boundary mass fluxes in conjunction with FVFluxBC derived objects that support it
  • NSEntropyErrorComputes entropy error.
  • PressureDropComputes the pressure drop between an upstream and a downstream boundary.
  • RayleighNumberPostprocessor that computes the Rayleigh number for free flow with natural circulation
  • VolumetricFlowRateComputes the volumetric flow rate of an advected quantity through a sideset.

Problem

  • Navier Stokes App
  • NavierStokesProblemA problem that handles Schur complement preconditioning of the incompressible Navier-Stokes equations

ReactionNetwork

ReactionNetwork/AqueousEquilibriumReactions

ReactionNetwork/SolidKineticReactions

UserObjects

Variables

VectorPostprocessors

  • Navier Stokes App
  • WaveSpeedVPPExtracts wave speeds from HLLC userobject for a given face

References

  1. Rui Hu, Ling Zou, Guojun Hu, Daniel Nunez, Travis Mui, and Tingzhou Fei. Sam theory manual. Technical Report, Argonne National Lab.(ANL), Argonne, IL (United States), 2021.[BibTeX]