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
NSHand-codedcompressibleNoneNot porousCGFESUPG
INSFVADincompressiblemixing lengthNot porousFVRC, CD velocity; limited advected
WCNSFVADweakly compressiblemixing lengthNot porousFVRC, CD velocity; limited advected
PINSFVADincompressibleNoneDarcy, ForcheimerFVRC, CD velocity; limited advected
CNSFVHLLCADcompressibleNoneNot porousFVHLLC, piecewise constant data
PCNSFVHLLCADcompressibleNoneDarcy, ForcheimerFVHLLC, piecewise constant data
PCNSFVKTADcompressibleNoneDarcy, ForcheimerFVKurganov-Tadmor, limited data

Table definitions:

  • AD: automatic differentiation

  • 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

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.
  • INSCourantComputes h_min / |u|.
  • INSDivergenceAuxComputes 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.
  • 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.
  • 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.

AuxVariables

AuxVariables/MultiAuxVariables

BCs

  • Navier Stokes App
  • AdvectionBCBoundary conditions for outflow/outflow of advected quantities: phi * velocity * normal, where phi is the advected quantitiy
  • EnergyFreeBCImplements free advective flow boundary conditions for the energy equation.
  • INSADMomentumNoBCBCThis class implements the 'No BC' boundary condition based on the 'Laplace' form of the viscous stress tensor.
  • INSMomentumNoBCBCLaplaceFormThis class implements the 'No BC' boundary condition based on the 'Laplace' form of the viscous stress tensor.
  • INSMomentumNoBCBCTractionFormThis class implements the 'No BC' boundary condition based on the 'traction' form of the viscous stress tensor.
  • INSTemperatureNoBCBCThis class implements the 'No BC' boundary condition discussed by Griffiths, Papanastiou, and others.
  • ImplicitNeumannBCThis class implements a form of the Neumann boundary condition in which the boundary term is treated 'implicitly'.
  • MassFreeBCImplements free advective flow boundary conditions for the mass equation.
  • MomentumFreeBCImplements free flow boundary conditions for one of the momentum equations.
  • MomentumFreeSlipBCImplements free slip boundary conditions for the Navier Stokesmomentum equation.
  • NSEnergyInviscidSpecifiedBCThis class corresponds to the inviscid part of the 'natural' boundary condition for the energy equation.
  • NSEnergyInviscidSpecifiedDensityAndVelocityBCThis class corresponds to the inviscid part of the 'natural' boundary condition for the energy equation.
  • NSEnergyInviscidSpecifiedNormalFlowBCThis class corresponds to the inviscid part of the 'natural' boundary condition for the energy equation.
  • NSEnergyInviscidSpecifiedPressureBCThis class corresponds to the inviscid part of the 'natural' boundary condition for the energy equation.
  • NSEnergyInviscidUnspecifiedBCThis class corresponds to the inviscid part of the 'natural' boundary condition for the energy equation.
  • NSEnergyViscousBCThis class couples together all the variables for the compressible Navier-Stokes equations to allow them to be used in derived IntegratedBC classes.
  • NSEnergyWeakStagnationBCThe inviscid energy BC term with specified normal flow.
  • NSImposedVelocityBCImpose Velocity BC.
  • NSImposedVelocityDirectionBCThis class imposes a velocity direction component as a Dirichlet condition on the appropriate momentum equation.
  • NSInflowThermalBCThis class is used on a boundary where the incoming flow values (rho, u, v, T) are all completely specified.
  • NSMassSpecifiedNormalFlowBCThis class implements the mass equation boundary term with a specified value of rho*(u.n) imposed weakly.
  • NSMassUnspecifiedNormalFlowBCThis class implements the mass equation boundary term with the rho*(u.n) boundary integral computed implicitly.
  • NSMassWeakStagnationBCThe inviscid energy BC term with specified normal flow.
  • NSMomentumConvectiveWeakStagnationBCThe convective part (sans pressure term) of the momentum equation boundary integral evaluated at specified stagnation temperature, stagnation pressure, and flow direction values.
  • NSMomentumInviscidNoPressureImplicitFlowBCMomentum equation boundary condition used when pressure is not integrated by parts.
  • NSMomentumInviscidSpecifiedNormalFlowBCMomentum equation boundary condition in which pressure is specified (given) and the value of the convective part is allowed to vary (is computed implicitly).
  • NSMomentumInviscidSpecifiedPressureBCMomentum equation boundary condition in which pressure is specified (given) and the value of the convective part is allowed to vary (is computed implicitly).
  • NSMomentumPressureWeakStagnationBCThis class implements the pressure term of the momentum equation boundary integral for use in weak stagnation boundary conditions.
  • NSMomentumViscousBCThis class corresponds to the viscous part of the 'natural' boundary condition for the momentum equations.
  • NSPenalizedNormalFlowBCThis class penalizes the the value of u.n on the boundary so that it matches some desired value.
  • NSPressureNeumannBCThis kernel is appropriate for use with a 'zero normal flow' boundary condition in the context of the Euler equations.
  • NSStagnationPressureBCThis Dirichlet condition imposes the condition p_0 = p_0_desired.
  • NSStagnationTemperatureBCThis Dirichlet condition imposes the condition T_0 = T_0_desired.
  • NSThermalBCNS thermal BC.

