简介

Spalart-Allmaras (SA)湍流模型由 Spalart 和 Allmaras 提出1,是一个一方程模型,设计初衷是用于航空领域的壁面流。有如下特点:

  • 只需求解一个输运方程,相比其他湍流模型计算速度快。
  • 对逆压梯度问题结果较好。
  • 无法准确模拟自由剪切流,如射流。
  • 无法准确模拟均匀衰减、各项同性湍流。

湍流粘度

SA 模型基于线性涡粘假设,湍流粘度按以下公式计算

$$ \begin{equation} \nu_t = \tilde \nu f_{v1} \end{equation} $$

其中,$\tilde{\nu}$ 为需要通过输运方程求解的量,后面会详细介绍。

$f_{v1}$ 是一个关于湍流粘度比 $\chi$ 的函数,定义如下 $$ \begin{equation} f_{v1} = \frac{\chi^3}{\chi^3 + C_{v1}^3} \end{equation} $$

湍流粘度比定义如下:

$$ \begin{equation} \chi =\tilde{\nu}/\nu \end{equation} $$

输运方程

原始文献中,关于 $\tilde \nu$ 的输运方程表示为以下形式:

$$ \begin{equation} \frac{\partial \tilde{\nu}}{\partial t} = M(\tilde{\nu}) + P(\tilde{\nu}) + D(\tilde{\nu}) + T \end{equation} $$

其中,$M(\tilde{\nu})$ 表示 advection+diffusion:

$$ \begin{equation} M(\tilde{\nu}) = - \nabla \cdot ({\tilde{\nu} \mathbf u}) + \frac{1}{\sigma} \left[ \nabla \cdot \left[ (\nu+\tilde{\nu}) \nabla \tilde{\nu} \right] + C_{b2} (\nabla \tilde{\nu})^2 \right] \end{equation} $$

$P(\tilde{\nu})$ 表示 production:

$$ \begin{equation} P(\tilde{\nu}) = C_{b1} (1 - f_{t2}) \tilde{S} \tilde{\nu} \end{equation} $$

$D(\tilde{\nu})$ 表示 wall destruction:

$$ \begin{equation} D(\tilde{\nu}) = \left(C_{w1} f_w - \frac{C_{b1}}{\kappa^2} f_{t2}\right) \left( \frac{\tilde{\nu}}{d} \right)^2 \end{equation} $$

$T$ 表示 trip function:

$$ \begin{equation} T = f_{t1} \Delta \mathbf{u}^2 \end{equation} $$

通过阅读源代码可知,OpenFOAM 中并未实现 trip function,所以上式中的 $T$ 可忽略。和 trip function 有关的 $f_{t2}$ 均可设为 0。

The model is implemented without the trip-term and hence the ft2 term is not needed.

于是,关于 $\tilde{\nu}$ 的输运方程可以简化为:

$$ \begin{equation} \frac{\partial \tilde{\nu}}{\partial t} + \underbrace{\nabla \cdot ({\tilde{\nu} \mathbf u})}_ % workaround for hugo {\text{advection}} = \underbrace{\frac{1}{\sigma} \left[ \nabla \cdot \left[ (\nu+\tilde{\nu}) \nabla \tilde{\nu} \right] + C_{b2} (\nabla \tilde{\nu})^2 \right]}_ % workaround for hugo {\text{diffusion}} + \underbrace{C_{b1} \tilde{S} \tilde{\nu}}_ % workaround for hugo {\text{production}} - \underbrace{\left(C_{w1} f_w \right) \left( \frac{\tilde{\nu}}{d} \right)^2}_{\text{destruction}} \end{equation} $$

上式即为 OpenFOAM 实际求解的方程,对应的代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    tmp<fvScalarMatrix> nuTildaEqn
    (
        fvm::ddt(alpha, rho, nuTilda_)
      + fvm::div(alphaRhoPhi, nuTilda_)
      - fvm::laplacian(alpha*rho*DnuTildaEff(), nuTilda_)
      - Cb2_/sigmaNut_*alpha*rho*magSqr(fvc::grad(nuTilda_))
     ==
        Cb1_*alpha*rho*Stilda*nuTilda_
      - fvm::Sp(Cw1_*alpha*rho*fw(Stilda)*nuTilda_/sqr(y_), nuTilda_)
      + fvOptions(alpha, rho, nuTilda_)
    );

注意 OpenFOAM 的实现与原始版本不同。

原始文献中,$\tilde{S}$ 的定义如下:

$$ \begin{equation} \tilde{S} \equiv S + \frac{\tilde \nu}{\kappa^2 d^2} f_{v2} \end{equation} $$

OpenFOAM 的实现中,$\tilde{S}$ 的定义如下:

$$ \begin{equation} \tilde{S} = \max \left( \Omega + \frac{\tilde \nu}{\kappa^2 d^2} f_{v2}, C_s \Omega \right) \end{equation} $$

二者的不同之处在于:OpenFOAM 将原始文献中的 $S$ 改为 $\Omega$,并加上了限制器,以保证数值稳定性。

It is necessary to limit the Stilda generation term as the model generates unphysical results if this term becomes negative which occurs for complex flow. Several approaches have been proposed to limit Stilda but it is not clear which is the most appropriate. Here the limiter proposed by Spalart is implemented in which Stilda is clipped at Cs*Omega with the default value of Cs = 0.3.

$S$ 和 $\Omega$ 的定义如下:

$$ \begin{equation} S=\sqrt{2} |\mathbf S|, \quad \mathbf S = \frac{1}{2}\left( \nabla \mathbf u + (\nabla \mathbf u)^T\right) \end{equation} $$

$$ \begin{equation} \Omega = \sqrt 2 |\mathbf \Omega|, \quad \mathbf \Omega = \frac{1}{2}\left( \nabla \mathbf u - (\nabla \mathbf u)^T\right) \end{equation} $$

计算 $\tilde{S}$ 时用到的 $f_{v2}$ 定义如下:

$$ \begin{equation} f_{v2} = 1 - \frac{\chi}{1 + \chi f_{v1}} \end{equation} $$

wall destruction term 中的 $f_{w}$ 定义如下

$$ \begin{align*} f_{w} = g \left( \frac{1 + C_{w3}^6}{g^6 + C_{w3}^6} \right)^{1/6}, \quad g = r + C_{w2}(r^6 - r), \quad r = \min \left( \frac{\tilde \nu}{\tilde S \kappa^2 d^2}, 10 \right) \end{align*} $$

各系数的默认值如下:

$\sigma$ $\kappa$ $C_{b1}$ $C_{b2}$ $C_{w1}$ $C_{w2}$ $C_{w3}$ $C_{v1}$ $C_{s}$
0.66666 0.41 0.1355 0.622 $\displaystyle\frac{C_{b1}}{\kappa^2}+\frac{1+C_{b2}}{\sigma}$ 0.3 2.0 7.1 0.3

参考资料


  1. Spalart, P. R., & Allmaras, S. R. (1994). A one-equation turbulence model for aerodynamic flows. Recherche Aerospatiale, 1, 5–21. ↩︎