NSFVAction

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

Overview

This action is used for setting up the Navier-Stokes equations over a subdomain using a finite volume discretization. Furthermore, the action is able to handle regular (clean fluid flow) or porous medium (flow within homogenized structures) formulations using incompressible and weakly-compressible approximations. This action is triggered with /Modules/NavierStokesFV input syntax. For more information, visit NavierStokesFV.

Example Input File Syntax

Input Parameters

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified only the blocks named will be visited and made active

  • blockThe list of blocks on which NS equations are defined on

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The list of blocks on which NS equations are defined on

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified blocks matching these identifiers will be skipped.

Optional Parameters

  • add_energy_equationFalseTrue to add energy equation

    Default:False

    C++ Type:bool

    Controllable:No

    Description:True to add energy equation

  • compressibilityincompressibleCompressibility constraint for the Navier-Stokes equations.

    Default:incompressible

    C++ Type:MooseEnum

    Options:incompressible, weakly-compressible

    Controllable:No

    Description:Compressibility constraint for the Navier-Stokes equations.

  • porous_medium_treatmentFalseWhether to use porous medium kernels or not.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to use porous medium kernels or not.

  • turbulence_handlingnoneThe way additional diffusivities are determined in the turbulent regime.

    Default:none

    C++ Type:MooseEnum

    Options:mixing-length, none

    Controllable:No

    Description:The way additional diffusivities are determined in the turbulent regime.

General Control Parameters

  • ambient_convection_alphaThe heat exchange coefficients for each block in 'ambient_convection_blocks'.

    C++ Type:std::vector<MooseFunctorName>

    Controllable:No

    Description:The heat exchange coefficients for each block in 'ambient_convection_blocks'.

  • ambient_convection_blocksThe blocks where the ambient convection is present.

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The blocks where the ambient convection is present.

  • ambient_temperatureThe ambient temperature for each block in 'ambient_convection_blocks'.

    C++ Type:std::vector<MooseFunctorName>

    Controllable:No

    Description:The ambient temperature for each block in 'ambient_convection_blocks'.

  • external_heat_sourceThe name of a functor which contains the external heat source for the energy equation.

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:The name of a functor which contains the external heat source for the energy equation.

  • external_heat_source_coeff1Multiplier for the coupled heat source term.

    Default:1

    C++ Type:double

    Controllable:No

    Description:Multiplier for the coupled heat source term.

Energy Equation Parameters

  • boussinesq_approximationFalseTrue to have Boussinesq approximation

    Default:False

    C++ Type:bool

    Controllable:No

    Description:True to have Boussinesq approximation

  • gravity0 0 0The gravitational acceleration vector.

    Default:0 0 0

    C++ Type:libMesh::VectorValue<double>

    Controllable:No

    Description:The gravitational acceleration vector.

  • pin_pressureFalseSwitch to enable pressure shifting for incompressible simulations.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Switch to enable pressure shifting for incompressible simulations.

  • pinned_pressure_point0 0 0The XYZ coordinates where pressure needs to be pinned for incompressible simulations.

    Default:0 0 0

    C++ Type:libMesh::Point

    Controllable:No

    Description:The XYZ coordinates where pressure needs to be pinned for incompressible simulations.

  • pinned_pressure_typeaverageTypes for shifting (pinning) the pressure in case of incompressible simulations.

    Default:average

    C++ Type:MooseEnum

    Options:average, point-value

    Controllable:No

    Description:Types for shifting (pinning) the pressure in case of incompressible simulations.

  • pinned_pressure_value100000The value used for pinning the pressure (point value/domain average).

    Default:100000

    C++ Type:double

    Controllable:No

    Description:The value used for pinning the pressure (point value/domain average).

  • ref_temperature273.15Value for reference temperature in case of Boussinesq approximation

    Default:273.15

    C++ Type:double

    Controllable:No

    Description:Value for reference temperature in case of Boussinesq approximation

Momentum Equation Parameters

  • consistent_scalingScaling parameter for the friction correction in the momentum equation (if requested).

    C++ Type:double

    Controllable:No

    Description:Scaling parameter for the friction correction in the momentum equation (if requested).

  • porosityporosityThe name of the auxiliary variable for the porosity field.

    Default:porosity

    C++ Type:MooseFunctorName

    Controllable:No

    Description:The name of the auxiliary variable for the porosity field.

  • porosity_smoothing_layersThe number of interpolation-reconstruction operations to perform on the porosity.

    C++ Type:unsigned short

    Controllable:No

    Description:The number of interpolation-reconstruction operations to perform on the porosity.

  • use_friction_correctionFalseIf friction correction should be applied in the momentum equation.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:If friction correction should be applied in the momentum equation.

