基于 Navier–Stokes(NS) 方程的 CFD 算法在庞大的 CFD 帝国中似乎占据着绝对统治地位. 在很长的一段时期内, CFD 就是 NS 方程, NS 方程就是 CFD. 但是, 基于 NS 方程的 CFD 算法的地位可能并不像看起来的那么稳固. 基于 Boltzmann 方程的格子 Boltzmann 方法 (lattice Boltzmann method, LBM) 已经在 CFD 帝国中开拓了一大块疆土. 在不可压流体气动噪声领域, 基于 NS 方程的 CFD 算法已经溃不成军. 未来在可压缩流体领域, LBM 能否如同在不可压流体领域一样获得优势?由于我们的工作对象主要是压气机, 我们更关心的问题是: LBM 是否能在压气机内部流场计算中获得优势地位, 取代基于 NS 方程的 CFD 算法? 虽然这个问题初一看有些荒谬, 但还是有一些探索空间的.
LBM在不可压流体仿真中的优越地位
在气动计算中, CFD 似乎完全围绕着 Navier-Stokes 方程展开. 最常用的数值格式,如用于不可压缩流的 SIMPLE 系列, 用于可压缩流动的 rhoSIMPLE 系列, 都是 Navier-Stokes 方程的离散形式.
图 1: Ludwig Boltzmann(1844–1906). 奥地利科学家. Boltzmann 方程的提出者. 原子理论的笃信者. Boltzmann 的学生发现了原子裂变, 为原子武器提供了直接的理论基础.
对于大部分CFDer,似乎基于Navier–Stokes方程的数值方法是主流,非基于Navier-Stokes方程的算法,都是异端.LBM处境尴尬,似乎只是一个小众的、影响力非常有限的算法.但事实并非如此.LBM可以被认为是主流算法之一.
一个不广为人知,却在相当广泛的范围内被承认的事实是:在不可压流体领域,在商业软件中广泛使用SIMPLE,和LBM相比并没有优势;相反,LBM在一些场合是优于SIMPLE的.
LBM在不可压流体的气动噪声领域的应用非常成功. 主要的汽车厂商如大众、奥迪、宝马,都在用LBM计算不可压流体的气动噪声.LBM几乎垄断了汽车产业气动噪声的计算.此外,LBM在航空业的应用也越来越广泛.基于NS方程的气动噪声计算方法,无论是Fulent 自带的二阶精度算法,还是空间六阶、时间四阶的高精度算法,在商业上都不能算非常成功.
目前, 应用最广泛的LBM商业软件是PowerFlow.CFD软件获得商业上的成功是非常困难的, 需要足够大的市场.PowerFlow在商业上的成功,表明LBM是基于NS方程的CFD算法的有力竞争者.至少在气动噪声领域,基于NS方程的CFD算法并不比LBM 成功.在气动噪声领域,LBM 是主流,基于NS方程的计算气动声学适用范围小于LBM.
有一种观点认为PowerFlow过于重视保守“秘密”,PowerFlow的成功未必是LBM的成功.但其实CFX、Fluent也是类似的. CFX 、Fluent能相对容易的得到一个可以接受的结果,不仅仅是因为算法,也是因为求解器内部暗藏的无数限制器和光滑器.把这些限制器和光滑器除去,CFX、Fluent同样容易发散,难以收敛.
同样基于NS方程的开源软件OpenFoam,在计算超音速叶栅流场时,就遇到较多困难.需要非常熟悉流体理论、精心设置计算参数,算例才能收敛.这对初学者非常具有挑战性.
LBM在可压缩流体仿真中遇到的困难
LBM在不可压流体中获得了巨大的成功,但当学术界试图将LBM用于可压缩流体时,遇到了较大的困难,在一段时间内一直没有很好的解决方案,被认为“无法给出翼型流场的压力分布”.
LBM在可压缩流体中遇到的困难,根源之一在于 Boltzmann方程的积分项.LBM的离散速度是积分项中的平衡分布函数的积分点. 这些积分点是固定的.LBM试图使用较少的积分点计算平衡分布函数的积分.如果流体速度远低于1Mach温度偏离基准温度较小,平衡分布函数的积分是准确的.但当流体速度高于0.3 Mach或者流体温度偏离基准温度较大时,平衡态分布函数的积分的精度会降低,最终导致程序发散.虽然可以采用一些补救措施,但是会影响计算精度.由此导致LBM在不可压流体领域取得突破后,很长一段时期内,在可压缩流体领域,LBM没有取得根本性的突破.
LBM在可压缩流体仿真中的最新进展
LBM积分项遇到的问题,并不是积分点不够多,而是因为积分点是固定的,无法适应变化的流体速度和温度.直接蒙特–卡洛模拟(DSMC)单个单元内的速度点并不比LBM多,但是却可以模拟超高音速流体和超高温度流体.在DSMC中,分子速度在实数范围内取值,而LBM的离散速度被限制在几个固定的离散点上.大量的LBM格子模型试图通过增加离散速度的方法提高LBM的适用范围,虽然能取得一定效果,但是无法获得实质性的突破.对于马赫数较高或者温度较高的流动,LBM无法准确模拟.
2018年,Karlin等人将局部速度和温度做为参考系,重新定义粒子速度,构建了Pond模型.Pond中的粒子速度不再固定在特定离散点上,而是随着局部速度和温度的变化而变化.Pond模型可以模拟高超声速流动,并在二维黎曼问题、斜坡激波问题上有良好的表现.Pond模型改善了LBM在不可压流体领域中的性能. 此外,还有其他一些将LBM推广到可压缩流体中努力.这些文献中给出的格子模型已经可以模拟翼型流动,并给出较准确的翼型压力系数分布(图 2).时间到了2024年,我们相信,LBM 模拟马赫数低于1.6的可压缩流动已经是一种可能的选择.LBM模拟压气机内部流动的已经没有实质性障碍.
图 2: NACA0012 翼型 Cp 分布. 正面速度为 Ma = 1.5, 雷诺数 Re = 104. 对比的数据来自Hafez et al. [1] 和 Frapolli et al. [2].
LBM在压气机流场仿真中能否超越基于NS方程的CFD算法?
LBM近年来在可压缩流体领域的迅速发展,为可压缩流体仿真提供了新的可能.LBM模拟马赫数低于1.6的可压缩流动已经是一种现实性.在未来,LBM有没有可能像在不可压气动噪声仿真领域占据主导地位一样,在压气机流场仿真中超越基于NS方程的CFD算法? 现在这个问题的答案仍是开放性的.但是这种可能是存在的.主要的变量不是算法本身,而是GPU.
基于NS方程的CFD算法, 无论是FVM,还是FDM,或者迅速发展的高阶类谱算法,计算压气机流场都不是一件容易的事情.压气机内部流场,貌似平平无奇,几乎是最简单的一类流动,但压机器内部同时存在不可压流动、亚音速流动和超音速流动.为了同时求解三种性质的流动,求解器已经非常臃肿和复杂.基于NS方程的CFD 算法大部分采用隐式算法,需要求解线性方程组.压气机内部流场跨越了三种不同性质的流动,线性方程组的条件数很大,会带来刚性问题,需要更多的迭代次数.基于NS方程的CFD算法通常得到的是稳态解.如果需要求解不稳定流动,需要使用特殊的技术工具.此外,在求解器中还暗藏着无数的限制器和光顺器, 需要合理的设定它们的参数才能正确计算压气机流场. 这对初学者并不容易.
基于NS方程的CFD算法求解压气机内部流场的遇到的困难,LBM可以轻松避开.与基于NS方程的CFD算法不同,LBM 不需要特殊处理即可同时模拟不可压流动、亚音流动和超音流动.LBM采用显式格式,不需要求解线性方程组. 也是因为LBM采用显式,按照时间步长直接推进,可以直接求解瞬态流动,不需要特殊处理.
LBM通常被认为适用于弱可压流体. 但如前文所述, 近年来在Karlin等人的努力下,LBM已经可以求解可压缩流体.
LBM和基于NS方程的CFD算法相比,计算量太大,消耗的计算资源过多. 但是,GPU改变了一切.LBM算法比基于NS方程的CFD算法简单的多,更容易在GPU上实现并行计算,而且并行效率较高.在GPU的加持下,LBM可以实现400亿网格级别的并行计算.
FluidX3D使用32个MI210GPUs(每个显卡内存为64G), 计算协和飞机的流场.网格量为2976×8936×1489,约400亿. 计算了67268个时间步长.基于翼展的雷诺数为1.46亿. 模拟加渲染的时间为33小时.图(3)给出了其中的一个计算结果.
图 3: 协和飞机流场计算. (https://www.bilibili.com/video/BV1wF411y7Qu).
LES的精度高于目前工业界的主流湍流模型RANS.NASA 预计,到2030年左右LES会取代RANS.LES除了要求使用亚格子模型外,还要求网格密度达到一定要求,这就使得网格数量巨大.如果没有GPU,所有的计算在CPU上完成,会消耗巨大的计算资源. 但是在GPU的支持下,LBM可以较轻松的实现 LES,NASA规划的LES实现时间可能提前.
笛卡尔网格的优点是易于生成,方便局部加密,网格的正交性得到保障,缺点是网格数量巨大.但是,当笛卡尔网格配合基于GPU的LBM时,笛卡尔网格的缺点不再是缺点,而优点会得到充分发挥.LES本身需要巨大的网格,而LBM 配合GPU可以轻松实现100亿网格级别的计算.现有CFD仿真,大部分时间耗费在网格生成上.笛卡尔网格可以大大降低网格生成的难度,加快网格生成的速度,而且笛卡尔网格方便局部加密,可以提高计算精度.
和基于NS方程的CFD算法相比,LBM的算法简单很多,更方便在GPU实现能更好的发挥GPU的潜能.因为GPU,LBM能以较低的代价实现100亿网格级别的计算.同样因为GPU,LBM能以较低的代价实现LES和笛卡尔网格.基于NS方程的CFD算法实现100亿网格的计算难度比LBM高得多.
基于NS方程的CFD算法的天空中还漂浮着另外一朵乌云. 随着深度学习(Deep Learning, DL)的发展,CFD和DL出现了融合的趋势.DL的计算主要是在GPU上完成的.LBM对GPU良好的适应性,使得LBM和DL更容易整合在统一的框架下.由于算法结构问题,基于NS方程的CFD算法对GPU的适应性低于 LBM,和DL整合的难度较高.
LBM在GPU的加持下,采用LES和笛卡尔网格,是压气机内部流场计算可能的技术路线之一.
结语
LBM能否取代基于NS方程的CFD算法成为压气机内部流场计算的主流算法? 现在这个问题的答案仍是开放性的.LBM和基于NS方程的CFD算法相比,主要的优势是算法简单, 能更好的适配 GPU结构. 如果基于NS方程的CFD算法能更好的适配GPU,未来是可以和LBM继续竞争的; 如果不能,LBM在未来有可能在特定领域取代基于NS方程的CFD 算法. 这似乎有点不可思议, 但并非完全不可能.在不可压流动的气动噪声领域,LBM已经取代了基于NS方程的CFD算法. 一个算法能否取得优势地位, 不仅仅是因为算法, 也是因为硬件. 如果没有CPU, 基于NS方程的CFD 算法未必能获得今天的成就. 同样, 如果不能更好地适应GPU,基于NS方程的CFD算法有可能追赶不上历史的进程.
供稿|高效低碳燃气轮机数字化中心 胡开南
编辑|王博