收敛表示仿真软件已经把流场反复修正到位,可以结束仿真运算了。
如何判断仿真是否已经收敛,让我们很为难。
放宽收敛标准,可能把没有收敛的错误结果当作收敛结果接受了。
收紧收敛标准,又会多运行很多步,白白浪费很多时间。
所以,我们希望有个放之四海而皆准的收敛标准,在仿真运行到收敛的时候,正好结束仿真。这个标准,不是一个数,不是一个公式。从把握全局标准的残差,到追求终局目标的设计参数,最后深挖局部观察的流动现象。从表及里,一层层剥开。看完这三层,才敢说是否已经收敛。
一、全局标准
残差——仿真软件估算的误差
常规的收敛判断是:残差小到十的负四次方、负六次方……。
对于简单算例,直接用软件给你的标准,残差达到标准就认为收敛。
对于复杂算例,谁也无法只用残差判断是否收敛。
仿真软件运行几十步后,残差完成了漂亮的跳水,就不死不活地上上下下波动。
你猜不透,残差背后,仿真软件是在辛苦地修正流场,还是在搅乱流场。
你猜不透,残差下降到十的负六次方,表示流动已经修正合理,还是软件根本忽视了不合理的分布。残差只是软件估算的整个流场的残余误差,并没有告诉你流场在发生什么。
计算机不能自动设置一个收敛准则,取代你的判断,所以你有存在的价值。
二、终局目标
换个思路,仿真的终局目标就是获得设计参数。如果你要算阻力,为什么不直接观察阻力变化?直接观察你关心的参数变化。例如:阻力、升力、薄弱点的温度、漩涡附近的压强、掺混处的浓度。管它残差如何,反正你又不用残差做设计。只要你最挂念的位置没有出问题,你最关注的设计参数平稳下来,这个仿真结果基本可以用了。
如果阻力还在持续下降,即使残差再小,你也不敢说收敛了,还要继续运行。
如果你关心的阻力,波动范围超出了容忍的范围,管它残差是大是小,你都要继续运行下去。还有一种收敛,例如阻力虽然在波动,但是逐步出现了周期性。说明你遇到了个非要波动的流场,你再继续运行,仿真软件也无法消除流场的波动。这个时候,残差也大,参数也波动,但是仿真已经收敛了。把重要参数随仿真运行步数变化的曲线与残差一起动态显示出来。这种简单粗暴的方法很有效。
时刻记住:你追求的是参数,不是残差。
三、局部观察
以上只是帮助你判断是否收敛。最好你还能够明白仿真运行为什么会收敛,为什么不收敛。
建议你,每运行几百步自动存储一个仿真结果。
以前这么做也许是怕运行突然中断,可以从存储的这一步重新启动。现在要打开流场数据,看看每过几百步发生了什么变化。
但是我们要看什么呢?流场中要看的数不胜数,根本看不过来。
只看这两种情况:
1.对设计参数很重要的位置,比如影响阻力最大的表面附面层、底部分离涡。其他位置闹翻了天对设计参数影响也不大,就放过吧。
2.变化最大的位置:速度变化最大的位置、压强变化最大的区域、温度最高的区域。这种位置的数据在仿真运行过程中波动最大,往往是残差的发源地。
观察这些细节,你就会发现收敛是真收敛还是假收敛。
也许是一个关键的漩涡,仿真软件的数值粘性把它固化了,该动不能动,表面上是收敛了,实际是被抹杀了。
也许是一个无关的小波动,被仿真软件放大,流场实在消化不了,在流场中来回乱窜。表面上是不收敛,实际是被干扰了。
看到流场的细节,你才知道仿真发生了什么故事。但是只有对流动观察思考,你才能知道该看什么细节,否则你会被细节淹没。
观察让你知道应该观察什么
观察对了地方才能观察到真相
结论:
用残差这个全局标准判断收敛,只适用于简单的算例。复杂的算例要用你的大脑判断。
盯着设计参数这个终局目标,因为你追求的是参数,不是残差。
观察关键局部读懂仿真运行的内在故事,判断是真收敛、假收敛。然而,只有观察思考才能知道哪里是关键。