1. 收敛与发散的概念
使用Fluent最让人头疼的事情并不是不知道怎么操作,也不是模型的选取。最让人头疼的事情是模型设置好了,各种操作一气呵成,堪称完美,但是最后计算的时候,确是各种发散,就是不收敛。
在Fluent中,收敛和发散是数值模拟过程的重要概念,收敛指的是在数值模拟中,当迭代过程继续进行时,解逐渐趋于稳定,即变量的残差(如速度、压力、能量等物理量)不断减小并达到一个预设的收敛标准。在数值求解中,这意味着方程的解已经接近真实解,进一步迭代不再显著改变解的值。
发散指的是迭代过程中解不稳定,残差反而不断增大,可能会导致数值解崩溃或者无法得到物理意义上的解。这通常表明求解过程中出现了问题
2. Fluent收敛的标志
在Fluent中判断模拟是否收敛,并没有一个统一的标准,一般我们都结合以下几个方面来综合判断
2.1残差水平
残差是监控收敛性的重要指标,在Fluent中,默认的收敛标准是:除了能量残差外,所有变量的残差值降到低于1e-3时认为计算收敛,而能量残差值的收敛标准为低于1e-6 。
实际上,残差代表着数值计算的稳定性,残差越低,说明前一次的计算结果和后一次的计算结果越接近,得到的值也越准确。
一般情况下,计算时的残差确实下降到设定的标准值时,基本上可以认为计算已经收敛。但是,残差标准是可以人为设置的,将残差标准设置的很高,虽然很容易达到这个值,但是计算结果却并不一定是收敛的。
同样的,有些情况下,想要达到设定的残差标准非常困难,但这并不代表不收敛。因此是否收敛还需要看其他的判断标准
要注意,对于瞬态计算,在每个时间步残差出现有规律的波动是正常现象。如果瞬态计算的残差没有波动,且每个时间步只计算一两步就收敛,说明此时的计算已经达到了稳态,物理量不会发生变化了。
2.2 物理量稳定性
即使残差没有达到设定值,只要所关心的物理量很稳定,也可以认为收敛。
例如,我们监测整个计算域的温度值,如果计算过程中,温度值已经非常稳定了,此时即使残差没有达到标准,也可以认为收敛了。相反,如果残差已经达到了标准,但是监测的物理量却波动很大,那么也不能认为是收敛了。
这里需要注意的是要监测什么物理量,并不是说监测什么物理量都可以,选择物理量的标准应该是我们所关注的。
比如,我们研究的是空调房间中的温湿度,那么监测的物理量就应该是温湿度;我们研究传热问题,监测的物理量就应该是和传热相关的物理量,比如温度、传热速率等。
之所以需要注意这点,是因为有些情况下,一些基本的物理量稳定了,但是要研究的物理量却没有稳定。传热和流动方程很容易稳定,而一些其他的方程稳定起来却比较困难,比如PBE方程,即群体平衡模型。
要注意这里说的稳定应该是稳态计算情况,或者瞬态计算已经达到了稳态状态。对于瞬态计算,由于可能计算不到准稳态情况,因此关注的应该是物理量变化的稳定性,也就是曲线的光滑性,不能出现较大的波动
2. 3 通量守恒
在没有源项的情况下,通过Flux Reports对话框检查流入和流出整个系统的质量、动量、能量是否守恒。
例如,在没有质量源项和能量源项的情况下,进出口Mass Flow Rate的Net Results应该很小,接近0;各壁面的Total Heat Transfer Rate也应该接近0 。
要注意,这里的通量守恒只能算是计算收敛的必要不充分条件,即收敛一定通量守恒,而通量守恒不一定收敛。
对于通量是否守恒,并不是说只有净通量为0才是守恒,具体守恒与否的判断标准,可以参考文章:四十四、Fluent 收敛标准-质量和能量守恒
2.4 残差趋势
如果残差收敛的比较慢,残差下降缓慢,那么即使达不到残差标准,根据残差曲线的下降趋势也可以判断是否收敛。
当残差曲线一直趋于下降趋势,且波动不大,表明数值解趋于稳定,结合第2点监测物理量的稳定性,就可以认为已经达到收敛。
3. Fluent增强收敛性的策略
3.1 稳态计算
对于稳态计算,优先考虑使用伪瞬态进行计算,可以大大加快收敛。可参考文章:四十三、Fluent增强收敛性-伪瞬态计算
初始值的选取对于稳态问题的收敛性有所影响,设置初始值时,最好选择比较合理的值,比如对于流动传热问题,初始温度值可以设置成整个流场的平均温度值,设置的初始值越接近最终的收敛结果,收敛性就会越好。
如果收敛性还是不好,可以不一次计算完所有的方程,而只计算部分的方程,等其他方程收敛性较好时,再勾选剩余的方程。
一般来说,Fluent对于常规的流动方程和传热方程的计算收敛性都很好。
3.2 瞬态计算
对于瞬态计算,初始条件直接影响计算结果,因此无法随意更改初始值。如果瞬态计算收敛性不太好,可以尝试一下的一些方法。
1. 先小时间步长,后大时间步长
瞬态计算的时间步长对瞬态计算的收敛性影响巨大,,如果瞬态计算收敛性不好,首先考虑的就应该是时间步长是否过大,可以先尝试减小时间步长,看看是否收敛。时间步长的设置标准可以参考文章:三十九、Fluent时间步长的估算与库朗数
在瞬态计算初期,使用较小的时间步长有助于收敛性。在求解过程中,如果解已经趋于稳定,可以逐步增大时间步长,以加快计算速度。
还可以使用自适应的时间步长。参考文章:一文说清楚Fluent自适应时间步长
2.降低松弛因子
松弛因子表示的是当前迭代步和下一迭代步的差距,松弛因子越小,有助于瞬态计算的收敛,但收敛速度就越慢。
松弛因子的选取有一定的原则,可参考文章:二十九、Fluent瞬态时间步长与迭代步数的讨论
3. 先稳态后瞬态
如果瞬态计算收敛性不太好,一方面可以考虑上面提到的先计算部分方程,另外一方面还可以考虑先稳态计算,后瞬态计算的策略。在稳态计算的基础之上进行瞬态计算
比如对于降膜蒸发的问题,我们主要关注流场中的蒸汽分布随时间变化的情况,那么水的流动状态可以直接先计算到稳定状态,然后再计算蒸发冷凝。也就是先稳态计算水的流动(关闭蒸发冷凝模拟),等水的流动收敛之后,再打开蒸发冷凝模型进行计算。
4. 提高网格质量
局部细化网格:对于存在较大梯度变化或复杂流动现象的区域,可以采用局部细化网格,提高这些区域的计算精度和收敛性。
或者使用网格自适应操作,参考文章:五十四、Fluent网格自适应详细操作
为了方便大家学习交流,我创建了QQ群:584245112,大家可以在其中讨论相关的问题,同时我会将所有文章的源文件都放到QQ群中,还会放一些其它的学习文件。欢迎大家加入。