0. 前言
什么叫做壁面函数,为什么引入壁面函数的概念??
因为流体无论流动,还是传热、传质都存在边界层。而之所以有壁面函数这个东西,根源就在于边界层理论。
1. 边界层理论
大家都知道什么是边界层理论,我们想要理解壁面函数,就必须搞清楚边界层理论的产生对数值计算带来了什么影响???。
边界层分为速度边界层、热边界层和浓度边界层。
速度边界层:当具有粘性的流体,经过壁面附近,流速下降,直接贴附于壁面的流体静止不动的一个薄层。
热边界层:指黏性流体流动壁面附近形成的以温度剧变为特征的流体薄层。
热边界层厚度:
其中δ表示速度边界层的厚度,δt表示热边界层的厚度
浓度边界层:某组分在流体中的浓度与固体壁面的浓度存在差异,则在壁面垂直方向上的流体内部将存在浓度梯度的流体薄层。
浓度边界层厚度
其中δ表示速度边界层的厚度,δc表示热边界层的厚度,
2. 近壁面细节捕获
这三种边界层都有一个共同的特点,那就是某个物理量A发生剧变,在边界层内产生非常大的梯度,且越靠近边界层梯度越大。而在边界层外,物理量A与主流中的物理量A值几乎相等,不存在梯度。
为了获得更加精确的计算结果,必须对边界层内的物理量梯度进行非常细节的捕获,如果捕获呢??我们首先冒出来的想法---网格加密
边界层网格加密是一个方式,将边界层网格画的非常密,越靠近边界层网格越密,这样可以捕获更多的细节,同时计算也会更加准确。
但是边界层网格加密存在两个缺点:第一,网格数量大大增加,为了获取更多的细节,需要不断细化网格,计算时间大大加长;
第二,网格质量变差,边界层网格的加密,导致网格的纵横比非常大,甚至达到上百,高纵横比可能会导致计算难以收敛,甚至发散。
3. 湍流边界层的壁面律
有没有一种方法,既不需要划分更多的网格,同时还能捕获更多的边界层细节呢??
于是乎,大佬们想出了这样一种办法。既然边界层内的物理量细节难以捕获,那么直接通过实验获得边界层内这些物理量的变化规律,然后将这些规律直接应用到数值计算不就可以了吗??实际上也确实是这样做的。
通过对边界层的研究,将边界层分为了三个区域,分别为粘性底层(0<y+<5)、缓冲层(5<y+<30)和完全湍流层(y+>30)。
这里用两个无量纲物理量u+和y+来定义边界层内的规律更具有普遍性。
u+表示无量纲速度,u表示边界层内流体速度,τw为壁面切应力
y+表示到壁面处的无量纲距离,y表示边界层某点到壁面的距离,v表示流体运动粘度m2/s。
对边界层这三个区域进行了大量的实验,结果表面这三个区域内u+和y+的规律不同。对于粘性底层(0<y+<5),u+与y+近似呈线性关系;对于完全湍流层,u+与y+近似呈对数关系,被称为对数律;对于缓冲层,线性关系曲线和对数律曲线在缓冲层有交点,交点所对应的y+值在11附近。
4. 壁面函数
4.1 壁面函数的概念
既然已经知道边界层内的规律了,那么就不必在边界层内画很密的网格,而直接使用实验规律来计算边界层内的流体流动、传热传质等问题。
Fluent软件提供了一种被称为壁面函数的方式来实现上述的思想。壁面函数是一种半经验公式,被用来连接壁面和完全湍流区域之间的粘性影响区域。
壁面函数以对数律为基础来计算边界层规律,其忽视了粘性底层和缓冲层。因此我们画边界层网格时不能画出粘性底层和缓冲层,而要直接画到完全湍流层。
也就是说使用壁面函数,我们不但不需要在边界层内细化网格,反而必须要保证第一层网格处于对数律能够应用的范围。
我们通常将即y+=15处作为可以使用对数律的分界线,所以第一层网格要保证y+>15。第一层网格大小可以由下式推导:
Fluent使用另一种无量纲速度u*和无量纲距离y*来描述边界层内的规律
u+,y+与U*,y*在湍流边界层中近似相等,我们应用时直接用u+,y+即可。
注:使用壁面函数确实简化了边界层的网格,但是也忽略了粘性底层和缓冲层,因此壁面函数的方法适用于粘性底层数据不重要的求解。
如果我们想要研究的就是粘性底层的数据,如边界层分离现象,那么壁面函数的方法很不适用。Fluent提供了另外一种方式用于求解粘性底层。
4.2 y+的确定
为了留出一定的余量,保证计算结果的准确性,Fluent要求y+必须大于15,如果y+小于15,Fluent就无法保证求解的准确性。y+的下限为15,y+的上限则取决于雷诺数。
对于高雷诺数:如轮船,飞机等,对数律范围扩大,y+上限可以取到几千,减少网格数量
对于低雷诺数:如涡轮叶片等,y+上限可以取到100
对于很低的雷诺数:对数律范围很窄,为了保证y+>15,可能会使边界层网格层数很少,计算结果变差,因此不建议使用壁面函数。
注:相较于纠结y+的选取,边界层的网格层数足够时,能得到更精确的数值结果。
对于非结构网格,边界层网格层数在10-20之间,对于边界层Prism棱柱层网格,要保证边界层内至少15个节点。
4.3 边界层厚度
想要在边界层内画足够数量的网格,需要知道边界层的厚度。如何得到边界层厚度呢?
Fluent提供了一种估算方法。当我们大致划分网格进行计算得到一个求解结果时,可以在后处理查看turbulent viscosity湍流粘度物理量。
Results-Plots-XY plot
在垂直壁面方向画出turbulent viscosity沿垂直壁面方向的曲线图,turbulent viscosity的最大值出现在边界层的中间,最大值出现位置的2倍即为边界层的厚度。
比如下图为文章后源文件案例的湍流粘度,在x=0.01m处达到最大值,可以认为边界层厚度为0.02m。
对于某些特殊工况,边界层厚度也可以由理论公式推导出来
5. 估算边界层第一层网格
最后我们回到最关心的问题,边界层第一层网格如何确定?
当我们在Fluent中选择壁面函数时,必须要保证y+>15。
由此可一步步反推第一层网格高度y的值。式中ρ为流体密度,U为流体主流速度,U∞为流体动力粘度,d为特征长度。
估算雷诺数Re
估算壁面摩擦系数
估算壁面剪切应力
估算
计算边界层第一层网格
以上流程化的东西都可以通过编程实现
进行了一定的验证后发现,似乎是由于Fluent基于有限体积法,因此上述求出的第一层网格高度y实际上只是网格中心到壁面的距离,真正的第一层网格高度应该为此值的2倍。(自己理解,欢迎私信批评指正)下面的程序已进行修正。
1. Fluent壁面函数
前面介绍了壁面函数的由来及相关的理论,这里我们介绍Fluent中壁面函数的选取依据。牢记:使用壁面函数的前提是y+>15
Fluent在两种湍流模型中需要选择壁面函数分别是k-e模型和Reynolds Stress雷诺应力模型,其他的湍流模型不必考虑壁面函数的问题,同时也不必考虑y+问题,我们后面会详细说明。
Fluent提供了四种壁面函数以供选择,分别是:
Standard Wall Functions 标准壁面函数
Scalable Wall Functions 扩展壁面函数
Non-Equilibrium Wall Functions 非平衡壁面函数
User-Defined Wall Functions 自定义壁面函数
2. 标准壁面函数
2.1 Standard Wall Functions
标准壁面函数是由Launder and Spalding提出的,广泛应用于工业流体流动,是Fluent默认的壁面函数。但是我们计算时尽量不要使用这种壁面函数。
标准壁面函数使用典型的对数律:
其中
式中,κ= 0.4187为卡门常数;E= 9.793为经验常数;Up为紧邻壁面网格中心速度;kp为紧邻壁面网格中心湍动能;μ为动力粘度。U*和y*是Fluent中的无量纲物理量,等同于u+和y+。详情可查看四十五、壁面函数理论及y+的确定
标准壁面函数对y+要求非常严格,y+必须大于15,如果低于这个值,求解结果准确性会变得很差。其他的壁面函数对于y+的要求有所宽松,但尽量还是保证y+>15。
上述公式是对边界层内速度的近似,对于能量方程、组分方程和湍流方程同样有近似规律,这里不做介绍。
2.2 使用限制
标准壁面函数基于壁面恒剪切应力和局部平衡假设,因此当近壁流动受到很大的压力梯度的影响时(边界层分离),即流动处于非平衡状态时,预测结果可能会不准确。
其实就是因为标准壁面函数忽略了粘性底层,当粘性底层存在大压力梯度时,计算结果肯定是有问题。
3. 扩展的壁面函数
3.1 Scalable Wall Functions
顾名思义,Scalable Wall Functions在标准壁面函数的基础之上进行了扩展。当y*<11时,标准壁面函数是无法使用的,而Scalable Wall Functions可以正常使用。
Scalable Wall Functions对y*进行了一定的限制。
式中y*limit=11.25
如果y*>11.25,就取它自身的值。如果y*<11.25,就直接令y*=11.25。也就是说,y*>11.25时,Scalable Wall Functions和standard wall function功能相同。但是如果y*<11.25,那么小于11.25的网格结果相同,且都等于11.25时的规律。
举个例子,如果我们有三层网格的y*<11.25,那么这三层网格的y*直接按照等于11.25计算的,计算结果肯定是相同的。
3.2 使用限制
在y*问题上,Scalable wall functions比标准壁面函数应用范围要广,但是和标准壁面函数相同,当近壁流动受到很大的压力梯度的影响时(边界层分离),当流动处于非平衡状态时,预测结果可能会不准确。
4. 非平衡的壁面函数
4.1 Non-Equilibrium Wall Functions
由于Standard Wall Functions和Scalable wall function对于壁面压力梯度较大时都不适用,因此需要提出一种新的方式来解决这个问题。Fluent提供了Non-Equilibrium Wall Functions。
Non-Equilibrium Wall Functions基于两层假设来计算壁面剪切应力τw、湍动能k和湍动能耗散率e。而和压力梯度相关性不大的物理量如能量方程、组分方程等则和标准壁面函数保持一致。
yv为粘性底层的厚度,y为网格到壁面的距离。y处于粘性底层和粘性底层之外时,分别使用不同的公式来描述流动。
4.2 使用限制
通过这种方式,Non-Equilibrium Wall Functions能够弥补标准壁面函数的缺陷,适用于分离、撞击等复杂流动
5. 标准壁面函数 VS扩展的壁面函数
为了对比上述的内容,我们使用一个案例加以说明,案例的源文件在公 众号文章chapter45中。
5.1 网格情况
模型为二维平板,长2.5m,宽0.1m,进口流速为6m/s,物性参数保持默认。通过计算可知y+>15,第一层网格高度取2.1E-03m;y+=1时,第一层网格高度取8E-5m。分别对上下两个壁面进行不同的y+网格划分如下图
以下使用标准壁面函数进行计算。
5.2 两壁面Y+
上壁面y+基本等于1,很小;下壁面y+整体都大于15。
5.3 速度云图
直观上看,上下壁面的速度云图并不相同,主要还是因为标准壁面函数对y+非常敏感。通过前面的分析,我们应该知道下壁面的速度分布更加合理
通过x=1截面上的曲线图也能看出,两壁面附近速度有所区别。
5.4 扩展的壁面函数对比
标准壁面函数和扩展的壁面函数明显有所不同。两种壁面函数在y+>15处速度曲线几乎重合,而在y+很小时差距变大。Scalable wall functions在y+较小时相对更准确一些。
6. 壁面函数的使用限制
尽管基于标准壁面函数做了很多改进如Scalable Wall Functions和Non-Equilibrium Wall Functions,但是壁面函数仍然存在一些问题。
壁面函数基于对数律,要么忽略粘性底层,要么对粘性底层进行修正,对于粘性底层的求解仍然不够精确,因此对于以下问题,壁面函数并不适用:
很低的雷诺数流动,如毛细现象
壁面相变问题,如壁面沸腾现象
大压力梯度导致的边界层分离现象
依靠体积力驱动的流动,如自然对流,浮力等
对于3D模型,边界层歪斜度较大也不适用壁面函数
既然壁面函数存在一些适用不了的工况,那么我们就想研究这样工况应该怎么办呢??
还记得四十五、壁面函数理论及y+的确定文章,对于边界层细节捕捉问题,其实是有两种处理方法的。第一种就是我们刚刚介绍的壁面函数的方式,第二种是我们刚开始就想到的加密网格的方式。
本来为了减少网格数量,我们想到使用壁面函数。现在壁面函数无论如何满足不了需求了,我们就只能回归老本行,通过加密网格的方式来捕获细节。
Fluent提供了两种方式用来专门捕获壁面处细节Enhanced Wall Treatment和Menter-Lechner。这部分我们下篇文章再详细讲解。
7. 壁面函数总结
1) 壁面函数只会出现在k-e模型和Reynolds Stress雷诺应力模型
2) Standard Wall Functions:适用于高雷诺数流动,要求y+>15
3) Scalable Wall Functions:也适用于高雷诺数流动,但对于y+要求比较宽松,但尽量满足y+>15。不要用Standard Wall Functions,而尽量选择Scalable Wall Functions
4) Non-Equilibrium Wall Functions:适用撞击、分离等问题,y+<15也可以使用。
5) 如果不想考虑那么多,就直接使用Scalable Wall Functions
虽然进行了壁面函数的推荐,但实际上对于k-e模型和Reynolds Stress雷诺应力模型,Fluent推荐不要使用壁面函数,而使用近壁面处理。限于篇幅,下篇文章详细讲解。
1. 近壁面处理
前面介绍了壁面函数的由来及相关的理论,我们已经知道,壁面函数只考虑了对数律的适用范围,而完全忽略了粘性底层的影响。
但是对于一些工况,我们所关注的点就是粘性底层物理量的规律,比如边界层分离现象,这时候壁面函数就不再适用了。参考文章四十六Fluent壁面函数的选取依据,只要有以下的情况,壁面函数就不可用了。
很低的雷诺数流动,如毛细现象
壁面相变问题,如壁面沸腾现象
大压力梯度导致的边界层分离现象
依靠体积力驱动的流动,如自然对流,浮力等
对于3D模型,边界层歪斜度较大也不适用壁面函数
那应该如何处理呢???
我们只能回到最初的想法----对边界层网格进行加密,同时对湍流模型进行修正,使其能够对粘性底层进行求解。
2. Enhanced Wall Treatment
增强近壁面处理方式将两层模型和增强的壁面函数结合,对于壁面粗网格(y+>15,完全湍流区)和精细网格(y+≈1,粘性底层)都不会产生太大的误差。
2.1 Two-Layer Model
两层模型将边界层划分为粘性底层和完全湍流层,两层的分界线用雷诺数Rey区分
y为网格中心到壁面的距离。
如果Rey<200,流体处于粘性底层区,使用Wolfstein一方程求解;如果Rey>200,流体处于完全湍流区,使用k-e模型或者雷诺应力模型求解。
增强的壁面处理(Enhanced Wall Treatment)能够在整个近壁区域(即粘性底层,缓冲区和完全湍流外区域)都适用,这种方式将线性律和对数律组合在一起,从而扩大模型的使用范围。
2.2 混合函数
其中a=0.01,b=5。
当y+很小约等于1时流体处在粘性底层,流动规律符合线性律。此时混合函数:
同理y+≈15时,流体处在完全湍流区,流动规律符合对数律。此时混合函数:
从上能够看出,Enhanced Wall Treatment能够自动根据y+的值选择不同的湍流规律,因此Enhanced Wall Treatment适用于整个湍流区域,对y+不敏感。但是如果想要研究粘性底层,还是必须要将网格划分的足够细才可以。
注:
Enhanced Wall Treatment适用于所有基于e方程的湍流模型,如k-e模型,雷诺应力模型
2.3 壁面函数VS Enhanced Wall Treatment
选用文章四十五的案例,将Standard Wall Functions、Scalable Wall Functions和 Enhanced Wall Treatment进行对比,一侧y+=1,另一侧y+>15。
可以看出,Scalable Wall Functions和 Enhanced Wall Treatment的速度曲线明显比较接近,而Standard Wall Functions在y+=1一侧,出现了较大的误差。
3. Menter-Lechner treatment
有两种方式可以用来求解壁面边界层流动,分别是壁面函数法和低雷诺数模型。
壁面函数法文章四十五、四十六进行了详细介绍,它对y+要求很严格;而所谓低雷诺数模型,就是考虑到粘性底层的流动,要求y+<1,如果y+>=1,则求解不准确。
这两种模型对于y+要求苛刻,那么有没有一种模型能够对y+不敏感呢??Menter-Lechner treatment就是这样一种模型。当壁面网格很细,使用低雷诺模型,当壁面网格较粗时,使用壁面函数。
实际上Enhanced Wall Treatment对y+也不敏感。
上文提到Enhanced Wall Treatment依据Rey是否大于200将流动区域划分为粘性底层和完全湍流层。这种划分方法存在一些问题:
1)当湍流强度较低时,流体距离壁面较远,Rey仍然小于200。但Enhanced Wall Treatment方法仍然将这部分流体划分为粘性底层,这显然不正确。
2)当流动处于粘性底层时,一方程用于求解湍流规律,但一方程求解非平衡现象存在问题。
Menter-Lechner treatment方法就是为了解决Enhanced Wall Treatment在低雷诺数时出现的问题。门特-莱克纳近壁处理在湍流动能的输运方程中增加一个源项
式中,Snear-wall仅作用在粘性低层中,用于代替低雷诺数模型。在对数律区域内,Snear-wall自动变为零。
注:
Menter-Lechner treatment方法可用于standard、realizable和RNG k-e湍流模型
4. ω方程--y+不敏感近壁面处理
所有ω方程都可以对粘性底层进行积分,而不需要像e方程那样采用两层模型的方法。因此ω方程默认的就是将粘性底层和对数律层的规律通过混合函数进行混合,从而达到对y+不敏感的近壁面处理。
ω方程将粘性底层与对数律的混合方法与Enhanced Wall Treatment相同,默认对于近壁面的处理就是这种方式。
混合函数
因此对于所有基于ω方程的湍流模型,都不需要考虑近壁面的处理方式,同样也不需要考虑壁面函数。
如k-ω模型,Transition k-kl-omega ( 3 eqn )模型等。Fluent中基于ω方程的湍流模型界面都没有壁面函数的选项。
5. LES Near-Wall Treatment
对于大涡模型LES,Fluent也提供了一种近壁面处理方式LES Near-Wall Treatment。这种处理方式由Werner和Wengle提出,因此也被称为werner-wengle wall function。
这种近壁面处理方式并不能通过界面打开。需要在打开LES模型的前提下,在控制面板输入文本命令:define/models/viscous/near-wall-treatment/werner-wengle-wall-fn?
注:
LES大涡模型在三维模型可以在Fluent湍流模型界面打开,但是二维模型时,需要输入文本命令才能打开LES模型。
文本命令:(rpsetvar 'les-2d? #t)
6. Fluent壁面处理推荐设置
总结:对于k-e模型和雷诺应力模型,可以选择壁面函数,也可以设置近壁面处理;
对于k-ω模型和Spalart-Allmaras,默认方式就是y+不敏感的近壁面处理方式,不需要进行任何设置。
大家选择壁面函数时,推荐使用以下设置:
1) 对于基于e方程的模型,直接使用Menter-Lechner(ML- e)或者Enhanced Wall Treatment。尽量不使用壁面函数。
2) 对于e方程模型,如果必须使用壁面函数,那就选择scalable wall functions
3) 对于k-ω模型,使用默认的y+不敏感的壁面处理方式。实际上所有基于ω方程的湍流模型都是如此,不需要进行任何壁面函数设置。
4) 对于Spalart-Allmaras模型,使用默认的y+不敏感的壁面处理方式,也不需要进行任何壁面函数设置。