Navier Stokes Flow Segregated / WCNSLinearFVFlowPhysics

Define the Navier Stokes weakly-compressible equations with the linear solver implementation of the SIMPLE scheme

Equations

This Physics object creates the kernels and boundary conditions to solve the Navier Stokes equations for the flow using the SIMPLE algorithm. For regular flow in a non-porous medium:

where:

  • is the density

  • is the dynamic viscosity

  • is the velocity (non-porous flow)

  • is the pressure

  • is the gravitational force

The kernels created for the momentum equation for free flow:

The kernels created for free flow for the pressure correction equation:

  • LinearFVAnisotropicDiffusion for the pressure diffusion term

  • LinearFVDivergence for the divergence of . For more information, see SIMPLE.

Automatically defined variables

The WCNSLinearFVFlowPhysics automatically sets up the variables which are necessary for the solution of a given problem. These variables can then be used to couple fluid flow simulations with other physics. The list of variable names commonly used in the action syntax is presented below:

For the default names of other variables used in this action, visit this site.

Coupling with other Physics

Coupling with other Physics has not been implemented for WCNSLinearFVFlowPhysics. Coupling can only be performed at the moment by leveraging MultiApps.

Input Parameters

  • blockBlocks (subdomains) that this Physics is active on.

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

    Controllable:No

    Description:Blocks (subdomains) that this Physics is active on.

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

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

    C++ Type:NonlinearVariableName

    Unit:(no unit assumed)

    Controllable:No

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

  • hydraulic_separator_sidesetsSidesets which serve as hydraulic separators.

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

    Controllable:No

    Description:Sidesets which serve as hydraulic separators.

  • orthogonality_correctionFalseWhether to use orthogonality correction

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to use orthogonality correction

  • solve_for_dynamic_pressureFalseWhether to solve for the dynamic pressure instead of the total pressure

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to solve for the dynamic pressure instead of the total pressure

  • system_namesu_system v_system w_system pressure_system Name of the solver system(s) for the variables. If a single name is specified, that system is used for all solver variables.

    Default:u_system v_system w_system pressure_system

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

    Controllable:No

    Description:Name of the solver system(s) for the variables. If a single name is specified, that system is used for all solver variables.

  • transientsame_as_problemWhether the physics is to be solved as a transient

    Default:same_as_problem

    C++ Type:MooseEnum

    Options:true, false, same_as_problem

    Controllable:No

    Description:Whether the physics is to be solved as a transient

  • verboseFalseFlag to facilitate debugging a Physics

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to facilitate debugging a Physics

Optional 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

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

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

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • define_variablesTrueWhether to define variables if the variables with the specified names do not exist. Note that if the variables are defined externally from the Physics, the initial conditions will not be created in the Physics either.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to define variables if the variables with the specified names do not exist. Note that if the variables are defined externally from the Physics, the initial conditions will not be created in the Physics either.

  • ghost_layers1Number of layers of elements to ghost near process domain boundaries

    Default:1

    C++ Type:unsigned short

    Controllable:No

    Description:Number of layers of elements to ghost near process domain boundaries

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

Advanced 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>

    Unit:(no unit assumed)

    Controllable:No

    Description:The gravitational acceleration vector.

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

    Default:273.15

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Value for reference temperature in case of Boussinesq approximation

  • thermal_expansionalphaThe name of the thermal expansion coefficient in the Boussinesq approximation. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    Default:alpha

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the thermal expansion coefficient in the Boussinesq approximation. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

Gravity Treatment Parameters

  • densityrhoThe name of the density. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    Default:rho

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the density. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • dynamic_viscositymuThe name of the dynamic viscosity. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    Default:mu

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the dynamic viscosity. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

Material Properties Parameters

  • dont_create_aux_kernelsFalseWhether to skip the 'add_aux_kernel' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_aux_kernel' task

  • dont_create_aux_variablesFalseWhether to skip the 'add_aux_variable' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_aux_variable' task

  • dont_create_bcsFalseWhether to skip the 'add_bc' task for each boundary condition type

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_bc' task for each boundary condition type

  • dont_create_correctorsFalseWhether to skip the 'add_correctors' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_correctors' task

  • dont_create_functionsFalseWhether to skip the 'add_function' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_function' task

  • dont_create_icsFalseWhether to skip the 'add_ic' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_ic' task

  • dont_create_kernelsFalseWhether to skip the 'add_kernel' task for each kernel type

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_kernel' task for each kernel type

  • dont_create_materialsFalseWhether to skip the 'add_material' task for each material type

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_material' task for each material type

  • dont_create_postprocessorsFalseWhether to skip the 'add_postprocessors' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_postprocessors' task

  • dont_create_solver_variablesFalseWhether to skip the 'add_variable' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_variable' task

  • dont_create_user_objectsFalseWhether to skip the 'add_user_object' task. This does not apply to UserObject derived classes being created on a different task (for example: postprocessors, VPPs, correctors)

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_user_object' task. This does not apply to UserObject derived classes being created on a different task (for example: postprocessors, VPPs, correctors)

  • dont_create_vectorpostprocessorsFalseWhether to skip the 'add_vectorpostprocessors' task

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to skip the 'add_vectorpostprocessors' task

