斯马戈林斯基模型——理论与控制方程

分类: 流体解析(CFD) | 综合版 2026-04-06
CAE visualization for smagorinsky model theory - technical simulation diagram
Smagorinskyモデル -- 理論と支配方程式

理论与物理

Smagorinsky模型概述

🧑‍🎓

老师,Smagorinsky模型是最基本的SGS模型对吧?


🎓

是的。这是Joseph Smagorinsky在1963年为大气环流模型提出的,可以说是LES中SGS模型的鼻祖。其思路很简单,就是根据局部应变率大小和滤波宽度来计算SGS涡粘性。


基本公式推导

🧑‍🎓

具体的数学公式是怎样的呢?


🎓

在Smagorinsky模型中,SGS涡粘性 $\nu_{sgs}$ 定义如下。


$$ \nu_{sgs} = (C_s \Delta)^2 |\bar{S}| $$

其中 $C_s$ 是Smagorinsky常数,$\Delta$ 是滤波宽度,$|\bar{S}|$ 是滤波后应变率张量的大小。


$$ |\bar{S}| = \sqrt{2\bar{S}_{ij}\bar{S}_{ij}} $$

$$ \bar{S}_{ij} = \frac{1}{2}\left(\frac{\partial \bar{u}_i}{\partial x_j} + \frac{\partial \bar{u}_j}{\partial x_i}\right) $$

🧑‍🎓

从量纲分析来看也是吻合的。$\nu_{sgs}$ 的量纲是 $[长度^2/时间]$,$(C_s \Delta)^2$ 是 $[长度^2]$,$|\bar{S}|$ 是 $[1/时间]$。


🎓

你注意到了关键点。实际上,这个模型也可以解释为混合长度理论的LES版本。它与RANS中的Prandtl混合长度理论 $\nu_t = l_m^2 |S|$ 具有相同的结构,只是将混合长度 $l_m$ 替换为滤波宽度 $C_s \Delta$。


Smagorinsky常数 $C_s$ 的值

🧑‍🎓

$C_s$ 的值是如何确定的呢?


🎓

根据Lilly的理论分析(1967年),假设各向同性湍流并与Kolmogorov能谱 $E(k) = C_K \varepsilon^{2/3} k^{-5/3}$ 保持一致,则


$$ C_s = \frac{1}{\pi}\left(\frac{2}{3C_K}\right)^{3/4} \approx 0.17 $$

(其中 $C_K \approx 1.6$)。但在实际应用中,通常使用 $C_s = 0.1$ 到 $0.2$ 的范围。


🧑‍🎓

也就是说,最优值会随着流动情况而变化吗?


🎓

是的。对于各向同性湍流,$C_s \approx 0.17$ 是合适的,但对于剪切流,如果不将 $C_s$ 减小到约 $0.1$ 左右,就会产生过度的耗散。在壁面附近则需要更小的值,通常使用Van Driest衰减函数使壁面处 $C_s \to 0$。


$$ C_s \to C_s \left(1 - e^{-y^+/A^+}\right) $$

这里 $A^+ \approx 25$。这个“需要根据流动情况调整 $C_s$”的缺点,正是动态Smagorinsky模型开发的动机。


Smagorinsky模型的优缺点

🧑‍🎓

能总结一下优缺点吗?


🎓
优点缺点
实现极其简单$C_s$ 是问题依赖的参数
计算成本低壁面附近过度耗散(需要Van Driest衰减)
数值稳定(总是 $\nu_{sgs} \geq 0$)层流/转捩区域也会产生耗散(只要 $\bar{S}\neq 0$ 则 $\nu_{sgs} > 0$)
历史悠久,验证案例丰富无法表现逆能量级串(backscatter)
Coffee Break 闲谈

Smagorinsky模型诞生的原因——气象预报的计算成本问题

Joseph Smagorinsky在1963年发表的论文,最初是为了数值天气预报的研究。当时,要解析比大气大循环模型网格更小尺度的所有湍流,在计算上是不可能的。于是产生了“用小尺度的局部涡粘性效应来代表小尺度效果”的想法。Smagorinsky常数 $C_s \approx 0.17$ 是根据大气边界层数据校准得到的值,将其直接用于发动机或建筑风环境分析,原本是有些牵强的。

