斯马戈林斯基模型——理论与控制方程
理论与物理
Smagorinsky模型概述
老师,Smagorinsky模型是最基本的SGS模型对吧?
是的。这是Joseph Smagorinsky在1963年为大气环流模型提出的,可以说是LES中SGS模型的鼻祖。其思路很简单,就是根据局部应变率大小和滤波宽度来计算SGS涡粘性。
基本公式推导
具体的数学公式是怎样的呢?
在Smagorinsky模型中,SGS涡粘性 $\nu_{sgs}$ 定义如下。
其中 $C_s$ 是Smagorinsky常数,$\Delta$ 是滤波宽度,$|\bar{S}|$ 是滤波后应变率张量的大小。
从量纲分析来看也是吻合的。$\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_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$。
这里 $A^+ \approx 25$。这个“需要根据流动情况调整 $C_s$”的缺点,正是动态Smagorinsky模型开发的动机。
Smagorinsky模型的优缺点
能总结一下优缺点吗?
| 优点 | 缺点 | ||
|---|---|---|---|
| 实现极其简单 | $C_s$ 是问题依赖的参数 | ||
| 计算成本低 | 壁面附近过度耗散(需要Van Driest衰减) | ||
| 数值稳定(总是 $\nu_{sgs} \geq 0$) | 层流/转捩区域也会产生耗散(只要 $ | \bar{S} | \neq 0$ 则 $\nu_{sgs} > 0$) |
| 历史悠久,验证案例丰富 | 无法表现逆能量级串(backscatter) |
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;
{
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$ 的值,并适当设置壁面衰减,对于许多工业问题都能获得足够的精度。
“仅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。物理意义:一个时间步内信息传播不超过一个单元。
残差监控
なった
詳しく
報告