吾生有涯 学海无涯
析模有界 知识无界

也来聊聊仿真收敛的事情

看陆姐的文章仿真收敛不看残差,看什么?,深有所感,也来聊聊关于计算仿真收敛的那点烂事儿。

只要是采用迭代法进行求解,就不可避免地要与收敛打交道。流体仿真计算最糟心的事情是什么呢?绝不是你挂机计算了半个月,然后被楼管断了电;也不是计算完了之后发现仿真数据与实验结果相去甚远。最糟心的事情莫过于你计算了许久,软件报给你一个莫名其妙的错误,这个错误也许是Floating Point Exception,也有可能是divergence detected in AMG solver pressure correction。天底下最恶心的事情莫过如此。这就好比我一口咬定你做错了,但就是不告诉你错在哪儿。

当然,皆大欢喜的事情是计算提前收敛。你设置迭代计算1000步,结果在40步残差收敛自动终止迭代,然后美滋滋的认为计算任务完成。那么问题来了:

  • 收敛的结果数据就能用么?

  • 什么样的结果能称之为收敛的结果?

  • 不收敛的结果应该如何处理?

要回答这些问题并非一件容易的事情,尤其是如流体仿真这般复杂的计算。

收敛是针对迭代方程而言的,其表明的是数值计算结果逼近离散方程的解。千万要注意逼近的是离散方程。而这个离散方程是仿真者输入给计算机的,而计算机事实上对这个离散方程的正确性及合理性是完全不关心的。也就是说,计算机只能保证收敛的结果大致能够满足离散完毕后的代数方程。至于这个代数方程是否足以表征要求解的物理问题,那就是另外一回事儿了。

不过有一点可以肯定,不收敛的结果表示迭代计算得到的值无法满足代数方程,因此是不可用的。

因此,收敛的计算结果是否可用,需要仿真者进行判断。但不收敛的结果肯定是不可用的。

收敛的结果需要判断?判断些什么?怎么去判断?

收敛的结果只能表示代数方程组求解没有问题,但无法说明代数方程组没有问题。代数方程组是前处理的成果,涉及的东西太多,比如模型简化、网格分布、各种物理模型、各种离散格式等等,这些东西最终才组装成代数方程组。关于代数方程组的合理性检查,则需要我们对物理现象和计算方法有较为深入的了解。

这个要求有点儿高,不过我们可以定性的去判断计算结果是否合理,一些简单的判断原则:

  • 云图应当是连续的,那种出现斑点和锯齿的云图,要么是计算没收敛,要么是网格太粗糙

  • 流动应当是从高压区域流向低压区域

  • 绝对压力不能小于0,温度不能超过5000 K(如果没有人工调整的话)

当然更简单的判断收敛结果是否可用的方法是用实验值进行比较,先定性比较趋势,趋势正确表示模型选择方面问题不大。其次比较数据,除非特别简单的计算,稍微复杂点儿的模型,初次计算结果与实验值肯定会有极大的偏差,这时只要分布趋势一致,则可以调整模型参数、加密计算网格等来提高计算精度。

事实上很多工程问题的仿真计算,计算残差并不能收敛到设定值。一些软件将残差收敛标准定为0.001,也有一些定得更小。残差的计算方式很多,最简单的可能是计算两次迭代的差值,也有采用均方差、相对偏差等。不管采用何种标准,基本上比较的都是同一物理量两次迭代间的差异。理想状态下该差值应当为零,但实际上做不到,因此用一个很小的值来表示随迭代进行该物理量的变化量很小。这里要说的是,CFD计算迭代过程中控制的都是基本物理量的残差,如速度、压力、温度、组分等。为何要将残差设置得这么小,主要是因为要控制一些由这些基本物理量导出的其他物理量的精度。比如说流动阻力,通常认为流动阻力与速度的平方成正比,如果速度计算精度误差很大,则阻力计算的误差就更大了。

但是工程计算有时候是允许比较大的误差的,这时可能就不需要追求那么小的基本量残差,所以会出现监测物理量的方式来判断收敛。这里可以换句话表达:残差如果能收敛,则物理量监测一定能达到稳定,反之则不成立。只有在残差无法达到收敛的时候才会退而求其次考虑监测物理量。

工程中的问题大多非常复杂,计算过程中可能会引入非常复杂的数理模型,这时候残差不收敛就成了家常便饭,所以物理量监测在工程计算中经常会采用。但是也存在一些问题,比如说某个仿真case里面我们关注的物理量不止一个,好比我既关注压力,也关注温度,以及由此引出的其他衍生量,这时可能会存在某一物理量稳定了其他物理量不稳定的情况,不管怎么调整也无法使得所有的物理量都达到稳定。出现这种情况的主要原因有两个:

  • 物理量本身就不可能达到稳定。一个最简单的案例如圆柱绕流。用稳态计算圆柱绕流情况,监测升力和阻力,不管你网格划分有多好,选择的算法有多先进,升阻力监测曲线总是在震荡。出现这种物理量周期性震荡的时候,需要研究一下问题本身是否是瞬态的,此时也可以尝试利用稳态求解中的伪瞬态算法计算。

  • 物理量理论上能达到稳定,但计算时无法稳定,呈不规则震荡。此时应当检查网格质量、物理模型以及求解算法。还需要关注初始条件设置是否合理。

工程中有时候物理量监测也始终无法收敛,这时候还有一种更粗糙的判断方式:监测计算区域内物理量是否守恒。这主要包括质量守恒与能量守恒。这种判断方式要比物理量监测粗糙。事实上如果物理量能够达到稳定,则一定能够满足质量守恒与能量守恒,反之不成立


其实前面的话都是废话,工程中真实场景是什么?

真实场景可能是这样的:老板给你一下午的时间计算,在下班之前要拿到计算报告,你估算一下自己拥有的计算资源,三个小时之后停止计算,至于收敛不收敛,who care?

本篇文章来源于微信公众号: CFD之道

赞(1) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《也来聊聊仿真收敛的事情》
文章链接:https://www.topcfd.cn/11261/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册