Simulation of Turbulent Flows
In this section, we describe the capabilities within Stream for simulating turbulent flows. Stream contains a variety of turbulence models that are suitable for both steady-state and unsteady turbulent flow analysis. Here we assume that the user has a sufficient understanding of the terminology used in the description of turbulent flows and knowledge of the various analytical turbulence closure models that are employed in the CFD field. For a more comprehensive description of the governing equations of turbulent flow and the specific turbulence models used in Stream, see [Pope2000] as well as the Stream Theory Manual.
RANS Models
Stream contains a selection of Reynolds-Averaged Navier-Stokes (RANS) turbulence models from both the k-epsilon and k-omega families. The governing assumptions behind the derivation of these models generally limits their accurate predictive capability to relatively benign turbulent flow scenarios in which flows remain predominantly attached to the walls of the domain (no separation). Mean-flow properties of separated flows (such as drag coefficients) can be accurately predicted, including for flows with massive separation under certain conditions (i.e., post-transition, supercritical turbulence), however, the prediction of intermittent and transitional behavior of flows cannot be predicted with these models. The paper of Hart [Hart2016] contains a detailed comparison of RANS turbulence models and Scale Resolving Simulation (SRS) models (which includes the DES and LES models to be discussed later in this chapter), regarding their predictive capability for massively separated flow. This information may be of use in helping users decide whether RANS models are applicable to their problems of interest.
One major addition to the run control file for turbulent flow is the
variable turbulenceEquationOptions
. This variable is used for specifying
the turbulence model, the relaxation and linear solver parameters for
the turbulence equations and any other auxiliary input required by the
turbulence models. Turbulence model selection is made using the model
option. The table below shows the allowable values for this option for RANS
simulations.
Freestream values for the turbulence variables may be set using the
kFreestream
, omegaFreestream
and epsilonFreestream
variables. These
variables are commonly set to the same values that have been specified
at the inlet boundary and have default values of 1.0e-08, 10.0 and 10.0,
respectively. These variables are only used to ensure that the computed
turbulence values remain realizable (i.e. k, omega, epsilon > 0) and
will have no impact on the final solution unless clipping of the
turbulent variables is occurring.
Model Family |
Model Names |
Notes |
---|---|---|
k-\(\epsilon\) |
|
|
k-\(\omega\) BSL |
|
|
k-\(\omega\) SST |
|
|
k-\(\omega\)-SST-2003 |
|
|
DES Models
While the RANS models described above may be used in an unsteady mode with small time step to simulate complex turbulence flows with separation and bluff-body-type recirculation zones, they are generally found to be lacking for these flows. Typically, in zones of separation, one expects to find a collection of eddies that span a range of length scales, from the largest energy-containing eddies to the smallest dissipative eddies of the turbulence cascade. However, due to the modeling assumptions made during closure of the ensemble-averaged equations, solutions for separated flows are almost universally found to exhibit a time-averaged character, whereby small-scale eddy content is severely diminished or even completely absent, and the point-by-point frequency spectrum is devoid of any chaotic or high-frequency content. To provide a remedy for this deficiency, Stream provides several turbulence models in the Detached-Eddy Simulation (DES) family, which can be used to simulate turbulent flows with significant separation. While the analytical formulation these models is not based on the strict filtering process used in the traditional Large-Eddy Simulation (LES) approach, these DES models provide turbulent solutions that are similar in character to LES models and are thought of most conveniently as hybrid models that blend the characteristics of LES in separated an interior region while transitioning to traditional Unsteady RANS (URANS) behavior in the near-wall region. A great discussion about detached eddy simulation methodology can be found here.
A Brief DES History
A brief history of DES family of models is presented below for readers who may be interested in the evolution of the DES models.
Reference |
Main Features |
Comments |
---|---|---|
Spalart 1997 |
|
|
Shur 1999 |
|
|
Travin 2000 |
|
|
Nitkin 2000 |
|
|
Strelets 2001 |
|
|
Menter and Kuntz 2002 |
|
|
Spalart 2006 |
|
|
Shur 2008 & Travin 2006 |
|
|
Gritskevich & Menter 2012 |
|
|
Activating DES Mode
To active DES mode in Stream, the user should provide an addition
option in the turbulenceEquationOptions
options list of the form
des=<ModelName>
. An example is shown below.
turbulenceEquationOptions: <model=menterSST2003, des=IDDES2012, linearSolver=SGS, relaxationFactor=0.5, maxIterations=5>
The table below shows the allowable values for the des option for running simulations with DES.
Model Value |
Description |
---|---|
|
2001 Strelets DES model [Stre2001] |
|
Menter Delayed DES model [MeKu2002] |
|
2012 SST-DDES model [GGSM2012] |
|
Improved 2012 SST-IDDES model [GGSM2012] |
A recommended combination is the menterSST2003
turbulence model with the
IDDES2012
des model. For cases that experience numerical instability, try the DDES2012
des option.
Example Case: Backward Step
Consider the case of a compressible turbulent flow over a backward step as shown in Figure 8. For this case, the fluid in the domain is air. Details about the problem and grid and run control file can be found on our website.
In this example a turbulent flow of air at around 537 Rankine (298 Kelvin) is moving at 41.7 m/s and it passes over a sudden drop. This drop causes the flow to create a circulating region near the drop. The size and character of this recirculation bubble is the subject of the backward step problem. The RANS solution of the flow field is what will be solved for in this example.
When running turbulent simulations, most of the run control file inputs described in previous chapters remain the same, with minor changes. Some additional input required for the specification of data needed for the governing turbulence equations is required. A sample run control file used to run the backward step simulation is shown below.
{
grid_file_info: <file_type=VOG, Lref=1m, pieSlice>
boundary_conditions: <
BC_1=noslip(adiabatic), //Upstream Bottom Wall
BC_2=noslip(adiabatic), // Top Wall
BC_3=subsonicInlet(T=537.0 R, v=41.7096 m/s, k=0.00097, omega=5091), //Inlet
BC_5=symmetry, //Backwall
BC_6=symmetry, // Frontwall
BC_13=noslip(adiabatic), // Bottom of Downstream section
BC_15=noslip(adiabatic), // Vertical Step Face
BC_22=fixedPressureOutlet(pMean=1.0 atm), // Outlet
>
initialCondition: <p=1 atm, T=537.0 R, v=41.7096 m/s, k=0.00097, omega=5091>
// Flow properties
flowRegime: turbulent
flowCompressibility: compressible
// Gas model.
chemistry_model: air_1s0r
transport_model: const_viscosity
mu: 2.498e-5
kcond: 4.175e-2
// Time-stepping
timeIntegrator: BDF
timeStep: 1e-3
numTimeSteps: 10001
convergenceTolerance: 1.0e-30
maxIterationsPerTimeStep: 30
// InviscidFlux
inviscidFlux: SOU
turbulenceInviscidFlux: SOU
limiter: venkatakrishnan
linearSolverTolerance: 1.0e-02
// Momentum equation (linearSolver[SGS,PETSC],0.0<relaxationFactor<1.0)
momentumEquationOptions: <linearSolver=SGS,relaxationFactor=0.5,maxIterations=5>
// Pressure equation
pressureCorrectionEquationOptions: <linearSolver=PETSC,relaxationFactor=0.1,maxIterations=50>
pressureBasedMethod: SIMPLEC
// Energy equation (linearSolver[SGS,PETSC],0.0<relaxationFactor<1.0)
energyEquationOptions: <linearSolver=SGS,relaxationFactor=0.5,maxIterations=5,form=temperature>
// Turbulence equation
turbulenceEquationOptions: <model=menterSST2003, linearSolver=SGS, relaxationFactor=0.5, maxIterations=5>
kFreestream: 0.00097
omegaFreestream: 5091
eddyViscosityLimit: 10000
// Printing, plotting and restart parameters.
print_freq: 250
plot_freq: 2000
plot_output: a, pResidualTT, laminarViscosity, viscosityRatio, k, omega
restart_freq: 2000
}
Boundary Conditions
All boundary condition entries remain the same except for the inlet
boundary, where one must now specify inlet values for the turbulent
kinetic energy, k
, and either the turbulent dissipation, epsilon
, or the
specific turbulent dissipation, omega
. Since we are using a model in the
k-omega family for this example, omega
must be provided.
The boundary condition used for the inflow in this turbulent example is
the subsonicInlet
. This boundary condition is like the one used for
compressible flows with the addition of turbulence parameters.
See the following Appendix for more information about this boundary condition.
BC_3=subsonicInlet(T=537.0 R, v=41.7096 m/s, k=0.00097, omega=5091)
The boundary condition requires two turbulence parameters, k
and omega`
.
The choice of turbulence inputs depends on the model that is selected in
the turbulenceEquationOptions
variable. More details can be found in the Appendix
regarding the turbulenceEquationOptions
variable. The outlet is a
fixedPressureOutlet
with a mean pressure constraint set on it as shown
below.
BC_22=fixedPressureOutlet(pMean=1.0 atm)
All solid surfaces are set to noslip(adiabatic)
because of the viscous
nature of the flow. The keyword adiabatic
must be passed to the noslip
boundary condition for compressible flow simulations. More details on
the noslip
boundary condition can be found in the following Appendix. The front and back
(going into the page) boundaries are set to symmetry
to model zero
variation in the flow field in the z-direction. A small section of the
domain upstream is set to symmetry
near the inlet because the backward
step is a canonical validation problem provided by the NASA Langley
turbulence modeling resource.
Initial Conditions
In this example the initial flow is a flow of air, already in motion, with a pressure of 1 atm, a temperature of 537 Ranine, and a velocity of 41.7096 m/s, which is specified as follows:
initialCondition: <p=1 atm, T=537.0 R, v=41.7096 m/s, k=0.00097, omega=5091>
Depending on the turbulence model selected for the
turbulenceEquationOptions
like the options shown in the RANS options table, the name of
the turbulence variable provided in the initial condition will change
(will either be omega
or epsilon
).
Transport Properties
For this case, the fluid is air, and the viscosity and thermal
conductivity are set to be constant values that are selected to model
the typical values for air at the temperature and pressure of the
example case under consideration. The const_viscosity
value for the
transport_model
option allows for a single value of the viscosity and
thermal conductivity to be set, as shown below.
transport_model: const_viscosity
mu: 2.498e-5
kcond: 4.175e-2
A specification of the species is needed when running compressible
flows. This provides information about the equation of state to use for
the species in the domain. The species information for the air is
encoded in the chemistry model file (.mdl
) file for this case, whose
specification format can be found here. The contents of the file are
reproduced here for ease of replicating this case.
// Model for Air as an ideal gas
species = {
_Air = < m=28.89, n=2.5, href=0, sref=0, Tref=298.0, Pref=10000.0, mf=1.0 >;
};
reactions = {
};
Numerics
For turbulent flows, the user must set the value of the variable
flowRegime
to turbulent in the run control file.
flowRegime: turbulent
In Stream, the inviscid flux used for the turbulence equations may be
set independently from the main inviscid flux used for the momentum,
energy, and species equations by using the turbulenceInviscidFlux
variable. The default value is SOU
, which provides for the second-order
upwinding of the independent variables k, omega and epsilon in the
convection term of the turbulence equations. To achieve second-order
spatial accuracy, one should use a value of SOU
for both inviscidFlux
and turbulenceInviscidFlux
. Under certain extreme flow scenarios,
convergence of the system of equations may be difficult to obtain using
second-order convective fluxes for the turbulence equations, requiring
one to downgrade to first-order upwinding by specifying a value of FOU
for the turbulenceInviscidFlux
variable. This, however, has rarely been
found to be needed in practice.
The first-order accurate BDF
time-stepping scheme and the second-order
inviscidFlux option SOU
are used is used in this example. BDF
is used
because the time-accurate evolution of the flowfield is not of interest,
only the steady state solution is desired.
The momentum, pressure correction, energy, and turbulence closure equations need to be solved for compressible turbulent flows.
The new addition is the turbulenceEquationOptions
which controls the
turbulence model that is used as well as the numerical controls for
solving the turbulence closure equations.
turbulenceEquationOptions: <model=menterSST2003, linearSolver=SGS, relaxationFactor=0.5, maxIterations=5>
The linear solver options are like the other governing equations that
have been previously covered. All linear solvers discussed(here) are
supported for the value of linearSolver, however one should rarely need
to use anything other than the SGS
solver.
This example uses the MenterSST2003
turbulence model, which is a
Reynolds Averaged Navier-Stokes (RANS) model, because that is what the
NASA validation example called for.
Output Variables
The table below shows additional field variables that are available for
output in turbulent flow simulations. NOTE: The variables
kClip
, omegaClip
and epsilonClip
are boolean variables that are
assigned a value of 0 for no clipping and a value of 1.0 when
clipping is active. These are in addition to the field outputs that
are available for the laminar compressible/incompressible
simulations. Default variables are output automatically and do not
need to be specified in the plot_output
line in the run control file.
The variables kResidualTT
, omegaResidualTT
, and epsilonResidualTT
are useful for gauging solution convergence.
Variable |
Description |
Default |
---|---|---|
k |
Turbulent kinetic energy |
No |
kclip |
Turbulent kinetic energy clipped flag |
No |
kResidual |
Turbulent kinetic energy eq. residual |
No |
kResidualTT |
Turbulent kinetic energy eq. turn-over time |
No |
omega |
Specific dissipation rate |
No |
omegaclip |
Specific dissipation rate clipped flag |
No |
omegaResidual |
Specific dissipation rate eq. residual |
No |
omegaResidualTT |
Specific dissipation rate eq. turn-over time |
No |
epsilon |
Turbulent dissipation |
No |
epsilonClip |
Turbulent dissipation clipped flag |
No |
epsilonResidual |
Turbulent dissipation eq. residual |
No |
epsilonResidualTT |
Turbulent dissipation eq. turn-over-time |
No |
viscosityRatio |
Turbulent/laminar viscosity ratio |
No |
eddyViscosity |
Turbulent viscosity |
No |
References
Pope, Turbulent Flows, Cambridge University Press, 2000.
J. Hart, “Comparison of Turbulence Modeling Approaches to the Simulation of a Dimpled Sphere,” Procedia Engineering, vol. 147, pp. 68-73, 2016.
M. Strelets, “Detached Eddy Simulation of Massively Separated Flows,” in 39th AIAA Fluid Dynamics Conference and Exhibit, Reno, 2001.
F. R. Menter and M. Kuntz, “Adaptation of Eddy-Viscosity Turbulence Models to Unsteady Separated Flow Behind Vehicles,” in Lecture Notes in Applied and Computational Mechanics, Springer, Berlin, 2002.
M. S. Gritskevich, A. V. Garbaruk, J. Schütze and F. R. Menter, “Development of DDES and IDDES Formulations for the k-omega Shear Stress Transport Model,” Flow, Turbulence and Combustion, vol. 88, pp. 431-449, 2012.
Launder, B.E.; Spalding, D.B. (March 1974). “The numerical computation of turbulent flows”. Computer Methods in Applied Mechanics and Engineering. vol. 3, issue 2, pp. 269-289
Shih, T.-H.; Liou, W.W.; Shabbir, A.; Yang, Z. (1995). “A new k-ε eddy-viscosity model for high Reynolds number turbulent flows”. Computers & Fluids. vol. 24, issue 3, pp. 227-238