Porous Medium Treatment Parameters

  • densityrhoThe name of the density

    Default:rho

    C++ Type:MooseFunctorName

    Controllable:No

    Description:The name of the density

  • dynamic_viscositymuThe name of the dynamic viscosity

    Default:mu

    C++ Type:MooseFunctorName

    Controllable:No

    Description:The name of the dynamic viscosity

  • specific_heatcpThe name of the specific heat

    Default:cp

    C++ Type:MooseFunctorName

    Controllable:No

    Description:The name of the specific heat

  • thermal_conductivitykThe name of the fluid thermal conductivity

    Default:k

    C++ Type:MooseFunctorName

    Controllable:No

    Description:The name of the fluid thermal conductivity

  • thermal_expansionalphaThe name of the thermal expansion coefficient in the Boussinesq approximation

    Default:alpha

    C++ Type:MooseFunctorName

    Controllable:No

    Description:The name of the thermal expansion coefficient in the Boussinesq approximation

Material Property Parameters

  • energy_advection_interpolationaverageThe numerical scheme to use for interpolating energy/temperature, as an advected quantity, to the face.

    Default:average

    C++ Type:MooseEnum

    Options:average, upwind, skewness-corrected

    Controllable:No

    Description:The numerical scheme to use for interpolating energy/temperature, as an advected quantity, to the face.

  • energy_face_interpolationaverageThe numerical scheme to interpolate the temperature/energy to the face (separate from the advected quantity interpolation).

    Default:average

    C++ Type:MooseEnum

    Options:average, skewness-corrected

    Controllable:No

    Description:The numerical scheme to interpolate the temperature/energy to the face (separate from the advected quantity interpolation).

  • energy_two_term_bc_expansionTrueIf a two-term Taylor expansion is needed for the determination of the boundary valuesof the temperature/energy.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:If a two-term Taylor expansion is needed for the determination of the boundary valuesof the temperature/energy.

  • mass_advection_interpolationaverageThe numerical scheme to use for interpolating density, as an advected quantity, to the face.

    Default:average

    C++ Type:MooseEnum

    Options:average, upwind, skewness-corrected

    Controllable:No

    Description:The numerical scheme to use for interpolating density, as an advected quantity, to the face.

  • mixing_length_two_term_bc_expansionTrueIf a two-term Taylor expansion is needed for the determination of the boundary valuesof the mixing length field.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:If a two-term Taylor expansion is needed for the determination of the boundary valuesof the mixing length field.

  • momentum_advection_interpolationaverageThe numerical scheme to use for interpolating momentum/velocity, as an advected quantity, to the face.

    Default:average

    C++ Type:MooseEnum

    Options:average, upwind, skewness-corrected

    Controllable:No

    Description:The numerical scheme to use for interpolating momentum/velocity, as an advected quantity, to the face.

  • momentum_face_interpolationaverageThe numerical scheme to interpolate the velocity/momentum to the face (separate from the advected quantity interpolation).

    Default:average

    C++ Type:MooseEnum

    Options:average, skewness-corrected

    Controllable:No

    Description:The numerical scheme to interpolate the velocity/momentum to the face (separate from the advected quantity interpolation).

  • momentum_two_term_bc_expansionTrueIf a two-term Taylor expansion is needed for the determination of the boundary valuesof the velocity/momentum.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:If a two-term Taylor expansion is needed for the determination of the boundary valuesof the velocity/momentum.

  • passive_scalar_advection_interpolationaverageThe numerical scheme to use for interpolating passive scalar field, as an advected quantity, to the face.

    Default:average

    C++ Type:MooseEnum

    Options:average, upwind, skewness-corrected

    Controllable:No

    Description:The numerical scheme to use for interpolating passive scalar field, as an advected quantity, to the face.

  • passive_scalar_face_interpolationaverageThe numerical scheme to interpolate the passive scalar field variables to the face (separate from the advected quantity interpolation).

    Default:average

    C++ Type:MooseEnum

    Options:average, skewness-corrected

    Controllable:No

    Description:The numerical scheme to interpolate the passive scalar field variables to the face (separate from the advected quantity interpolation).

  • passive_scalar_two_term_bc_expansionTrueIf a two-term Taylor expansion is needed for the determination of the boundary valuesof the advected passive scalar field.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:If a two-term Taylor expansion is needed for the determination of the boundary valuesof the advected passive scalar field.

  • pressure_face_interpolationaverageThe numerical scheme to interpolate the pressure to the face (separate from the advected quantity interpolation).

    Default:average

    C++ Type:MooseEnum

    Options:average, skewness-corrected

    Controllable:No

    Description:The numerical scheme to interpolate the pressure to the face (separate from the advected quantity interpolation).

  • pressure_two_term_bc_expansionTrueIf a two-term Taylor expansion is needed for the determination of the boundary valuesof the pressure.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:If a two-term Taylor expansion is needed for the determination of the boundary valuesof the pressure.

