壁函数
壁函数的理论基础
概述
老师,壁函数经常要求「y+要30以上」,这到底是为什么呢?
壁面附近的湍流边界层有粘性底层、缓冲层、对数层三个明确的结构。壁函数是利用其中对数层的速度分布,保持壁面附近单元粗糙状态计算的手法。不需要直接求解粘性底层,可以大幅削减网格数量。
是不是干脆就跳过粘性底层了?
严格地说,不是「跳过」,而是用半经验函数近似壁面附近的速度、温度、湍流量。这就是壁函数的本质。
壁面边界层的结构
首先请讲讲边界层的结构。
从靠近壁面开始,有三个区域。
| 区域 | $y^+$ 范围 | 主导效应 | 速度分布 |
|---|---|---|---|
| 粘性底层 | $y^+ < 5$ | 分子粘性主导 | $u^+ = y^+$(线性) |
| 缓冲层 | $5 < y^+ < 30$ | 粘性和湍流混合 | 过渡区(无明确公式) |
| 对数层 | $30 < y^+ < 300$ | 湍流应力主导 | $u^+ = \frac{1}{\kappa}\ln(y^+) + B$ |
这里无量纲量的定义如下。
$u_\tau$ 是摩擦速度,$\tau_w$ 是壁面剪应力,$\nu$ 是动力粘性系数。
对数律(Law of the Wall)
请详细讲讲对数律的公式。
对数层中的速度分布用以下公式表示。
这里 $\kappa \approx 0.41$(von Karman常数)、$E \approx 9.793$(光滑面的积分常数)。改写为:
粗糙壁面的情况怎么处理?
粗面上的常数会根据粗糙度高度 $k_s$ 进行修正。
这里 $k_s^+ = k_s u_\tau / \nu$ 是粗糙度Reynolds数。$k_s^+ < 2.25$ 时为水力光滑面,$k_s^+ > 90$ 时为完全粗面。
壁函数的种类
壁函数也有不同种类吗?
大体上分为三种。
| 壁函数种类 | 特点 | $y^+$ 要求 |
|---|---|---|
| 标准壁函数 | 严格应用对数律。Launder-Spalding (1974) | $30 < y^+ < 300$ |
| 可伸缩壁函数 | 当 $y^+ < 11.225$ 时切换为粘性底层公式 | 无限制(内部补正) |
| 增强壁面处理 | 低Re阻尼 + 壁函数混合 | $y^+ \approx 1$ 最理想 |
标准壁函数是最经典的方法,需要第一个单元的 $y^+$ 在30~300范围内。这个范围外精度会大幅下降。
明白了,所以才要求「y+要30以上」。反过来,低Reynolds数模型需要 $y^+ \approx 1$。
对数律的发现——Prandtl和弟子们的细致实验
壁函数的理论基础「对数律」的发现源于Ludwig Prandtl及其弟子们在20世纪初进行的耐心管内湍流实验。距离壁面较远的湍流区域速度分布遵循对数函数这一事实,最初是从实验数据经验地得出的,后来才有理论推导。这个百年前的实验数据支撑着今天每天数百万次CFD计算中的壁函数应用,足可见其生命力。
壁函数的数值计算手法
壁函数的数值实现
壁函数在求解器中具体怎么实现的?
运动量的壁函数
速度场的壁函数怎么计算?
靠近壁单元中心的速度 $U_P$ 与壁面剪应力 $\tau_w$ 的关系,从对数律反推。
求解 $\tau_w$ 得:
但 $u_\tau = \sqrt{\tau_w/\rho}$,所以 $\tau_w$ 隐含在式子中。实现时通常用牛顿法或简单迭代法反复求解,或者定义等效涡粘性。
k 和 epsilon 的壁边界条件
湍流量 $k$ 和 $\varepsilon$ 怎样设定边界条件?
靠近壁的单元中 $k$ 和 $\varepsilon$ 设定如下。
这里 $C_\mu = 0.09$。$\varepsilon$ 一般作为单元中心值直接赋值(固定值)。$k$ 有些求解器求解运输方程到靠近壁的单元,有些则用上式固定。
这样各求解器处理方式不同啊。
完全对。Ansys Fluent中,$k$ 求解运输方程同时用壁函数修正壁面生成项,$\varepsilon$ 在靠近壁的单元强制上式的值。OpenFOAM的 epsilonWallFunction 也是类似的实现。
温度的壁函数
热的壁函数也有吗?
有的。温度场也有类似对数律的壁函数。标准做法是用Jayatilleke (1969)的P函数。
这里 $\text{Pr}_t \approx 0.85$(湍流Prandtl数),$\text{Pr}$ 是分子Prandtl数。空气($\text{Pr} \approx 0.71$)的P函数补正较小,但油类($\text{Pr} > 100$)等高Prandtl数流体会有较大影响。
y+ 的事前估算
网格生成前有办法估算 $y^+$ 吗?
可以用平板边界层的经验公式估算。
也就是说,从目标 $y^+$ 和代表Reynolds数可以反推第一层厚度 $y$。这样就能设定膨胀层了。
y+计算工具的真正价值——「事前估算」文化的确立
如今搜索「y+ calculator」就能找到无数在线工具,但这些工具普及是在2010年代以后。那之前的CFD工程师通过手算或表格用边界层解析解(Blasius公式等)来估算第一层厚度。「试着切网格,计算后再确认y+」的做法逐渐被「先算y+,再设计网格」的事前估算文化取代,这个转变与计算工具的普及密不可分。即使现在,一开始进行分析时坚持y+事前推算的工程师,也很少在结果上遇到麻烦。
壁函数的实务应用
实务中的壁函数选择流程
实际项目中怎样选择壁函数?
基本判断流程是这样的。
1. 壁面现象对结果是否重要? -- 如果分离、过渡、热传递是重点,选低Re分析($y^+ \approx 1$)而非壁函数
2. 计算成本有约束吗? -- 数千万单元以上的大型工业问题,壁函数更现实
3. Reynolds数多大? -- 高Re流($Re > 10^6$)中壁函数更稳定
网格设计的实务指针
用壁函数时网格要注意什么?
最重要的是第一层单元的 $y^+$ 要保持在对数层范围内。
| 壁函数类型 | 目标 $y^+$ | 第一层成长率 | 边界层内推荐层数 |
|---|---|---|---|
| 标准壁函数 | 30~100 | 1.2~1.3 | 8~15层 |
| 可伸缩壁函数 | 30~300(自动补正) | 1.2~1.3 | 8~15层 |
| 增强壁面处理 | 1~5 | 1.1~1.2 | 15~25层 |
实务中最常见的失误是 $y^+$ 落在缓冲层(5~30)。标准壁函数无法正确表现此区域的速度分布,导致壁面摩擦系数和热传递系数大幅偏离。
网格生成后怎样确认 $y^+$?
各求解器都能输出壁面 $y^+$ 的等高图。
壁函数失效的情况
什么情况下壁函数不适用?
以下情况壁函数的前提(稳态、平衡边界层、对数层成立)会崩塌。
| 情况 | 原因 | 推荐方法 |
|---|---|---|
| 大规模分离(钝物体后) | 不存在对数层 | 低Re模型或LES |
| 强压力梯度(扩散段) | 偏离对数律较大 | 非平衡壁函数或增强壁面处理 |
| 过渡流(翼型层流区) | 与层流假设矛盾 | 过渡模型($\gamma$-$Re_\theta$) |
| 浮力驱动流(自然对流) | 速度分布与对数律不同 | 低Re模型 |
| 高马赫数压缩性流 | 可压性效应改变壁面律 | 可压性壁函数 |
从产业实践看,哪种壁函数用得最多?
汽车、建筑外部空气动力学多用可伸缩壁函数。涡轮机械中SST k-omega的自动壁面处理事实上是标准。这种做法内部自动根据 $y^+$ 切换壁函数和低Re分析,对网格品质很有鲁棒性,备受推崇。
热流束计算中的壁函数——温度和速度为何需要不同的y+
涉及热传递的分析中,速度场和温度场需要分别应用壁函数。速度对数律在湍流Prandtl数为0.7~0.9的流体中相对稳健,但液态金属(Prandtl数<<1)或高粘度流体的温度对数律可能失效。某电子设备冷却CFD分析中,速度y+为35(很好),但热流束却是实验值的2倍,原因是水的低Prandtl数区域热壁函数不适用。「涉及热才需更谨慎对待壁函数」是实务的重要经验。
壁函数的软件比较
求解器别的壁函数实现
壁函数的实现在求解器间差异大吗?
基本思路相同,具体的实现名称和自动切换逻辑有差异。对比看看。
| 求解器 | 标准壁函数 | 可伸缩/自动切换 | 低Re/增强 |
|---|---|---|---|
| Ansys Fluent | 标准壁函数 | 可伸缩壁函数 | 增强壁面处理 |
| Ansys CFX | -- | 自动壁面处理(标准) | -- |
| STAR-CCM+ | 标准壁函数 | 全 y+ 壁处理 | 低 y+ 壁处理 |
| OpenFOAM | nutUWallFunction + kqRWallFunction | nutUSpaldingWallFunction | nutLowReWallFunction |
CFX没有标准壁函数?
CFX的自动壁面处理是与SST k-omega一体设计的,自动根据 $y^+$ 混合粘性底层分析和对数律,无需单独选标准。这是CFX的一大特色。
OpenFOAM的壁函数边界条件
OpenFOAM的设置方法讲讲。
典型的壁函数BC组合如下。
| 变量 | 标准壁函数 | Spalding壁函数(全 $y^+$ 适用) |
|---|---|---|
nut | nutUWallFunction | nutUSpaldingWallFunction |
k | kqRWallFunction | kqRWallFunction |
epsilon | epsilonWallFunction | epsilonWallFunction |
omega | omegaWallFunction | omegaWallFunction |
Spalding壁函数采用Spalding (1961)的方程 $y^+ = u^+ + e^{-\kappa B}\left[e^{\kappa u^+} - 1 - \kappa u^+ - \frac{(\kappa u^+)^2}{2} - \frac{(\kappa u^+)^3}{6}\right]$,覆盖全 $y^+$ 范围。无论是粘性底层($y^+ < 5$)还是对数层($y^+ > 30$)都能连续接续,对网格品质鲁棒。
求解器选择的指针
从壁函数角度选求解器,怎样考虑?
判断基准整理如下。
| 判断基准 | Fluent | CFX | STAR-CCM+ | OpenFOAM |
|---|---|---|---|---|
| 壁函数选择余地 | 多(3种+非平衡WF) | 少(仅自动) | 3种(低/高/全 y+) | 多(易定制) |
| 自动 $y^+$ 适配 | 增强WT适配 | 标准适配 | 全y+适配 | Spalding WF适配 |
| 粗面模型 | Cebeci-Chang式适配 | 砂粒适配 | 砂粒适配 | nutURoughWallFunction |
| 温度壁函数 | Jayatilleke P函数 | 自动 | 3种 | alphatWallFunction系 |
实务中怎么推荐?
网格品质波动大的产业问题,用全 $y^+$ 适配的壁函数比较保险。Fluent选增强壁面处理,STAR-CCM+选全 y+ 壁处理,OpenFOAM选 nutUSpaldingWallFunction。CFX默认自动切换,无需特别考虑。
OpenFOAM的壁函数菜单——选项过多的困扰
OpenFOAM的nutWallFunction词典中有kqRWallFunction、nutKWallFunction、nutUSpaldingWallFunction等多个选项。初学者常常«谁了该选哪个»是很正常的,OpenFOAM用户论坛每个月都有同样问题。答案是«根据湍流模型和y+范围决定»,但nutUSpaldingWallFunction覆盖全y+范围,对y+适应最宽松,许多用户在迷茫时都选这个作为保险的起点。
壁函数的先端研究
非平衡壁函数
有压力梯度的流中标准壁函数用不了,有替代手段吗?
有。Kim-Choudhury (1995)和Craft et al. (2002)提出的非平衡壁函数。靠近壁的单元内考虑压力梯度和对流效应,解析积分速度分布。
Fluent的非平衡壁函数基于这思想。靠近壁单元的 $k$ 预算方程纳入考虑,压力梯度影响如下纳入:
这里 $g(y^+)$ 是表示压力梯度效应的修正函数。
自适应壁函数(Adaptive Wall Function)
近期有什么进展?
自适应壁函数(Popovac-Hanjalic, 2007)引人注目。它在靠近壁的单元内解简化的1D RANS方程,高精度地估算壁面通量。
靠近壁的单元内引入虚拟的子网格,用下式解单元内速度分布 $U(y)$。
这样做的好处是,即使对数律不成立的地方,也能获得精确的壁面剪应力。OpenFOAM可以定制实现,已在研究应用中使用。
LES/DES向壁模型(WMLES)
LES也有壁函数式的方法吗?
有。壁建模LES(WMLES)。LES中壁面附近涡尺度极小,直接解的话网格数正比于 $Re^{13/7}$ 爆炸。所以只在壁面附近用RANS式壁模型,外层用LES求解。
代表的WMLES壁模型有:
- 平衡应力模型:对数律基础。最简单
- ODE平衡模型:壁面附近解TBL方程
- 积分壁模型 (Kawai-Larsson, 2012):壁面附近运动量方程积分
WMLES用哪些求解器支持?
机器学习的壁模型
用AI改进壁函数也有研究吗?
有。用DNS数据训练,用神经网络预测壁面通量的研究日益活跃。Yang et al. (2019)、Lozano-Duran et al. (2020)等工作用ML构建壁模型,纳入压力梯度、曲率效应,比传统对数律基础模型精度更高。
壁函数的世界也在不断进化。既要认识对数律的局限,也要根据情景选择最优壁模型,这点我理解了。
全y+壁函数出现——「无需关心y+」时代来临
STAR-CCM+引入的«全y+壁处理»(后来ANSYS CFX也采纳类似的自动壁处理)是革命性创新,无论y+=1还是300,都自动选择恰当的壁处理。低y+时切为低Reynolds数模式,高y+时切为对数律模式。«从y+管理中解放出来»对设计工程师意义重大,网格品质管理能少一项,生产力提升。但«y+可以随意»的理解是错的,该是«理解全y+的信任范围后合理使用»。
壁函数的故障排查
常见问题和对策
壁函数常见问题有哪些?
现场最常见的问题总结如下。
1. y+ 落在缓冲层
现象:壁面 $y^+$ 在5~30范围内
原因:第一层网格太薄(不小心用成了低Re的厚度而非壁函数用)
对策:
2. 壁面摩擦系数与实验值不符
$C_f$ 与实验偏差20%以上的情况。
可能原因:
- $y^+$ 超出对数层范围
- 强逆压力梯度,对数律破裂
- 粗面模型的粗糙度参数 $k_s$ 设置不当
- 沿流向网格太粗(流向分辨率不足)
对策:
- 确认全壁面 $y^+$ 等高图,看是否都在30~100范围
- 强压力梯度区用非平衡壁函数
- 实验粗糙度数据要正确换算为等效砂粒粗糙度 $k_s$
3. 壁面热传递系数过大/过小
Nu数只有实验的一半左右。
温度壁函数比速度壁函数对网格更敏感。
原因:高Pr数流体(如油类)中,y+太大会导致温度边界层(比速度边界层薄)完全埋入第一个单元
对策:
- Pr > 1流体中把y+设小些(参考:$y^+ < 50 / \text{Pr}^{0.5}$)
- 切换到增强壁面处理
- STAR-CCM+用两层全 y+ 壁处理
4. 局部反流导致发散
现象:靠近壁单元出现反流,壁函数计算不稳定
对策:
- 检查分离区的y+。对数律不成立,壁函数不适用
- 切换到增强WT或全y+处理
- 降低松弛因子(Fluent中动量从0.5降到0.3)
调试步骤
怎样高效诊断壁函数问题?
1. 先输出壁面y+等高图。确认全壁是否在适当范围
2. 比较壁面 $C_f$ 分布与理论值或实验,找出偏差最大的位置
3. 在疑问壁面附近取垂直线,绘 $u^+$ vs $y^+$,与对数律公式对比
4. 网格敏感性检验:第一层厚改为1/2和2倍,看结果变化
$u^+$ vs $y^+$ 的图,求解器标准功能能输出吗?
Fluent中在垂直壁的线上取样 $U$ 和 $y$,用摩擦速度 $u_\tau$ 无量纲化。ParaView也能计算。和对数律公式 $u^+ = 2.44 \ln(y^+) + 5.5$ 对比,一目了然能看出是否正确再现对数层。
「y+=11.25魔数」带来的悲剧
«y+=11.25»是粘性底层和对数层的交点,已成著名的壁函数限制。这附近的网格«太粗无法解粘性底层,太细无法用对数律»,最坏的区域。大网格一批生成时,局部高速区常好奇地落在这值,那部分壁面剪应力会出现异常。«压力损失在特定流量条件下特别大»这类症状,往往是y+=11附近的壁单元在作祟,所以y+等高图确认很关键。