之所以取这么个名字,主要是因为CFD若要想在工程中得到广泛的应用,必须克服两大难点:准确性与可信性。在工程上,尤其是一些关键的工程中,谁也不敢轻易的应用一些精度与可信度得不到保证的数据。有人会说,在固体计算领域,利用数值计算方法进行辅助设计已经很普遍了啊,用CFD支持设计存在哪些额外的困难呢?
与固体应力计算使用有限单元法不同,目前主流的CFD软件几乎都是采用的有限体积法(除了CFX采用混合有限元法与有限体积法外,FLUENT、STAR-CD、Phonecis、Flow-3D等都是采用的有限体积法)。在计算量上来说,相同网格数量的模型,有限体积法消耗的内存要少于有限元法。在有限单元网格中存在的高次单元,其单元节点位于网格边的中点及网格体的中心,但是有限体积法中的高阶格式,其并非在网格单元中添加节点,而地更多的利用周围的节点。但是正因为如此,有限体积法计算精度要低于有限元法(在相同网格数量情况下)。影响CFD计算精度及可信度的原因自然不可能全怪罪于算法,更多的是问题存在于使用者及客观环境。
CFD软件是一个黑盒子,利用CFD软件解决工程问题,软件使用者对于数据流向并不清楚,实际上对于非CFD专业的人事来说,也不必完全清楚CFD的内部运作方式,但是,如何有效的利用当前的软件,如何最大限度的发挥当前软件的计算性能,将计算结果精度及可信度提高,仍然是非常重要的,也是每一个从事CFD工程应用的人必须注意的。最需要注意的部分包括下面一些内容。
一、精度
1、算法导致的精度问题。一般来说,高阶算法的精度要高于低阶精度。但是收敛性却相反,采用高阶算法要比低阶算法收敛更困难一些。在一些高速流动情况中,采用迎风格式比中心差分格式能更好的收敛,在扩散占优的流动中则相反。以FLUENT为例,其具有一阶迎风格式与二阶迎风格式、幂律格式、QUICK格式以及三阶MUSCL格式。通常一阶迎风格式用于初步求解,较少用于最终计算结果的获得。QUICK格式在结构网格中具有三阶精度且收敛性较好,但是在非结构网格中只有二阶精度。二阶迎风格式在实际工程中用得非常多。三阶MUSCL格式用得较少,收敛性不是很好。
2、边界条件。边界条件会对计算结果产生本质影响。也就是说,不确切的边界条件会导致不确切的计算结果,错误的边界条件一定得不到正确的结果。在实际工程中,能做为边界的位置的信息一定是确切的。换句话说,用户使用不确切的边界值,责任不在软件。当然有时候受条件限制得不到边界物理量,但是,软件的使用者应当对自己输入的边界值负责。
其实相比较固体有限元应力计算,流体边界值难以测量也是导致计算精度及可信度降低的原因之一。在固体计算中,边界值可以是力可以是位移,这些都是容易测量的量。但是在流体中,边界值常常是压力、速度、流量、体积分数等物理量,这些量的测量都是对实验人员的考验。
3、网格。网格是为计算所准备的。也许在将来对NS方程的数值求解不再依赖于网格呢。由于网格的存在,导致数值计算永远得不到真值。这里不去追究数学方程与真实世界的差异,只分辨数值计算结果与数学方程解的差别。在理论上,只有在计算网格大小为0的时候数值计算结果才等同于数学方程的解,但是大家都知道,网格大小为0是不可能的。同时由于计算机的精度限制,网格尺寸缩小会增加舍入误差,也就是说,计算精度并不是随着网格数量的减小而不断增加,同时,网格尺寸的减小会增加计算资源的消耗。在进行计算中,常常要进行网格独立性验证,也是避免做这类吃力不讨好的事情。
4、模型。将模型放在精度这里其实是不太合适的,但是不恰当的模型的确会很大程度上影响到计算精度。例如FLUENT中的湍流模型有很多种,如零方程模型、一方程模型、双方程模型等等,不同的模型有其最合适的使用范围,如果使用不当,势必会造成计算精度下降。合理的选择计算模型,不止能提高计算精度,也能提高计算结果的可信度。但是要合理地选择模型,很大程度上依赖与使用者的理论功底和对问题的认识程度。
二、可信度
在AIAA的官方文档中,对于可信度的验证是有明确的说明的。可信度通常指数学模型与真实世界的差异。在这方面,CFD软件使用者能控制的部分并不多。主要有以下一些方面。
1、几何模型。有时候为了网格划分方便或计算资源考虑,简化了真实模型细节。例如一些微小特征、将三维模型简化为二维计算、周期模型等等。需要注意的是,在进行简化之前,对模型简化所可能造成的后果有明确的认识。究竟能不能简化、简化会不会造成精度的严重损失,这些都是需要考虑的。比如计算一段直管中的流动问题,从几何上来讲,可以简化为平面模型、可以简化为轴对称旋转问题、可以简化为轴对称问题,但是对于不同的物理情况,能否简化就很值得商榷。
模型中的细小特征简化问题也是需要去思考的。将细小模型进行简化是处于计算资源上的考虑,但若细小特征处于敏感位置,对计算结果的影响比较大时,能否将其简化掉则也是必须考虑的问题。
2、物理模型。再一次提到物理模型。现实世界是一个复杂的系统,我们在进行研究时,不可能考虑所有的影响因素,只能选取一些主要因素去进行考虑。很简单的例子,NS方程是从三大守恒定律出发的,所做的假设比较少,但是很遗憾,对于复杂结构直接数值求解NS方程目前还不可能,于是为了工程需要,对NS方程离散过程进行了一系列的简化,于是出现了各种湍流模式,出现了各种燃烧模型、多相流模型。
3、模型参数。现在很多工程软件都集成了物理模型,其中很多模型参数都是一些半经验或经验参数,并不一定会适应自己的模型。但是这些模型参数的获取是一件非常困难的事情,通常都是通过实验获取。
在最后,再来谈谈CFD计算结果的验证以及计算修正的问题。
通常实验是最好的验证手段,但是存在一个问题,实验过程中的参数很难与计算输入的参数完全吻合。对于实际工程问题,采用实验有时候是唯一的验证手段。一般来说,数值计算结果再工程上与实验结果误差在10%以内是被允许的。在数值计算结果与实验数据存在很大差异时,一般进行以下一些步骤的检查:
1)检查几何模型。分析是否忽略了关键几何特征、检查边界位置是否合适。很多时候边界位置设得不合适,可能会导致计算振荡,不收敛等情况发生。同时由于不同的软件对于不同的边界组合方式处理方法存在差异,因此需要选择合适的边界组合方式(如FLUENT中压力边界与outflow边界相冲,最好不要同时出现,可能导致收敛问题。流量入口边界收敛要比压力入口困难)。
2)检查物理模型。是否选用了不合适的模型。每一种模型都有一定的使用范围,使用者需要对这些使用限制有深刻的认识才能更好的进行选择。例如FLUENT中,湍流模型有很多,标准K-E模型适合一般的工程流动问题,但是对于强旋流误差较大,RNG K-E模型适合旋转流动湍流计算,SA模型适合航空外流计算,K-W适合边界层计算,雷诺模型适合各向异性湍流的计算,但是计算量大不易收敛。因此在进行选择需要仔细的考虑选择的模型是否适合自己的问题,一旦模型选择错误,轻则造成大的误差,重则不收敛计算出错。
3)检查是否忽略了不该忽略的物理现象。例如计算复杂几何模型时出现大的负压区,是否需要考虑空化。计算高压气体时,是否考虑可压缩性,是否考虑粘性热。还有一些情况下,是否考虑蒸发、冷凝等相变情况。有时候这些物理现象会导致计算的不收敛乃至计算错误。
4)优化网格。网格质量始终是CFD工程师们的努力内容。好的网格质量能够增强收敛、提高计算精度、减少计算时间。因此在时间充足的情况下,尽可能的去提高网格质量。同时,对于流动情况复杂的区域进行网格加密处理。在计算结果达到要求后,还需要进行网格独立性验证。
5)边界条件检查。测量精度是否满足要求?若边界信息不是通过仪器测量得出而是通过计算,那么采用的公式使用条件是否能够接受?
总之,虽然CFD的输入输出较为简单,但是要想得到比较好的计算结果实际上是相当的困难的,不但需要良好的实验设备的支持,更需要使用者拥有深厚的理论功底。在当前,很多高校的学生都加入了CFD计算这个行业,有很多像我这样的半路出家的,理论基础薄弱,在应用CFD过程中出现了很多的问题,不但会在工程上造成灾难,还会败坏CFD的名声。所以痛定思痛,下定决心学好理论,只有拥有良好的理论功底,才有可能将CFD更好的应用于工程中,更好的让CFD指导产品设计。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删