Numerical Scheme Parameters

  • energy_inlet_functionFunctions for fixed-value boundaries in the energy equation.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Functions for fixed-value boundaries in the energy equation.

  • energy_inlet_typesTypes for the inlet boundaries for the energy equation.

    C++ Type:MultiMooseEnum

    Options:fixed-temperature, flux-mass, flux-velocity, heatflux

    Controllable:No

    Description:Types for the inlet boundaries for the energy equation.

  • energy_wall_functionFunctions for Dirichlet/Neumann boundaries in the energy equation.

    C++ Type:std::vector<FunctionName>

    Controllable:No

    Description:Functions for Dirichlet/Neumann boundaries in the energy equation.

  • energy_wall_typesheatfluxTypes for the wall boundaries for the energy equation.

    Default:heatflux

    C++ Type:MultiMooseEnum

    Options:fixed-temperature, heatflux

    Controllable:No

    Description:Types for the wall boundaries for the energy equation.

  • flux_inlet_ppsThe name of the postprocessors which compute the mass flow/normal velocity magnitude. Mainly used for coupling between different applications.

    C++ Type:std::vector<PostprocessorName>

    Controllable:No

    Description:The name of the postprocessors which compute the mass flow/normal velocity magnitude. Mainly used for coupling between different applications.

  • inlet_boundariesNames of inlet boundaries

    C++ Type:std::vector<BoundaryName>

    Controllable:No

    Description:Names of inlet boundaries

  • momentum_inlet_functionFunctions for inlet boundary velocities

    C++ Type:std::vector<FunctionName>

    Controllable:No

    Description:Functions for inlet boundary velocities

  • momentum_inlet_typesTypes of inlet boundaries for the momentum equation.

    C++ Type:MultiMooseEnum

    Options:fixed-velocity, flux-velocity, flux-mass

    Controllable:No

    Description:Types of inlet boundaries for the momentum equation.

  • momentum_outlet_typesTypes of outlet boundaries for the momentum equation

    C++ Type:MultiMooseEnum

    Options:fixed-pressure, zero-gradient, fixed-pressure-zero-gradient

    Controllable:No

    Description:Types of outlet boundaries for the momentum equation

  • momentum_wall_typesnoslipTypes of wall boundaries for the momentum equation

    Default:noslip

    C++ Type:MultiMooseEnum

    Options:symmetry, noslip, slip, wallfunction

    Controllable:No

    Description:Types of wall boundaries for the momentum equation

  • outlet_boundariesNames of outlet boundaries

    C++ Type:std::vector<BoundaryName>

    Controllable:No

    Description:Names of outlet boundaries

  • passive_scalar_inlet_functionFunctions for inlet boundaries in the passive scalar equations.

    C++ Type:std::vector<std::vector<std::string>>

    Controllable:No

    Description:Functions for inlet boundaries in the passive scalar equations.

  • passive_scalar_inlet_typesfixed-valueTypes for the inlet boundaries for the passive scalar equation.

    Default:fixed-value

    C++ Type:MultiMooseEnum

    Options:fixed-value, flux-mass, flux-velocity

    Controllable:No

    Description:Types for the inlet boundaries for the passive scalar equation.

  • pressure_functionFunctions for boundary pressures at outlets.

    C++ Type:std::vector<FunctionName>

    Controllable:No

    Description:Functions for boundary pressures at outlets.

  • wall_boundariesNames of wall boundaries

    C++ Type:std::vector<BoundaryName>

    Controllable:No

    Description:Names of wall boundaries

Boundary Condition Parameters

  • energy_scaling1The scaling factor for the energy variable.

    Default:1

    C++ Type:double

    Controllable:No

    Description:The scaling factor for the energy variable.

  • mass_scaling1The scaling factor for the mass variables (for incompressible simulation this is pressure scaling).

    Default:1

    C++ Type:double

    Controllable:No

    Description:The scaling factor for the mass variables (for incompressible simulation this is pressure scaling).

  • momentum_scaling1The scaling factor for the momentum variables.

    Default:1

    C++ Type:double

    Controllable:No

    Description:The scaling factor for the momentum variables.

  • passive_scalar_scaling1The scaling factor for the passive scalar field variables.

    Default:1

    C++ Type:double

    Controllable:No

    Description:The scaling factor for the passive scalar field variables.

Scaling Parameters

  • fluid_temperature_variableIf supplied, the system checks for available fluid temperature variable. Otherwise, it is created within the action.

    C++ Type:NonlinearVariableName

    Controllable:No

    Description:If supplied, the system checks for available fluid temperature variable. Otherwise, it is created within the action.

  • pressure_variableIf supplied, the system checks for available pressure variable. Otherwise, it is created within the action.

    C++ Type:NonlinearVariableName

    Controllable:No

    Description:If supplied, the system checks for available pressure variable. Otherwise, it is created within the action.

  • velocity_variableIf supplied, the system checks for available velocity variables. Otherwise, they are created within the action.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If supplied, the system checks for available velocity variables. Otherwise, they are created within the action.

