Which Turbulence Model Should I Choose for My CFD Application?

Walter Frei September 16, 2013
Share this on Facebook Share this on Twitter Share this on Google+ Share this on LinkedIn

COMSOL Multiphysics offers several different formulations for solving turbulent flow problems: the L-VEL, yPlus, 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 L-VEL, yPlus, k-epsilon, and Low Reynolds number k-epsilon are available in the Heat Transfer Module. Learn about why we want to use these various turbulence models, how to choose between them, and how to use them effectively, with links to relevant models included.

Introduction to Turbulence Modeling

Editor’s note: COMSOL Multiphysics® version 5.3 has introduced some significant changes to turbulence modeling capabilities. To learn more about this new functionality, see the Release Highlights page for the CFD Module.

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.

Flow of a fluid across a flat plate.

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 The Blasius Boundary Layer tutorial model. 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 Flow Past a Cylinder tutorial model. 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.

Modeling fluid flow with a Reynolds-averaged Navier-Stokes (RANS) formulation.

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.

Wall Functions

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.

The four regimes of turbulent flow: the viscous sublayer, buffer layer, log-law region, and free-stream flow region.

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

Using a wall function formulation in a turbulence model.

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

Editor’s note: This blog post has been updated to include information on the L-VEL and yPlus models that were added in COMSOL Multiphysics version 5.0, released on 10/31/2014.

L-VEL and yPlus

The L-VEL and yPlus algebraic turbulence models compute the turbulent viscosity, based only on the local fluid velocity and the distance to the closest wall; they do not solve for additional variables. These models solve the flow everywhere and are the most robust and least computationally intensive of the seven turbulence models. While they are generally the least accurate models, they do provide good approximations for internal flow, especially in electronic cooling applications.


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, but it solves for omega — the specific rate of dissipation of kinetic energy. It also uses wall functions and therefore has comparable memory requirements. Additionally, 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 a tutorial model example, the SST model solves for flow over a NACA 0012 Airfoil. The results are shown to compare well with experimental data.

Meshing Considerations

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.

Boundary layer mesh in a 2D mesh.
The boundary layer mesh (magenta) around an airfoil and the surrounding triangular mesh (cyan) for a 2D mesh.

Tetrahedral boundary layer mesh for a 3D volumetric 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 lift-off (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.

Using wall function formulations to evaluate the results of a turbulence model.
The regions where the wall lift-off in viscous units 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 of order unity everywhere and less than 0.5 for the Low Reynolds number k-epsilon model. If it is not, then refine the mesh in these regions.

Concluding Thoughts

This post has discussed the various turbulence models available in COMSOL Multiphysics, highlighting 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.

If you are interested in using the COMSOL software for your computational fluid dynamics (CFD) and multiphysics simulations, or if you have a question that isn’t addressed here, please contact us.


Post Tags

Technical Content


  1. Nagi Elabbasi September 18, 2013   9:44 am

    That was very informative, thank you. Modeling turbulence accurately is not easy, so it’s good to see the COMSOL features and capabilities available for that purpose.

  2. Franco Cerna October 5, 2013   11:48 am

    Someone could hang a video tutorial on turbulent flows?

  3. Mustafa Abd El-Mageed November 9, 2013   7:11 am

    Can we use turbulent model type in FSI Physics in comsol 4.2a ? as the turbulent model consider the solid domain belong to the fluid and makes error message

    Failed to evaluate variable.
    - Variable: mod1.epx
    - Geometry: 1
    - Domain: 2 3 4 5

    and all domains 2 3 4 5 are solids ?

  4. Zaid B. Jildeh December 2, 2014   8:40 am

    Thank you, this post helped me a lot to understand the nature of my system.
    Thank to Comsol for updating the turbulent models, the new models in v.5.0 are very stable and fast to solve time-dependent response.

  5. Angelo Fonseca January 25, 2017   5:17 pm

    How can you determine if the boundary layer mesh has the correct total thickness to resolve all the velocity profile from the no-slip wall to the freestream velocity?

  6. Walter Frei February 2, 2017   12:41 pm

    Hello Angelo,

    I believe that what you’re asking about here is a mesh refinement study:

Loading Comments...