各项的物理意义
  • 时间项 $\partial(\rho\phi)/\partial t$:想象一下打开水龙头的瞬间。最初水流会不稳定地喷溅,过一会儿才会变成稳定的水流对吧?描述这个“变化过程中”的就是时间项。心脏搏动导致血流脉动,发动机阀门每次开闭导致流动变化,这些都是非定常现象。那么定常分析是什么?就是只看“经过足够长时间流动稳定之后”——也就是将此项设为零。计算成本会大幅下降,因此先用定常求解是CFD的基本策略。
  • 对流项 $\nabla \cdot (\rho \mathbf{u} \phi)$:把落叶扔进河里会怎样?会被水流带着往下游漂对吧。这就是“对流”——流体的运动搬运物体的效果。暖风的暖流能到达房间的另一端,也是因为空气这个“搬运工”通过对流输送热量。这里有趣的是——这项包含了“速度×速度”,因此是非线性的。也就是说,流速变快时此项会急剧增强,变得难以控制。这就是湍流的根本原因。常见的误解:“对流和传导差不多”→ 完全不一样!对流是流动搬运,传导是分子传递。效率有天壤之别。
  • 扩散项 $\nabla \cdot (\Gamma \nabla \phi)$:有过在咖啡里倒入牛奶后放置不管的经历吗?即使不搅拌,过一会儿也会自然混合对吧。那就是分子扩散。那么下一个问题——蜂蜜和水,哪个更容易流动?当然是水对吧。因为蜂蜜的粘性($\mu$)高,所以不易流动。粘性越大扩散项越强,流体的运动就变得“粘稠”。雷诺数小的流动(缓慢、粘稠)中扩散占主导。相反,Re数大的流动中对流占压倒性优势,扩散则成为配角。
  • 压力项 $-\nabla p$:推注射器的活塞,液体就会从针头有力地喷出对吧?为什么呢?因为活塞侧是高压,针头侧是低压——这个压力差产生了推动流体的力。大坝放水也是同样的原理。天气图上等压线密集的地方会怎样?没错,会刮强风。“有压力差的地方就会产生流动”——这就是纳维-斯托克斯方程压力项的物理意义。这里的误解点:CFD中的“压力”大多指表压而非绝对压力。切换到可压缩分析时结果突然出错,原因可能就是混淆了绝对压力/表压。
  • 源项 $S_\phi$:被加热的空气会上升——为什么呢?因为比周围空气轻(密度低),所以被浮力推上去。这个浮力作为源项添加到方程中。此外,燃气灶火焰产生化学反应热、工厂电磁泵对金属熔液施加洛伦兹力……这些都是“从外部向流体注入能量或力”的作用,都用源项表示。忘记源项会怎样?自然对流分析中如果忘记加入浮力,流体就完全不动——冬天房间里开了暖气但暖空气不上升,这种物理上不可能的结果就会出现。
假设条件与适用范围
  • 连续介质假设:克努森数 Kn < 0.01(分子平均自由程 ≪ 特征长度)时成立
  • 牛顿流体假设:剪切应力与应变率呈线性关系(非牛顿流体需要粘度模型)
  • 不可压缩假设(Ma < 0.3 时):将密度视为常数。马赫数0.3以上需考虑可压缩性效应
  • Boussinesq近似(自然对流):仅在浮力项中考虑密度变化,其他项使用恒定密度
  • 不适用的情形:稀薄气体(Kn > 0.1)、超音速/高超音速流动(需要捕捉激波)、自由表面流动(需要VOF/Level Set等方法)
量纲分析与单位制
变量SI单位注意事项·换算备忘
速度 $u$m/s入口条件中从体积流量换算时,注意截面积单位
压力 $p$Pa区分表压和绝对压力。可压缩分析中使用绝对压力
密度 $\rho$kg/m³空气: 约1.225 kg/m³@20°C,水: 约998 kg/m³@20°C
粘性系数 $\mu$Pa·s注意与运动粘性系数 $\nu = \mu/\rho$ [m²/s] 混淆
雷诺数 $Re$无量纲$Re = \rho u L / \mu$。层流/湍流转捩的判断指标
CFL数无量纲$CFL = u \Delta t / \Delta x$。直接关系到时间步长的稳定性

数值解法与实现

实现细节

🧑‍🎓

将Smagorinsky模型实现到代码中时,具体步骤是怎样的?


🎓

在每个时间步、每个单元中计算以下内容。


1. 计算滤波后速度梯度 $\partial \bar{u}_i / \partial x_j$

2. 计算应变率张量 $\bar{S}_{ij}$

3. 计算 $|\bar{S}| = \sqrt{2\bar{S}_{ij}\bar{S}_{ij}}$

