随着硬件设备日益进步,我们自己手头的设备已经可以应付简单的CFD计算了,CPU核心越来越多,主频也在提高,所以很多软件支持并行计算。并行计算可以加快计算速度,减少等待时间。
就在前几天,我遇到了一个问题。
在笔记本上设置好CASE后copy到服务器中去计算,为了验证算例是否正常在笔记本上也跑了一组数据,结果发现计算结果差异很大,同一个算例和工况的情况下效率差别20%,这是难以接受的。笔记本和服务器主要的区别在于并行计算数不同:笔记本开8核、服务器开48核,我在想是不是不同的线程数导致了这种结果。所以采用了一个案例来验证我的猜想。
这是一个内部流动比较复杂的CFD案例,设置总迭代步数600步,计算完成后对比一下计算结果
以下配图顺序以10H起,1核止,按照顺序排列!
残差
可以看到这10个案例收敛精度都差不多,刚达到10-3次,我们案例中设置的目标收敛精度是10-4次,600步并未收敛!
扬程监测曲线
扬程及效率
可以看到在相同的步数及收敛情况下,扬程中9核、8核、3核、2核的偏差相较其他组偏大,效率中10核、9核、8核、3核的偏差相较其他组偏大,没有明显的规律!
考虑到可能是因为上面的案例没有达到收敛,所以出现了这种结果不对等的情况,所以我们选择一个简单的离心泵模型,可以保证残差能内收敛至10-5次
残差
扬程监测曲线
扬程及效率
可以看到即便是完全收敛的案例,效率也会有很小的偏差,但是总体相较于案例1还是好了很多的
结论
未收敛的CFD计算结果不可信;不同的并行线程数对计算结果尤其是未收敛的结算结果影响较大。
说到这里,何为收敛?如何判断是否收敛?
这里就不得不祭出《水泵与泵站流动分析方法》一书中的总结了:
免责声明
泵小丫收集资源均来自网络
仅用于内部交流之用,如有需要请支持正版
目前为止,没有一个充分条件能判断收敛,只能拿很多的必要条件加以判断
CPU线程数应该只是影响计算速度吧,对计算精度没什么影响
可以试试看
有影响,计算域分区越多,界面处的数据传递误差会累积。