近壁网格、、对数律到 CFD 软件里的 wall viscosity
做湍流 CFD 时,壁面附近常常是最容易出问题的地方。速度在壁面必须满足无滑移条件,越靠近壁面,速度梯度越陡;如果还涉及传热、组分或湍流量,近壁区同样会出现很强的梯度。
壁函数要解决的不是“公式记忆题”,而是一个很具体的工程矛盾:如果把近壁边界层完全解析出来,网格会非常细;如果第一层网格放得太远,又会算错壁面剪切应力。
在常见二阶有限体积方法里,单元内部变量变化通常按分段线性处理。但真实近壁速度剖面不是一条直线,尤其从壁面到第一层单元中心之间,梯度变化非常快。
如果要靠网格直接捕捉这个陡峭变化,壁面法向就需要很多层越来越薄的单元。这样做当然更接近真实剖面,但代价也很明显:单元数量增加,计算时间变长,薄长单元还可能带来较差的网格质量和收敛稳定性。

所以壁函数的基本思想是:第一层网格可以不贴得那么近,但壁面到单元中心之间的非线性速度变化,不能简单用直线代替,而要用经验函数补回来。
大量实验和 DNS 数据表明,壁面附近的无量纲速度剖面可以分成几个典型区域:黏性底层、缓冲区和对数区。

在黏性底层,速度随壁面距离近似线性变化:
在对数区,速度剖面通常写成对数律:
其中 是 von Karman 常数,常取约 ;E 是经验常数,视频中给出的量级约为 。这里要注意,常见图里的横坐标 往往是对数坐标,所以对数区在图上看起来像一条直线。
和 是壁面单位,也就是把壁面附近的距离和速度无量纲化。这样做的目的,是把不同几何、不同来流速度下的近壁行为折算到同一套尺度里比较。

这里 是摩擦速度,它由壁面剪切应力 定义。为什么不用远处来流速度做参考?因为壁面本身速度为零,近壁区真正控制速度尺度的是壁面剪切。
从经验曲线看, 的黏性底层可以用 拟合; 的对数区可以用对数律拟合。但 的缓冲区,两条简单公式都不能很好贴合真实数据。
最直接的做法是让线性律和对数律在某个交点切换,比如视频里提到二者在 约 附近相交。但这种硬切换会在缓冲区产生较大误差。
更平滑的做法是使用覆盖全区间的函数,例如 Spalding wall function,或者在软件内部采用某种 blending。问题是:不同 CFD 代码对缓冲区的处理并不完全透明,精度也更不确定。
这也是很多软件手册会建议避免把第一层单元中心放在缓冲区的原因:不是因为软件不能算,而是因为这个区域的模型不确定性最大。

所谓 automatic wall treatment,通常不是说软件能保证任何网格都准确,而是说软件会根据局部 ,在黏性底层处理、对数律壁函数以及缓冲区混合之间自动选择。
这件事很有用,因为初始建网时用户并不知道最终收敛后的 分布;而且 还会随着流场、壁面剪切应力和迭代过程变化。自动壁面处理可以减少用户手动指定区域的负担,但不能替代网格质量和物理适用性的判断。
站在求解器角度,壁面速度已知为零,第一层单元中心速度 由动量方程求出。求解器真正需要的是壁面法向梯度,以及由此得到的壁面剪切应力。

如果第一层单元位于黏性底层,壁面到单元中心之间近似线性,直接用线性梯度计算剪切应力问题不大:
但如果第一层单元位于对数区,真实剖面是非线性的。此时如果仍用普通黏度和线性梯度,壁面剪切应力会算错。软件的处理方法是引入一个近壁等效黏度,也就是很多代码里能看到的 wall viscosity。
可以把 理解为一个工程折算:虽然网格内部仍然用线性梯度形式,但通过修改近壁等效黏度,让线性形式给出与对数律一致的壁面剪切应力。
因此,壁函数并不是在每个壁面单元里重新解析完整边界层,而是在壁面通量计算里给出一个等效修正,使粗网格仍能得到合理的 。
的选择不能只背一个固定数。它取决于你想解析哪一部分近壁物理,以及当前流动是否满足壁函数的基本假设。

对于翼型这类问题,低攻角附着流中壁函数结果可能与近壁解析结果接近;一旦攻角增大并出现分离,壁函数预测就可能明显失真。