误差是永远不可能被消除的,只能尽可能减少,这个是前提条件。仿真和实验都有自己的误差,为了提高结果精度,减少误差,实验和仿真都有很多办法,但是总归都会提升成本。对此,需要合理平衡所需要的误差范围和可承受的成本,因为各类减少误差的措施都存在边际收益递减而边界成本递增。
对于仿真工作,首先要了解自己所分析的问题,以及实验的做法。某些时候仿真和实验的数据差异较大,并不是因为仿真做错了,而是因为两者的物理场景不一样。
严格来说,仿真和实验必须针对严格一致的物理场景,才能够说明仿真相对于实验的误差。实际上,这个要求很难满足,特别是仿真中的某些理想化条件,在实验过程中难以满足。对此,需要了解实验的做法,以及实验数据的某些处理方法。对于很多常见实验,会存在相关行业标准对实验操作和数据处理方法进行规范化说明,需要以此为参考。
例如获取风扇的P-Q曲线,虽然要求为恒定转速,但实验过程中不可能和设定的目标转速一点不差。对此,需要将实验的数据进行换算,将实验的P-Q曲线数据换算到目标转速上(具体方法参考AMCA210-16标准7.9节),然后再和仿真的数据进行对比,说明结果的误差。
风洞测试示意图(图源:www.c-sgroup.com)
很多人存在一个认识:一定要用最高级工具,一定要上最复杂操作,结果才准。就个人理解,这并不是软件用得越高端,操作设置越复杂,结果就一定越准确。通常,仿真需要的是在可接受时间内,利用现有硬件资源,给出精度可接受的结果。当然,用最高级的软件,做最复杂的操作一定不会错,但是很多问题并不需要如此大的代价来完成。
如果是理论完善,参考资料较多的常见工程问题,从实际应用角度考虑,采用主流的商业软件足够。除非是需要研究算法或者某些特殊原因,不推荐采用开源程序。相对而言,工具运用层面更重要的是,针对问题选择合适的工具,清楚XX问题是否适合采用XX软件分析。
例如车轮过水坑导致水花飞溅的问题,使用基于粒子法的软件比使用基于有限体积法的软件更适合。
赛车高速过水坑时飞溅的水花(图源:www.hyundainews.com)
CFD仿真是数值计算,对计算域空间离散是仿真必做的工作,也直接决定了结果的精度。
当前CFD主流算法是有限体积法,空间离散方式为网格。网格划分对于仿真结果的影响怎么强调都不为过。单元数量太多则计算量太大,对硬件要求太高,但是计算误差并不会因为单元数量的增加而无限制的缩小。为此,需要在单元数量和精度之间取得平衡。
格子玻尔兹曼法、粒子法等其他CFD的算法虽然空间离散方式不同,但也存在类似情况,需要平衡空间离散带来的计算量和结果精度。
瞬态计算,需要考虑时间步长,即时间离散。同样的,计算误差并不会因为时间步长缩短而无限制的缩小。
网格数量和结果误差的关系示意
误差虽然无法完全消除,但可以尽可能减少。实际工作中,提升仿真的精度不可能一蹴而就,需要一定时间的经验积累。
如果从零开始做仿真,提高仿真精度会经历以下阶段:
提升仿真精度是个迭代优化的过程,实验方法与设备改进、硬件算力加强、软件功能更新,必然之前积累的仿真标准和经验需要更新换代,从而跟上时代和行业发展的步伐。