1. 库朗数
1.1 概念理解
什么是库朗数?库朗数是用来衡量数值计算稳定性的一个物理量,也被称为CFL数、CFL准则
在流体力学仿真软件中,都能找到库朗数(Courant number)的解释和定义。在CFX的帮助文件里给出了一个比较直观的公式来定义一维网格的库朗数(Courant Number):
其中,u为流体速度;Δt为时间步长;Δx为网格尺寸;
形象点理解,u*Δt表示流体在Δt时间内流动的距离,除以网格尺寸,则表示流体在一个时间步长内流过了多少个网格。显然一个时间步长内流过的网格越多,计算就越快,但收敛性就会越差。
类似于人赛跑,跑得快固然很快能跑完,但也可能中间摔跟头。
库朗数主要受流速u、时间步长Δt和网格尺寸Δx的影响。而流速u和网格尺寸Δx主要由实际工况决定,不能人为控制,因此主要由时间步长Δt来控制库朗数。
1.2 取值标准
一般来说,考虑收敛性的话,库朗数肯定越低越好,但相应的时间步长也会很小,收敛速度变慢。
一般取值在1~10之间比较合适,当然要根据实际情况,如收敛性比较差,可适当降低这个数值。收敛性比较好,收敛速度慢,可适当增加库朗数。Fluent帮助文档认为对于大多数问题,库朗数设置为1能够满足要求。
实际上,Fluent很多案例的库朗数都是50,这主要是选择了隐式算法的原因
1.3 库朗数于亚松驰因子
亚松驰因子under-relaxation factor
单元格内物理量φ取决于旧值φold、变化量△φ和亚松弛因子α。也就是说亚松弛因子是一个调节物理量变化的系数。
基于压力的耦合算法中库朗数可用亚松驰因子表示出来:
2. 库朗数的设置
2.1 基于密度求解器Density-based
显示格式Explicit Formulation
默认是1,对于2维问题可适当增加库朗数,但不要超过2.0。如果设置没有问题,但是计算发散了,或者残差上升得非常快,就必须降低 Courant number,可能需要降低到0.5,甚至0.1。但如果收敛性很好,就可以增加 Courant number。
隐式格式Implicit Formulation
默认库朗数为 5.0。通常可以 增加到 10、20、100 甚至更高。与显示一样可根据收敛情况进行更改。
注:
1.基于密度求解器
General界面可选择求解器
Solution Methods界面可设置是显式格式还是隐式格式
Solution Controls可设置库朗数
2.时间步长的设置
由前面库朗数的定义可知,时间步长和库朗数相互决定,因此设置了库朗数,那么时间步长就确定了。
无论是基于什么求解器,Fluent如果可以设置库朗数,那么软件会自动计算时间步长,尽管在Run Calculation界面仍然有Time Step Size栏,仍然可以输入数值,但这栏是不起任何作用的。既不会对计算收敛性起作用,也不代表真正的流动时间,这一点要千万注意。
实际测试了一下,确实如此,更改库朗数会改变收敛性和流动时间,而Time Step Size不起作用。
2.2 基于压力求解器Pressure-based
使用基于压力求解器,速度压力耦合pressure-velocity scheme 选择Coupled,在 Solution Controls界面会出现Flow Courant number
默认值是200,Fluent帮助文档中多设置为50,在实际计算过程中可减小到4。然后等计算比较稳定时,再增加库朗数。
3. 时间步长
上面我们用了非常多的篇幅介绍了库朗数及库朗数的设置,但是在实际的设置中,我们会发现很少能够在设置中看到库朗数选项,更别提设置库朗数了。
这主要是因为大多数的算例都是基于压力求解器的,因此无法直接设置库朗数。
如果设置中不出现库朗数,那要如何间接设置库朗数呢?? 设置时间步长!!!
通过上面的定义可知,库朗数与时间步长存在直接的关系,
对上式进行变形,可以得到时间步长为
流体的流速u,最小网格尺寸Δx都能大致估算出来,Courant number一般设置在1-10之间,可取5。由此我们可以大致估算出时间步长。
如:流速u=2.0m/s,最小网格尺寸Δx=0.0002m,CFL=5,可以计算出时间步长Δt=5e-4s
上面的计算过程很容易通过编程实现,因此我写了个图形界面小程序,直接输入数值就可以得到时间步长。
但要注意,上式只是库朗数在一维网格上的定义,实际的定义要复杂很多,因此只能用来估算。