4. 计算滤波宽度 $\Delta$(例如单元体积的立方根等)

5. 计算SGS涡粘性 $\nu_{sgs} = (C_s \Delta)^2 |\bar{S}|$

6. 将有效粘性 $\nu_{eff} = \nu + \nu_{sgs}$ 反映到动量方程的扩散项中


完全不需要SGS模型的额外输运方程,因此实现非常简单。


滤波宽度的计算方法

🧑‍🎓

滤波宽度 $\Delta$ 的计算方法有好几种对吧?


🎓

是的。代表性的滤波宽度定义如下。


定义公式特点
基于体积$\Delta = V_{cell}^{1/3}$最通用,适用于非结构网格
最大边长$\Delta = \max(\Delta x, \Delta y, \Delta z)$保守,高宽比大时可能过大
几何平均$\Delta = (\Delta x \cdot \Delta y \cdot \Delta z)^{1/3}$用于结构网格

对于高宽比较大的单元(如壁面附近的棱柱层等),滤波宽度的定义会对结果产生很大影响。


OpenFOAM中的实现

🧑‍🎓

在OpenFOAM中如何使用Smagorinsky模型?


🎓

constant/turbulenceProperties 文件中如下描述。


```

simulationType LES;

LES

{

LESModel Smagorinsky;

turbulence on;

printCoeffs on;

delta cubeRootVol;

SmagorinskyCoeffs

{

Ck 0.094;

Ce 1.048;

}

}

```


在OpenFOAM中,是用 $C_k$ 和 $C_e$ 而不是 $C_s$ 来定义的,它们之间的关系是 $C_s = C_k^{3/4}/\pi$。


Ansys Fluent中的设置

🧑‍🎓

Fluent中呢?


🎓

在Fluent中,在Viscous Model对话框中选择LES,然后选择Smagorinsky-Lilly Model作为SGS模型。Smagorinsky常数默认设置为 $C_s = 0.1$,可以根据需要修改。壁面附近的Van Driest衰减会自动应用,无需特殊设置。


数值稳定性考虑

🧑‍🎓

使用Smagorinsky模型时,数值上需要注意什么吗?


🎓

Smagorinsky模型总是保证 $\nu_{sgs} \geq 0$,因此在数值上非常稳定。这是一个很大的优点,特别是初学者开始使用LES时可以放心使用。不过,反过来说,这也意味着它完全无法表现能量的逆级串(从小尺度到大尺度的能量传递),这是一个物理上的限制。


🧑‍🎓

存在稳定性与物理准确性之间的权衡呢。


🎓

没错。在实际工作中使用Smagorinsky模型时,只要谨慎选择 $C_s$ 的值,并适当设置壁面衰减,对于许多工业问题都能获得足够的精度。


Coffee Break 闲谈

“仅5行”的SGS模型实现

Smagorinsky模型的实现简单得惊人。计算应变率张量 $\bar{S}_{ij}$,求其第二不变量 $|\bar{S}|$,将 $(C_s \Delta)^2 |\bar{S}|$ 作为涡粘性加到扩散项中,仅此而已。查看OpenFOAM的源代码,确实几十行就完成了。即便如此,它在受到“过于简单”批评的同时,60多年来依然活跃,是因为其计算成本低和实现容易性带来的压倒性实用性。简单即是力量。

迎风格式(Upwind)

一阶迎风:数值扩散大但稳定。二阶迎风:精度提高但有振荡风险。高雷诺数流动中必备。

中心差分(Central Differencing)

二阶精度,但Pe数 > 2时会发生数值振荡。适用于低雷诺数的扩散主导流动。

TVD格式(MUSCL、QUICK等)

通过限制器函数抑制数值振荡同时保持高精度。对捕捉激波或陡峭梯度有效。

有限体积法 vs 有限元法

FVM:自然满足守恒定律。CFD的主流。FEM:对复杂形状、多物理场有利。SPH等无网格法也在发展中。

CFL条件(库朗数)

显式方法:CFL ≤ 1是稳定条件。隐式方法:即使CFL > 1也稳定,但影响精度和迭代次数。LES:推荐CFL ≈ 1。物理意义:一个时间步内信息传播不超过一个单元。

残差监控

相关主题

関連シミュレーター

この分野のインタラクティブシミュレーターで理論を体感しよう

シミュレーター一覧

関連する分野

熱解析V&V・品質保証構造解析
この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — サイトマップ
关于作者