WALE SGS model in OpenFOAM

Last Updated: May 6, 2019

The WALE (Wall-Adapting Local Eddy-viscosity) SGS model is one of the major SGS models. It is an algebraic eddy viscosity model (0-equation model) as with the Smagorinsky SGS model, but it has some excellent features that the Smagorinsky model does not have.

Implementation in OpenFOAM

In the WALE model, the subgrid scale eddy viscosity \(\nu_{sgs}\) is evaluated as
\begin{equation}
\nu_{sgs} = C_{k} \Delta \sqrt{k_{sgs}}, \tag{1} \label{eq:nusgs}
\end{equation}
where \(C_{k}\) is a model constant and \(k_{sgs}\) is the subgrid scale kinetic energy. You can find its definition in this post.

The traceless symmetric part of the square of the velocity gradient tensor \(S^d\) is calculated in the following function.
\begin{eqnarray}
S_{ij}^d = \frac{1}{2} \left( \frac{\partial \overline{u}_k}{\partial x_i}\frac{\partial \overline{u}_j}{\partial x_k} + \frac{\partial \overline{u}_k}{\partial x_j}\frac{\partial \overline{u}_i}{\partial x_k} \right) – \frac{1}{3} \delta_{ij} \frac{\partial \overline{u}_k}{\partial x_l}\frac{\partial \overline{u}_l}{\partial x_k}, \tag{2} \label{eq:sd}
\end{eqnarray}
where \(\delta_{ij}\) is the Kronecker delta.

These tensor operations used above are summarized in the following post:

The subgrid scale kinetic energy \(k_{sgs}\) is
\begin{equation}
k_{sgs} = \left( \frac{C_w^2 \Delta}{C_k} \right)^2 \frac{\left( S_{ij}^d S_{ij}^d \right)^3}{\left( \left( \overline{S}_{ij} \overline{S}_{ij} \right)^{5/2} + \left( S_{ij}^d S_{ij}^d \right)^{5/4} \right)^2}, \tag{3} \label{eq:ksgs}
\end{equation}
where
\begin{equation}
\overline{S}_{ij} = \frac{1}{2} \left( \frac{\partial \overline{u}_{i}}{\partial x_{j}} + \frac{\partial \overline{u}_{j}}{\partial x_{i}}\right), \tag{4} \label{eq:s}
\end{equation}
is the resolved-scale strain rate tensor.

Finally, we can get the following expression by substituting Eq. \eqref{eq:ksgs} into Eq. \eqref{eq:nusgs}:
\begin{eqnarray}
\nu_{sgs} = \left( C_w \Delta \right)^2 \frac{\left( S_{ij}^d S_{ij}^d \right)^{3/2}}{\left( \overline{S}_{ij} \overline{S}_{ij} \right)^{5/2} + \left( S_{ij}^d S_{ij}^d \right)^{5/4}}, \tag{5} \label{eq:nusgs2}
\end{eqnarray}
It is the same as Eq. (13) in [1].

Features
  • Algebraic eddy viscosity model (0-equation model)
  • The rotation rate is taken into account in the calculation of \(\nu_{sgs}\)
  • To be able to handle transition
  • Damping is Not necessary for \(\nu_{sgs}\)ย in the near-wall region
References

[1] F. Nicoud and F. Ducros, Subgrid-scale stress modelling based on the square of the velocity gradient tensor. Flow, Turbulence and Combustion, 62(3), 183-200, 1999.

Final expression of the SGS eddy viscosity is relatively simple and the implementation into OpenFOAM is not so complicated but the process of deriving the expression described in [1] is not easy to understand. I want to develop my SGS model someday ๐Ÿ™‚

Author: fumiya

CFD engineer in Japan

4 thoughts on “WALE SGS model in OpenFOAM”

  1. Hi, fumiya. I am not good at symbolic expression operations, could you tell me how to calculate (S^d_ij)(S^d_ij) or (S_ij)(S_ij) ? Besides, in Eq. (2) (โˆ‚u_k/โˆ‚x_i)(โˆ‚u_j/โˆ‚x_k) should be a Einstein summation convention, but how to understand (โˆ‚u_k/โˆ‚x_l)(โˆ‚u_l/โˆ‚x_k) cuz both the subscripts k and l appear in pairs?
    Thanks.

  2. Hi, I’ve got a question about the implementation into OpenFOAM. I’m currently working with the model and have been going through Nicoud and Ducros’s 1999 FTC paper, where the model for the SGS eddy viscosity is meant to include the effects of the locally filtered strain and rotation rates. Here though, only the locally filtered strain rates are included in the expressions. Is there a reason why the rotation rates are omitted from the implementation, or have I missed something.

    Thanks.

    1. Hi,

      Thank you for your pointed question!
      If we substitute the expression \(\frac{\partial \overline{u}_i}{\partial x_j} = \overline{S}_{ij} + \overline{\Omega}_{ij} \) into Eq. (2),
      we can find the rate of rotation tensor \(\overline{\Omega}_{ij}\) is included in Eq. (2).
      I will update the page tomorrow.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.