weixin 发表于 2022-5-25 10:59

约等于算命的CFD到底有多不靠谱?

随着计算流体力学 (CFD) 在各行各业的工程应用不断深入,相信小伙伴们对于CFD这个磨人的小妖精一定是又爱又恨。爱的是CFD给了我们生存的技能和恰(忽)饭(悠)的本领,恨的是CFD似乎特别不靠谱,常常和实际的结果不一致,导致“啪啪”的打脸。于是,就有小伙伴开始抱怨“通过数值方法求解N-S方程的CFD简直就是算命,准不准都是看天。”

看上去高大上的CFD咋就成了不靠谱的数值算命了呢?今天小编就和大家扒一扒压在CFD计算精度头上的三座大山。

第一座大山:软件本身的误差不识庐山真面目,只缘身在此山中——首先CFD工具本身便会带来不易觉察的误差。CFD软件从诞生的那刻起,误差便不可避免的出现了。

数学模型的误差

除了暴力求解N-S方程的DNS(直接数值模拟)方法之外,一切粗粒化的数学模型(RANS,LES等)天生会带来额外的误差。人们对N-S方程的种种处理,目的只有一个——让它易于求解。比如大家最熟悉的RANS模型中,为了求解湍流的脉动速度额外产生的雷诺应力,爱唱秦腔的布辛涅斯克 (Boussinesq) 本着“他大舅他二舅都是他舅的原则”,直接将雷诺应力类比成了平均应力,即用涡粘性系数和速度梯度的乘积表示雷诺应力。于是,RANS方法的核心就转化成了涡粘性系数的求解,进而便出现了各种“假设满天飞”的湍流模型。因此,CFD的数学模型从本质上就存在一定的假设,这些假设都可能在具体的求解中引入误差。

微分方程的离散化误差

CFDer们常常挂在嘴边的一句话便是“N-S方程是一组难以直接求解的非线性偏微分方程组”。因此,实际求解时,N-S方程需要转化为线性方程,也就是我们常说的数值格式的构建。常见的构建方法有多种,比如对于空间的离散,包含有限差分法、有限体积法、有限元法等等。

无论哪种数值格式,都避免不了偏微分方程转化为线性方程的过程中产生的误差,即离散化误差。比如对于下图中的一维导热问题,偏微分方程离散后略去的高阶量即离散化误差的来源。
离散误差本质上是方程中的各项在展开过程中的截断误差,其大小和离散尺度相关。可以想象,当网格间距的大小趋于零时,线性方程将越来越逼近于原始的偏微分方程。随着网格的细化,该解对网格间距变得不那么敏感,并接近连续解,这就是网格收敛。

但是在开始模拟之前,通常很难精确地指出网格尺度和精确解之间的关系,因此人们常常对网格进行一步步加密的试算,直到网格收敛,即网格无关性验证。不过对于许多离散化模型,离散化误差的大小不仅仅取决于网格大小,还取决于网格质量——较差的网格也会造成局部物理量的失真。

第二座大山:使用者误差欲渡黄河冰塞川,将登太行雪满山——即使博得一件登山神器,面对“使用者误差”这座大山,CFDer们仍需处处小心,因为路上的坑实在是太多了。

仿真模型近似误差

仿真模型的不准确,通俗点讲就是几何不精确。这不仅来源于人们对精确模型的未知,还来源于为了减少人力和计算资源消耗而故意做出的模型简化。
比如小伙伴们在进行模型清理时会不得不抹去一些细节,甚至把过于细小的几何直接删除。

物理模型的近似误差

“偷换概念”恐怕是CFDer们做的最多的事情:原本是瞬态的流动,非要近似为稳态;明明是有热量传输的场景,却被简化为绝热——这样的例子数不胜数,纵然许多时候人们对物理的简化无伤大雅,但并非每次我们都拿捏得准确。比如多级旋转机械中动\静交界面常通过掺混面交换数据;而在许多工况下,流动本身的周向均匀性就很差,继续采用这种方法将会使精度大大恶化。

边界条件的处理误差

边界条件不能精准量化是另一个主要的使用者误差。比如实际道路上的风阻系数往往比均匀来流的仿真结果更大,除了几何的差异之外,这意味着上游来流的湍流度在计算中被低估了——即使人们可以通过实验测量来流的不稳定性(比如下图中通过皮托管测量来流的不稳定性),但仍难以实施——我们无法把进口位置设置在如此靠近车辆的位置。因此,仿真的边界条件和实际的差异往往会进一步加大仿真结果的误差。