Bounds

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.
  • INSFVFrictionFlowDiodeAdds a linear friction term, -K vel_i * |d(i)|, i being the momentumcomponent, if the flow is opposite the direction d of the diode
  • INSFVMassAdvectionObject for advecting mass, e.g. rho
  • 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.
  • INSFVMomentumPressureIntroduces the coupled pressure term into the Navier-Stokes momentum equation.
  • INSFVMomentumTimeDerivativeAdds the time derivative term to the incompressible Navier-Stokes momentum equation.
  • INSFVScalarFieldAdvectionAdvects an arbitrary quantity, the associated nonlinear 'variable'.
  • NSFVEnergyAmbientConvectionImplements a solid-fluid ambient convection volumetric term proportional to the difference between the fluid and ambient temperatures : .
  • 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.
  • PWCNSFVMassTimeDerivativeAdds the time derivative term to the porous weakly-compressible Navier-Stokes continuity equation.
  • WCNSFVEnergyTimeDerivativeAdds the time derivative term to the incompressible Navier-Stokes momentum equation.
  • 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.

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.
  • 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
  • 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.
  • 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.
  • 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.
  • PressureGradientImplements the pressure gradient term for one of the Navier Stokes momentum equations.
  • TotalEnergyConvectiveFluxImplements the advection term for the Navier Stokes energy equation.

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
  • GeneralFunctorFluidPropsCreates functor fluid properties using a (P, T) formulation
  • 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.
  • INSFVEnthalpyMaterialThis is the material class used to compute enthalpy for the incompressible/weakly-compressible finite-volume implementation of the Navier-Stokes equations.
  • MixingLengthTurbulentViscosityMaterialComputes the material property corresponding to the total viscositycomprising the mixing length model turbulent total_viscosityand the molecular viscosity.
  • PINSFVSpeedFunctorMaterialThis is the material class used to compute the interstitial velocity norm for the incompressible and weakly compressible primitive superficial finite-volume implementation of porous media equations.
  • 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
  • RhoFromPTFunctorMaterialComputes the density from coupled pressure and temperature variables
  • SoundspeedMatComputes the speed of sound
  • ThermalDiffusivityFunctorMaterialComputes the thermal diffusivity given the thermal conductivity, specific heat capacity, and fluid density.

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
  • INSExplicitTimestepSelectorPostprocessor that computes the minimum value of h_min/|u|, where |u| is coupled in as an aux variable.
  • MfrPostprocessorObject for outputting boundary mass fluxes in conjunction with FVFluxBC derived objects that support it
  • NSEntropyErrorComputes entropy error.
  • RayleighNumberPostprocessor that computes the Rayleigh number for free flow with natural circulation
  • VolumetricFlowRateComputes the volumetric flow rate of an advected quantity through a sideset.

ReactionNetwork

ReactionNetwork/AqueousEquilibriumReactions

ReactionNetwork/SolidKineticReactions

UserObjects

  • Navier Stokes App
  • HLLCUserObjectComputes free-flow wave speeds on internal sides, useful in HLLC contexts
  • INSADObjectTrackerUser object used to track the kernels added to an INS simulation and determine what properties to calculate in INSADMaterial
  • INSFVRhieChowInterpolatorComputes the Rhie-Chow velocity based on gathered 'a' coefficient data.
  • PINSFVRhieChowInterpolatorPerforms interpolations and reconstructions of porosity and computes the Rhie-Chow face velocities.

Variables

VectorPostprocessors

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