The navierStokesViscousOperator computes the viscous stress and thermal conduction terms, with contributions from laminar (and optionally, turbulent) viscosity in the Navier Stokes equations using a conservative least squares interpolation scheme.
USim implements the viscous stress terms in the momentum and total energy equations in the Navier-Stokes operator using the form:
Here, \(\mathbf{w}\) is the primitive state vector, \(\mathbf{u}\) is the fluid velocity, \(\mu\) is the laminar viscosity, \(\mu_{\mathrm{turb}}\) is the turbulent viscosity, \(\rho\) is the fluid density and \(k\) is the local local turbulent kinetic energy. The laminar viscosity can be computed through (e.g.) Sutherland’s law:
where \(\mu_0 = 1.716 \times 10^{-5} \mathrm{kg} \; (\mathrm{ms} )^{-1}\), \(T_0 = 491.6R\), \(S = 198.6R\).
USim implements the thermal conduction terms in the total energy equation in the Navier-Stokes operator using the form:
where \(\kappa\) and \(\kappa_{\mathrm{turb}}\) are the laminar and turbulent heat conductivity, which can be modelled through:
where \(c_p\) is the heat capacity at constant pressure and \(\mathrm{Pr}\) and \(\mathrm{Pr}_\mathrm{turb}\) are the laminar and turbulent Prandtl numbers.
in
(string vector, required)Defined by the choice of the enableThermal
, enableViscous
, and enableTurbulence
flags defined below in the Parameters section. Input variables must be in the order listed below. The rules for the which arrays should be included in the vector are as follows:
fluid velocity
: required if enableViscous = true or enableTurbulence = truetotal viscosity
: required if enableViscous = true or enableTurbulence = truefluid temperature
: required if enableThermal = true or enableTurbulence = truetotal thermal conductivity
: required if enableThermal = true or enableTurbulence = trueturbulence model
: required if enableTurbulence = trueturbulence viscosity
: required if enableTurbulence = trueNote
If enableTurbulence is true and enableViscous is false, then enableTurbulence has no effect.
If enableTurbulence and enableThermal don’t impact each other algorithmically.
If enableTurbulence is true, then the input variables are required to be present.
Fluid velocity
(nodalArray, 3-components, optional)Total viscosity
(nodalArray, 1-components, optional)Fluid Temperature
(nodalArray, 1-components, optional)Total thermal conductivity
(nodalArray, 1-components, optional)Turbulence model
(nodalArray, 1-components, optional)Required if enableTurbulence = true. One of:
Turbulent kinetic energy density
\(\rho k - \rho \epsilon\)
Turbulent kinetic energy density dissipation rate
\(\rho k - \rho \omega\)
Turbulent viscosity
(nodalArray, 1-components, optional)out
(string vector, required)Vector of Fluxes
(nodalArray, 4-components)The navierStokesViscousOperator updater accepts the parameters below, in addition to those required by Updater:
orderAccuracy
(integer, required)numberOfInterpolationPoints
(integer, required)Number of points to be considerd for the least squares fit. This parameter varies from mesh to mesh and should be determined by computing a known function on the mesh.
The numberOfInterpolationPoints must be greater than (or equal to) the number of coefficients in the polynomial approximation. This means that in 1d the value is 4, in 2D the value is at least 6 and in 3D the value is at least 10.
These choices do not guarantee that a matrix inverse will be found. The following values though appear to be adequate in general: in 1D 4; in 2D 8 and in 3D 20.
coefficient
(float, required)enableThermal
(boolean, optional)enableViscous
(boolean, optional)enableTurbulence
(boolean, optional)<Updater computeViscousSource>
kind = navierStokesViscousOperator2d
onGrid = domain
coefficient = 1.0
numberOfInterpolationPoints = 8
orderAccuracy = 2
enableThermal = false
enableViscous = true
in = [velocity, dynamicViscosity, temperature, thermalCoefficient]
out = [viscousSource]
</Updater>
<Updater computeViscousSource>
kind = navierStokesViscousOperator2d
onGrid = domain
isRadial = true
coefficient = 1.0
numberOfInterpolationPoints = 8
enableThermal = false
enableViscous = true
enableTurbulence = true
temperatureIndex = 0
in = [velocity, totalVisc, avgTemp, totalCond, kEpsilon, turbulentViscosity]
out = [viscousSource]
</Updater>