Reduce Physics Object Creation Parameters

  • flux_inlet_directionsThe directions which can be used to define the orientation of the flux with respect to the mesh. This can be used to define a flux which is incoming with an angle or to adjust the flux direction with respect to the normal. If the inlet surface is defined on an internal face, this is necessary to ensure the arbitrary orientation of the normal does not result in non-physical results.

    C++ Type:std::vector<libMesh::Point>

    Controllable:No

    Description:The directions which can be used to define the orientation of the flux with respect to the mesh. This can be used to define a flux which is incoming with an angle or to adjust the flux direction with respect to the normal. If the inlet surface is defined on an internal face, this is necessary to ensure the arbitrary orientation of the normal does not result in non-physical results.

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

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

    Unit:(no unit assumed)

    Controllable:No

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

Boundary Condition Parameters

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

    C++ Type:std::vector<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'.

  • standard_friction_formulationTrueFlag to enable the standard friction formulation or its alternative, which is a simplified version (see user documentation for PINSFVMomentumFriction).

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Flag to enable the standard friction formulation or its alternative, which is a simplified version (see user documentation for PINSFVMomentumFriction).

Friction Control Parameters

  • include_deviatoric_stressFalseWhether to include the full expansion (the transposed term as well) of the stress tensor

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to include the full expansion (the transposed term as well) of the stress tensor

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

    Default:upwind

    C++ Type:MooseEnum

    Options:average, upwind, sou, min_mod, vanLeer, quick, venkatakrishnan, 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.

  • 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

  • initial_from_file_timestepLATESTGives the time step number (or "LATEST") for which to read the Exodus solution

    Default:LATEST

    C++ Type:std::string

    Controllable:No

    Description:Gives the time step number (or "LATEST") for which to read the Exodus solution

  • initialize_variables_from_mesh_fileFalseDetermines if the variables that are added by the action are initializedfrom the mesh file (only for Exodus format)

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Determines if the variables that are added by the action are initializedfrom the mesh file (only for Exodus format)

Restart From Exodus Parameters

  • initial_pressure1e5The initial pressure, assumed constant everywhere

    Default:1e5

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:The initial pressure, 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>

    Unit:(no unit assumed)

    Controllable:No

    Description:The initial velocity, assumed constant everywhere

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

    C++ Type:NonlinearVariableName

    Unit:(no unit assumed)

    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.

Variables Parameters

  • inlet_boundariesNames of inlet boundaries

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

    Controllable:No

    Description:Names of inlet boundaries

  • momentum_inlet_functorsFunctions for inlet boundary velocities or pressures (for fixed-pressure option). Provide a double vector where the leading dimension corresponds to the number of fixed-velocity and fixed-pressure entries in momentum_inlet_types and the second index runs either over dimensions for fixed-velocity boundaries or is a single function name for pressure inlets. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Functions for inlet boundary velocities or pressures (for fixed-pressure option). Provide a double vector where the leading dimension corresponds to the number of fixed-velocity and fixed-pressure entries in momentum_inlet_types and the second index runs either over dimensions for fixed-velocity boundaries or is a single function name for pressure inlets. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • momentum_inlet_typesTypes of inlet boundaries for the momentum equation.

    C++ Type:MultiMooseEnum

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

    Controllable:No

    Description:Types of inlet boundaries for the momentum equation.

Inlet Boundary Conditions Parameters

  • 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

  • outlet_boundariesNames of outlet boundaries

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

    Controllable:No

    Description:Names of outlet boundaries

  • pressure_functorsFunctions for boundary pressures at outlets. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Functions for boundary pressures at outlets. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

Outlet Boundary Conditions Parameters

  • momentum_wall_functorsFunctors for each component of the velocity value on walls. This is only necessary for the fixed-velocity momentum wall types. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Functors for each component of the velocity value on walls. This is only necessary for the fixed-velocity momentum wall types. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • momentum_wall_typesTypes of wall boundaries for the momentum equation

    C++ Type:MultiMooseEnum

    Options:symmetry, noslip, slip, wallfunction

    Controllable:No

    Description:Types of wall boundaries for the momentum equation

  • wall_boundariesNames of wall boundaries

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

    Controllable:No

    Description:Names of wall boundaries

Wall Boundary Conditions Parameters

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

Incompressible Flow Pressure Constraint Parameters