Which Turbulence Model Should I Choose for my CFD Application?
Walter Frei | September 16, 2013
COMSOL Multiphysics offers several different formulations for solving turbulent flow problems: the Spalart-Allmaras, k-epsilon, k-omega, Low Reynolds number k-epsilon, and SST models. All of these formulations are available in the CFD Module, and the k-epsilon and Low Reynolds number k-epsilon are available in the Heat Transfer Module. This posting outlines the reasons why we want to use these various turbulence models, how to choose between them, and how to use them effectively. Throughout the post, you’ll find links to relevant models that highlight the features discussed.
Introduction to Turbulence Modeling
Let’s start by considering the flow of a fluid over a flat plate, as shown in the figure below. The uniform velocity fluid hits the leading edge of the flat plate, and a laminar boundary layer begins to develop. The flow in this region is very predictable. After some distance, small chaotic oscillations begin to develop in the fluid field, and the flow begins to transition to turbulence, eventually becoming fully turbulent.
The transition between these three regions can be defined in terms of the Reynolds number, Re=\rho v L/\mu, where \rho is the fluid density, v is the velocity, L is the characteristic length (in this case, the distance from the leading edge), and \mu is the fluid dynamic viscosity. We will assume that the fluid is Newtonian, meaning that the viscosity is constant with respect to shear rate. This is true, or very nearly so, for a wide range of fluids of engineering importance, such as air or water. Density can vary with respect to pressure, although it is assumed that the fluid is only weakly compressible, meaning that the Mach number is less than about 0.3.
In the laminar regime, the flow of the fluid can be completely predicted by solving the steady-state Navier-Stokes equations, which predict the velocity and the pressure fields. We can assume that the velocity field does not vary with time, and get an accurate prediction of the flow behavior. An example of this is outlined in the model The Blasius Boundary Layer. As the flow begins to transition to turbulence, chaotic oscillations appear in the flow, and it is no longer possible to assume that the flow is invariant with time. In this case, it is necessary to solve the problem in the time domain, and the mesh used must be fine enough to resolve the size of the smallest eddies in the flow. Such a situation is demonstrated in the example model Flow Past a Cylinder. Steady-state and transient laminar problems can be solved both with COMSOL Multiphysics alone, as well as along with the Microfluidics Module, which has additional boundary conditions applicable for flow in very small channels.
As the Reynolds number increases, the flow field exhibits small eddies, and the timescales of the oscillations become so short that it is computationally unfeasible to solve the Navier-Stokes equations. In this flow regime, we can use a Reynolds-Averaged Navier-Stokes (RANS) formulation, which is based on the observation that the flow field (u) over time contains small, local oscillations (u’) that can be treated in a time-averaged sense (U). As a consequence, we add additional unknowns to the system of equations and introduce approximations for the flow field at the walls.
The turbulent flow near a flat wall can be divided up into four regimes. At the wall, the fluid velocity is zero, and for a thin layer above this, the flow velocity is linear with distance from the wall. This region is called the viscous sublayer, or laminar sublayer. Further away from the wall is a region called the buffer layer. In the buffer region, the flow begins to transition to turbulent, and it eventually transitions to a region where the flow is fully turbulent and the average flow velocity is related to the log of the distance to the wall. This is known as the log-law region. Even further away from the wall, the flow transitions to the free-stream region. The viscous and buffer layers are very thin, and if the distance to the end of the buffer layer is \delta, then the log-law region will extend about 100\delta away from the wall.
It is possible to use a RANS model to compute the flow field in all four of these regimes. However, since the thickness of the buffer layer is so small, it can be advantageous to use an approximation in this region. Wall functions ignore the flow field in the buffer region, and analytically compute a non-zero fluid velocity at the wall. By using a wall function formulation, you assume an analytic solution for the flow in the viscous layer, and the resultant models will have significantly lower computational requirements. This is a very useful approach for many practical engineering applications.
If you need a level of accuracy beyond what the wall function formulations provide, then you will want to consider a turbulence model that solves the entire flow regime. For example, you may want to compute lift and drag on an object, or compute the heat transfer between the fluid and the wall.
If you are solving any kind of problem where the flow is not fully turbulent, such as a free convection problem, you will need to resolve the flow to the wall, and should not use wall functions.
About the Various Turbulence Models
The five RANS turbulence models differ in their usage of wall functions, the number of additional variables solved for, and what these variables represent. All of these models augment the Navier-Stokes equations with an additional turbulent viscosity term, but they differ in how it is computed.
The Spalart-Allmaras model adds a single additional variable for a Spalart-Allmaras viscosity and does not use any wall functions; it solves the entire flow field. The model was originally developed for aerodynamics applications and is advantageous in that it solves for only a single additional variable. This makes it less memory-intensive than the other models that solve the flow field in the buffer layer. Experience shows that this model does not accurately compute fields that exhibit shear flow, separated flow, or decaying turbulence. Its advantage is that it is quite stable and shows good convergence.
The k-epsilon model solves for two variables: k; the turbulent kinetic energy, and epsilon; the rate of dissipation of kinetic energy. Wall functions are used in this model, so the flow in the buffer region is not simulated. The k-epsilon model is very popular for industrial applications due to its good convergence rate and relatively low memory requirements. It does not very accurately compute flow fields that exhibit adverse pressure gradients, strong curvature to the flow, or jet flow. It does perform well for external flow problems around complex geometries. For example, the k-epsilon model can be used to solve for the airflow around a bluff body.
The k-omega model is similar to k-epsilon, instead however, it solves for omega — the specific rate of dissipation of kinetic energy. It also uses wall functions and therefore has comparable memory requirements. It has more difficulty converging and is quite sensitive to the initial guess at the solution. Hence, the k-epsilon model is often used first to find an initial condition for solving the k-omega model. The k-omega model is useful in many cases where the k-epsilon model is not accurate, such as internal flows, flows that exhibit strong curvature, separated flows, and jets. A good example of internal flow is flow through a pipe bend.
Low Reynolds Number k-epsilon
The Low Reynolds number k-epsilon is similar to the k-epsilon model but does not use wall functions; it solves the flow everywhere. It is a logical extension to k-epsilon and shares many of its advantages, but uses more memory. It is often advisable to use the k-epsilon model to first compute a good initial condition for solving the Low Reynolds number k-epsilon model. Since it does not use wall functions, lift and drag forces and heat flux can be modeled with higher accuracy.
Finally, the SST model is a combination of the k-epsilon in the free stream and the k-omega models near the walls. It does not use wall functions and tends to be most accurate when solving the flow near the wall. The SST model does not always converge to the solution quickly, so the k-epsilon or k-omega models are often solved first to give good initial conditions. In an example model, the SST model solves for flow over a NACA 0012 Airfoil, and the results are shown to compare well with experimental data.
Solving for any kind of fluid flow problem — laminar or turbulent — is computationally intensive. Relatively fine meshes are required and there are many variables to solve for. Ideally, you would have a very fast computer with many gigabytes of RAM to solve such problems, but simulations can still take hours or days for larger 3D models. Therefore, we want to use as simple of a mesh as possible, while still capturing all of the details of the flow.
Referring back to the figure at the top, we can observe that for the flat plate (and for most flow problems) the velocity field changes quite slowly in the direction tangential to the wall, but quite rapidly in the normal direction, especially if we consider the buffer layer region. This observation motivates the use of a boundary layer mesh. Boundary layer meshes (which are the default mesh type on walls when using our physics-based meshing) insert thin rectangles in 2D, or triangular prisms in 3D, at the walls. These high aspect ratio elements will do a good job of resolving the variations in the flow speed normal to the boundary, while reducing the number of calculation points in the direction tangential to the boundary.
The boundary layer mesh (magenta) around an airfoil and the surrounding triangular mesh (cyan) for a 2D mesh.
The boundary layer mesh (magenta) around a bluff body and the surrounding tetrahedral
mesh (cyan) for a 3D volumetric mesh.
Evaluating the Results of Your Turbulence Model
Once you’ve used one of these turbulence models to solve your flow simulation, you will want to verify that the solution is accurate. Of course, as you do with any finite element model, you can simply run it with finer and finer meshes and observe how the solution changes with increasing mesh refinement. Once the solution does not change to within a value you find acceptable, your simulation can be considered converged with respect to the mesh. However, there are additional values you need to check when modeling turbulence.
When using wall function formulations, you will want to check the wall lift-off in viscous units (this plot is generated by default). This value tells you if your mesh at the wall is fine enough, and should be 11.06 everywhere. If the mesh resolution in the direction normal to the wall is too coarse, then this value will be greater than 11.06 and you should use a finer boundary layer mesh in these regions. The second variable that you should check when using wall functions is the wall resolution in length units. This variable is related to the assumed thickness of the viscous layer, and should be small relative to the surrounding dimensions of the geometry. If it is not, then you should refine the mesh in these regions as well.
The regions where the wall lift-off is greater than 11.06 require a finer mesh.
When solving in the viscous and buffer layer, check the dimensionless distance to cell center (also generated by default). This value should be less than 0.5 everywhere. If it is not, then refine the mesh in these regions.
This post has discussed the various turbulence models available in COMSOL Multiphysics, and when and why you should use each of them. The real strength of the software is when you want to combine your fluid flow simulations with other physics, such as finding stresses on a solar panel in high winds, forced convection modeling in a heat exchanger, or mass transfer in a mixer, among other possibilities.
Starting Small with Sonar Dome Design