第三座大山:求解误差政入万山围子里,一山放出一山拦——即使小伙伴们考虑得万分周全,终于要放到计算机上求解时,也不得不面对求解过程带来的误差。

计算机舍入误差

计算机中使用固定数位的浮点数(比如16位或32位)进行计算或者存储。与其他误差相比,舍入误差通常被认为不太重要——不过有的时候,选择双精度能够带来确切的收益,比如对于声压级很低的场景,双精度计算才能捕捉更为微弱的压力脉动。

迭代收敛误差

大部分CFD软件都依赖于迭代求解,这也意味着即使计算稳定推进,仍会产生误差。而对于非定常计算,这种误差将会积累——如果每个时间步内的误差较大,那么计算到最后时刻,流场可能已经面目全非了。
细心的读者们可以发现,这三座大山中的后两座,跟软件本身无关,主要取决于使用者的经验或者计算机的算力。而三座大山中最难啃的还是第一座,堪称山中的喜马拉雅。

喜马拉雅的挑战地崩山摧壮士死,然后天梯石栈相钩连——自从CFD诞生以来,大师们就孜孜不倦的为提高计算精度而努力,构建了许多高精度的数值算法。

但喜马拉雅不是那么容易就能轻易征服的。不过随着计算条件的发展,众多学者和研究机构已经跃跃一试了。而NASA这个航空航天领域的扛把子,在2014年联合波音、普惠、斯坦福、MIT等一众大佬,发布了对未来CFD工具的发展展望,即“NASA Vision 2030 CFD Code”。

在这份报告中,NASA列举了未来可期的技术路线。其中,针对计算的精度改进,NASA着重强调了高精度湍流模型和高阶算法。

RANS+LES

经过几十年的发展,对于分离不大的稳定流动,RANS已经能很好应对。而对于分离区域的湍流流动,RANS却显得力不从心。NASA也指出,在可预计的算力发展范围内,大面积使用LES方法似乎仍不现实。因此,基于RANS-LES的混合方法和基于壁面模型的LES方法为解决这个问题提供了最有前景的技术,但这些方法中还有一些重要的建模问题需要解决。

高精度格式

同样,众多采用二阶精度的有限体积法软件,对于工程上的许多问题,其计算精度已经足够。事实上,许多主流的CFD软件的核心算法,仍是那些武林秘籍中的上古神器。比如对于不可压缩流动,SIMPLE系列算法或者PISO算法仍占据主流,而迭代方法也是沿用许多年前的点松弛或者线松弛等线性代数求解方法。
纵然这些方法已经被验证可靠实用,不过生产力在发展,工业界的需求也在增长,因此高精度格式的呼声也越来越高。高精度格式在学界并不稀罕,只是这些算法在工程问题上仍然存在许多需要调整的自由参数,某些高阶方法对于网格质量有较高的要求,使得这些方法的使用者对算法本身需要更深的理解,阻碍了这些算法走向商业软件。

不过,在不久的将来,这些方法的商业化或将成为CFD市场上的新生力量。

为计算而生的LBM山重水复疑无路,柳暗花明又一村——人们在纠结各种高精度湍流模型和高阶方法的同时,蓦然回首,发现LBM未尝不是一个另辟蹊径的登山之路。而纵观整个CFD市场,LBM方法的异军突起也已然成为最近十年的一个亮点。
不同于传统CFD大师们死磕流体力学,许多LBM的研究者更像是计算机专业的跨界大师——由于LBM天生高效的并行效率,很多计算方法的研究者不约而同用LBM试水,甚至不乏一些取得了商业化成功的工具。

正是由于算法的并行效率更高,能容忍更大的计算资源消耗,再加上天然瞬态的优势,LBM研究者们不约而同的转向LES或者类LES的方法。不过,LBM方法的精度也仍依赖于这些高精度湍流模型的实施,尤其是壁面附近的准确求解。

结语:只在此山中,云深不知处——这似乎是仿真计算从业者的谶言。仿真者因为常常被实验“啪啪”打脸,而不敢完全相信自己的结果。而号称“最高法庭”的实验,即使本身也存在一定的不确定性。可是,当实验和仿真结果不一致的时候,几乎所有人都会把质疑的目光投向仿真。

雄关漫漫真如铁,而今迈步从头越。希望随着技术和计算能力的发展,我们CFDer们可以早点翻越压在计算精度头上的三座大山,从此不再受那实验对标之苦——会当凌绝顶,一览众山小!

来源:LBM与流体力学微信公众号(ID:LBMCFD),作者:卢比与钢蛋。

页: [1]
查看完整版本: 约等于算命的CFD到底有多不靠谱?