Navier-Stokes Module

The MOOSE Navier-Stokes module is a library for the implementation of simulation tools that solve the Navier-Stokes equations using the continuous Galerkin finite element (CGFE) method. The Navier-Stokes equations are usually solved using either the pressure-based, incompressible formulation (assuming a constant fluid density), or the density-based, compressible formulation.

The CGFE method has been implemented to solve either the incompressible or compressible Navier-Stokes equations. The original CGFE method is usually not numerically stable for solving problems when the Peclet number is greater than 2. An SUPG (Streamline Upwind Petrov Galerkin) scheme is implemented for stabilized solution in smooth compressible flows. A low-diffusion, discontinuity/shock-capturing scheme is required but currently absent for the CGFE method to obtain non-oscillatory solutions of flow problems that contain contact discontinuity or shock waves. For compressible flow problems, users can choose the CGFE method only when the flow field is sufficiently smooth.

For incompressible flow, we have implemented both pressure-stabilized Petrov-Galerkin (PSPG) and streamline-upwind Petrov-Galerkin (SUPG) methods. The former stabilization allows use of equal order shape functions by introducing an on-diagonal dependence in the pressure equation, removing the saddle-point nature of the problem. The latter SUPG method allows simulation at much higher Reynolds numbers than if SUPG was not used. For an overview of the incompressible Navier-Stokes capability, please see the journal article here or the pre-print here. Note that automatic differentiation versions of the incompressible objects have been created; these objects are currently not as performant as their hand-coded peers, but they can be used seamlessly in simulations with mesh deformation and are guaranteed to generate correct Jacobians.

AuxKernels

AuxVariables

BCs

Functions

  • Navier Stokes App
  • WedgeFunctionFunction which computes the exact solution for Jeffery-Hamel flow in a wedge.

ICs

  • Navier Stokes App
  • NSInitialConditionNSInitialCondition sets intial constant values for all variables.

Kernels

  • Navier Stokes App
  • DistributedForce
  • DistributedPower
  • 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 convective term to the INS momentum equation
  • INSADMomentumForcesAdds body forces to the INS momentum equation
  • 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
  • INSADTemperatureAdvectionThis class computes the residual and Jacobian contributions for temperature advection for a divergence free velocity field.
  • INSADTemperatureAdvectionSUPGThis class computes the residual and Jacobian contributions for SUPG stabilization of temperature advection for a divergence free velocity field.
  • 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.
  • MassConvectiveFlux
  • MomentumConvectiveFlux
  • 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.
  • PressureGradient
  • TotalEnergyConvectiveFlux

Materials

  • Navier Stokes App
  • AirAir.
  • INSADMaterialThis is the material class used to compute some of the strong residuals for the INS equations.
  • INSADTauMaterialThis is the material class used to compute the stabilization parameter tau.

Modules

Modules/NavierStokes

Modules/NavierStokes/BCs

  • Navier Stokes App
  • AddNavierStokesBCsActionThis class allows us to have a section of the input file like the following which adds BC objects for each requested boundary condition.
  • NSNoPenetrationBCThis class facilitates adding solid wall 'no penetration' BCs for the Euler equations.
  • NSStaticPressureOutletBCThis class facilitates adding specified static pressure outlet BCs for the Euler equations.
  • NSWeakStagnationInletBCThis class facilitates adding weak stagnation inlet BCs via an Action by setting up the required parameters.

Modules/NavierStokes/ICs

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

Modules/NavierStokes/Kernels

  • Navier Stokes App
  • AddNavierStokesKernelsActionThis 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/NavierStokes/Variables

  • Navier Stokes App
  • AddNavierStokesVariablesActionThis class allows us to have a section of the input file like the following which automatically adds all the required nonlinear variables with the appropriate scaling.

Postprocessors

UserObjects

Variables