External Variable Parameters

  • friction_blocksThe blocks where the friction factors are applied to emulate flow resistances.

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The blocks where the friction factors are applied to emulate flow resistances.

  • friction_coeffsThe friction coefficients for every item in 'friction_types'. Note that if 'porous_medium_treatment' is enabled, the coefficients already contain a velocity multiplier but they are not multiplied with density yet!

    C++ Type:std::vector<std::vector<std::string>>

    Controllable:No

    Description:The friction coefficients for every item in 'friction_types'. Note that if 'porous_medium_treatment' is enabled, the coefficients already contain a velocity multiplier but they are not multiplied with density yet!

  • friction_typesThe types of friction forces for every block in 'friction_blocks'.

    C++ Type:std::vector<std::vector<std::string>>

    Controllable:No

    Description:The types of friction forces for every block in 'friction_blocks'.

Friction Control Parameters

  • initial_pressure1e5The initial pressure, assumed constant everywhere

    Default:1e5

    C++ Type:FunctionName

    Controllable:No

    Description:The initial pressure, assumed constant everywhere

  • initial_scalar_variablesInitial values of the passive scalar variables.

    C++ Type:std::vector<FunctionName>

    Controllable:No

    Description:Initial values of the passive scalar variables.

  • initial_temperature300The initial temperature, assumed constant everywhere

    Default:300

    C++ Type:FunctionName

    Controllable:No

    Description:The initial temperature, assumed constant everywhere

  • initial_velocity1e-15 1e-15 1e-15 The initial velocity, assumed constant everywhere

    Default:1e-15 1e-15 1e-15

    C++ Type:std::vector<FunctionName>

    Controllable:No

    Description:The initial velocity, assumed constant everywhere

Initial Condition Parameters

  • mixing_length_aux_execute_onWhen the mixing length aux kernels should be executed.

    C++ Type:ExecFlagEnum

    Options:NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, ALWAYS

    Controllable:No

    Description:When the mixing length aux kernels should be executed.

  • mixing_length_delta1Tunable parameter related to the thickness of the boundary layer.When it is not specified, Prandtl's original unbounded wall distance mixing length model isretrieved.

    Default:1

    C++ Type:double

    Controllable:No

    Description:Tunable parameter related to the thickness of the boundary layer.When it is not specified, Prandtl's original unbounded wall distance mixing length model isretrieved.

  • mixing_length_wallsWalls where the mixing length model should be utilized.

    C++ Type:std::vector<BoundaryName>

    Controllable:No

    Description:Walls where the mixing length model should be utilized.

  • turbulent_prandtl1Turbulent Prandtl number for energy turbulent diffusion

    Default:1

    C++ Type:double

    Controllable:No

    Description:Turbulent Prandtl number for energy turbulent diffusion

  • von_karman_const0.41Von Karman parameter for the mixing length model

    Default:0.41

    C++ Type:double

    Controllable:No

    Description:Von Karman parameter for the mixing length model

  • von_karman_const_00.09'Escudier' model parameter

    Default:0.09

    C++ Type:double

    Controllable:No

    Description:'Escudier' model parameter

Turbulence Parameters

  • passive_scalar_coupled_sourceCoupled variable names for the sources used for the passive scalar fields.

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:Coupled variable names for the sources used for the passive scalar fields.

  • passive_scalar_coupled_source_coeffCoupled variable multipliers for the sources used for the passive scalar fields.

    C++ Type:std::vector<double>

    Controllable:No

    Description:Coupled variable multipliers for the sources used for the passive scalar fields.

  • passive_scalar_diffusivityFunctor names for the diffusivities used for the passive scalar fields.

    C++ Type:std::vector<MooseFunctorName>

    Controllable:No

    Description:Functor names for the diffusivities used for the passive scalar fields.

  • passive_scalar_namesVector containing the names of the advected scalar variables.

    C++ Type:std::vector<NonlinearVariableName>

    Controllable:No

    Description:Vector containing the names of the advected scalar variables.

  • passive_scalar_schmidt_numberSchmidt numbers used for the passive scalar fields.

    C++ Type:std::vector<double>

    Controllable:No

    Description:Schmidt numbers used for the passive scalar fields.

  • passive_scalar_sourceFunctor names for the sources used for the passive scalar fields.

    C++ Type:std::vector<MooseFunctorName>

    Controllable:No

    Description:Functor names for the sources used for the passive scalar fields.

Passive Scalar Control Parameters