对流扩散(Convection-Diffusion) — CAE用语解说
对流扩散方程基础
对流扩散方程在流体分析中处于什么位置?它与Navier-Stokes方程是不同的东西吗?
实际上不是另一回事,反而是Navier-Stokes方程的"骨架"本身。运动量方程的各个分量、温度的输运方程、浓度的标量输运,都具有"对流+扩散=源项"这种相同的形式。因此理解对流扩散方程,是理解整个CFD数值方法的捷径。
好的,能具体介绍一下是什么样的方程吗?
想象一下河里放入温水的场景。温水随河流向下游流动(这是对流)。同时温水与周边冷水的温度差导致热量扩散(这是扩散)。对流扩散方程就是把这两个效应合并到一个方程中。
支配方程
对于标量量 $\phi$ 的稳态对流扩散方程具有以下形式:
$$\nabla \cdot (\rho \mathbf{u} \phi) = \nabla \cdot (\Gamma \nabla \phi) + S$$其中左侧为对流项,右侧第一项为扩散项,$S$ 为源项。$\rho$ 表示密度,$\mathbf{u}$ 表示速度矢量,$\Gamma$ 表示扩散系数。
非稳态情况下,添加时间导数项:
$$\frac{\partial (\rho \phi)}{\partial t} + \nabla \cdot (\rho \mathbf{u} \phi) = \nabla \cdot (\Gamma \nabla \phi) + S$$限制在一维稳态、无源项的最简形式:
$$u \frac{d\phi}{dx} = \Gamma \frac{d^2\phi}{dx^2}$$这个简单的方程成为数值解法稳定性讨论的出发点。
Peclet数与对流扩散平衡
如何判断对流和扩散哪个更强?
用Peclet数(Pe)来表示。就像Reynolds数表示惯性力与粘性力的比一样,Peclet数表示对流输运与扩散输运的比值无量纲数。实际上Pe = Re × Pr(普兰特数)这样的关系存在,与Reynolds数紧密相连。
Peclet数的定义:
$$\mathrm{Pe} = \frac{UL}{\alpha} = \frac{\text{对流输运强度}}{\text{扩散输运强度}}$$其中 $U$ 为代表速度,$L$ 为代表长度,$\alpha = \Gamma/\rho$ 为扩散率。在有限体积法的框架中,基于单元宽度 $\Delta x$ 的单元Peclet数(网格Peclet数)极为重要:
$$\mathrm{Pe}_{\text{cell}} = \frac{\rho u \Delta x}{\Gamma}$$Pe较大和较小时分别会发生什么?
Pe较小(Pe ≪ 1)时为扩散主导,信息在各方向均匀分布。就像纯热传导问题。反过来Pe较大(Pe ≫ 1)时为对流主导,信息沿流动方向单向传输。烟囱的烟在风中飘散就是这样。问题在于,这种对流主导的情况下用中心差分就会数值不稳定。
数值扩散的问题
中心差分不稳定是什么意思?我以为中心差分是二阶精度的好方法…
确实对扩散方程中心差分是二阶精度没问题。但对对流项用中心差分离散化,当单元Peclet数超过2时会出现wiggle(非物理振荡)。比如在0℃的房间里送入100℃温风,仿真结果温度竟然出现-20℃或120℃。这在物理上不可能。
温度竟然是负数!为什么会这样?
直观地说,对流强的流动中上游信息极其重要,但中心差分用相同的权重处理上下游信息。这会破坏离散化系数矩阵的对角优位性,产生下冲和上冲。在数学上就是离散化不满足有界性(boundedness)。
中心差分对一维对流扩散方程离散化的对角优位条件为:
$$|\mathrm{Pe}_{\text{cell}}| = \left|\frac{\rho u \Delta x}{\Gamma}\right| \leq 2$$违反这个条件时解会振荡。在实际工业CFD中,Pecell ≫ 2 的情况很常见,因此稳定化是必要的。
风上差分与稳定化手法
如何抑制振荡?
最简单的是一阶风上差分(First-Order Upwind)。用单元界面处上游侧单元的值来近似界面值。考虑对流方向,可以完全抑制振荡。但代价是产生数值扩散(numerical diffusion)。
数值扩散具体有什么影响?在实务中有多大问题?
例如烟雾输运仿真中,原本锐利的烟雾边界会因数值扩散而模糊。汽车排气污染物扩散仿真中,浓度峰值会被低估,影响范围看起来更广。网格越粗这个虚扩散越大,所以在粗网格上用一阶风上差分在实务上很危险。
一阶风上差分的截断误差用Taylor展开分析:
$$u \frac{d\phi}{dx} \approx u \frac{\phi_i - \phi_{i-1}}{\Delta x} + \underbrace{\frac{u \Delta x}{2} \frac{d^2\phi}{dx^2}}_{\text{数值扩散项}} + O(\Delta x^2)$$数值扩散项相当于增加了 $\Gamma_{\text{false}} = \rho u \Delta x / 2$ 的虚扩散系数。即网格越粗、对流越强,虚扩散越大。
SUPG法及其相关方法
有限元法中有与风上差分不同的方法,SUPG法是什么原理?
SUPG法(Streamline Upwind Petrov-Galerkin)是Brooks和Hughes在1982年提出的有限元法稳定化手法。在Galerkin法的权函数中添加流线方向的摄动项。粗略地说就是"把权函数稍微向上游偏移"以获得风上效果。
SUPG法中,对标准Galerkin权函数 $w$,使用修正权函数 $\tilde{w}$:
$$\tilde{w} = w + \tau \, \mathbf{u} \cdot \nabla w$$其中 $\tau$ 为稳定化参数,由单元尺寸、速度、扩散系数决定:
$$\tau = \frac{h}{2\|\mathbf{u}\|} \left( \coth \mathrm{Pe}_e - \frac{1}{\mathrm{Pe}_e} \right)$$$\mathrm{Pe}_e = \|\mathbf{u}\| h / (2\Gamma)$ 为单元Peclet数,$h$ 为单元的流线方向尺寸。
除了SUPG还有其他稳定化方法吗?
很多。有限元法中GLS法(Galerkin/Least-Squares)是SUPG的推广形式。即使有源项也能保持一致性,这是优点。对于非稳态非压缩性流动,还常常结合PSPG法(Pressure-Stabilizing Petrov-Galerkin)同时稳定化速度和压力。有限体积法领域主要用TVD(Total Variation Diminishing)限制器和ENO/WENO格式。
TVD限制器是什么?名字听起来很酷…
TVD是"Total Variation Diminishing"的简称,表示解的全变差不随时间增加的格式。具体做法是在勾度复原时加入"限制器函数",防止产生新的极值(振荡)。Van Leer、Minmod、Superbee等各种限制器都有,限制器越强振荡抑制越好但数值扩散越大。这个平衡就是CFD工程师的看家本领。
实务使用指南
这么多方法,实务中怎么选?
如果是RANS定常计算,从二阶风上差分(Second-Order Upwind)开始是标准做法。收敛困难时先用一阶风上得到初始解再切换。LES情况下数值扩散会与SGS模型干涉,所以用中心差分系是常规。有压缩性冲击波流动用TVD系限制器格式最安全。
网格充分细化的话,不同格式的结果会一致吗?
理论上是这样。网格充分细化后Pecell → 0,所有格式会收敛到同一结果。但实务中有计算资源限制,所以要"在允许的网格粗度下选择精度最高的格式"。这就是为什么离散化格式选择是CFD分析师的拿手绝活。
OpenFOAM中默认是什么格式?
在OpenFOAM的fvSchemes文件divSchemes部分配置。教程中常用Gauss linearUpwind grad(U)(二阶风上)。Gauss linear是中心差分,Gauss upwind是一阶风上。TVD系用Gauss linearUpwind或Gauss vanLeer等。改一行配置就能切换格式,很容易对比效果。
相关用语
- Reynolds数 — 表示惯性力与粘性力比值的无量纲数
- Peclet数 — 表示对流输运与扩散输运比值的无量纲数
- 离散化 — 将连续方程转化为代数方程的操作
- Courant数 — 时间步长与网格尺寸的稳定性指标
- 数值扩散 — 由离散化产生的虚扩散效应
- 风上差分法 — 考虑对流方向的离散化手法
- SUPG法 — 有限元法的流线方向稳定化手法
- TVD格式 — 保证全变差不增加的离散化手法
- Navier-Stokes方程 — 描述粘性流体运动的基本方程
准确理解CAE用语是团队沟通的基础。 — Project NovaSolver也支持实务工作者的学习。
对流扩散离散化中遇到的困难,请告诉我们
Project NovaSolver致力于解决CAE工程师日常面临的课题 — 设置复杂度、计算成本、结果解释 — 。你的实务经验将成为更好工具开发的原动力。
咨询(准备中)相关主题
价值
详细
错误