CFD中的“通量修正”算法,隐姓埋名40年

 

高阶格式还是低阶格式?要精度还是稳定性?CFD人往往面临不同的选择。隐姓埋名的FCT算法,或许是困境中最后的救命稻草。...

Journal of Computational Physics (JCP), CFD领域顶级期刊
1973年,JCP18周年上的一篇文章,至今依然在CFD领域大放异彩。
众所周知在计算流体力学(CFD)计算中,低阶格式通常呈现耗散(一张图看懂“假扩散”!)的特性但是却为无震荡的,高阶格式精度较高但是在某些情况下却会产生震荡、越界的解。

Boris and Book于1973年在JCP上发表了一篇文章名为Flux-Corrected Transport. I. SHASTA, A Fluid Transport Algorithm That Works(下文简称第一篇文章)并提出一维的Flux-corrected Transport (FCT)算法,FCT算法通过反扩散的方法求解纯对流传输方程,既具有高阶精度,同时使解严格有界

随后所有的保持单调、无震荡的格式都可以溯源到这一篇文章。Boris and Book在当时非常有远见的通过一个守恒的单调性限制强加给流动中非光滑的区域,在这些区域高阶格式会产生震荡导致解的越界(求解温度场越界?)。这一概念至今依然是保持单调、无震动的格式的基本理念。



左三和左四分别为 S.T. Zalesak和 D.L. Boris

在第一篇文章中,他们将FCT算法用于一套特定的求解算法(SHASTA)中并用于求解震波,他们当时的计算显示了FCT算法的精度要高于一阶格式,并且解是单调无震荡的。在这篇文章中,也第一次的出现了通量限制(Flux limiting)这一概念。随后,Boris and Book继续在JCP上发表了有关FCT算法的文章。在后续的文章中,FCT算法变得更加普适。

小插曲:当时Boris and Book的FCT算法只适用于一维的情况,他们进行了大量的研究最后采用了一种坐标切分(Coordinate Splitting)的思想,然而这种方法会产生一些附加项,这些附加项大部分情况下没什么问题,但是在某些算例下会产生矩形的噪声。当时Boris and Book这样阐述:

“我们很tired,我们再也不想在会议上跟人们解释为什么我们的模拟结果中存在了一个方形火球的东西了。”

随后Boris and Book放弃了将FCT算法拓展至多维的研究。

随后FCT算法被Zalesak拓展为了多维算法并被Parrott and Christie应用于非结构网格。这些文章的发表表明了FCT算法可以用于非常复杂的几何。随后,FCT算法被应用于模拟世贸中心的爆炸。

FCT算法在学术界也引起了巨大轰动,在上个世纪90年代,FCT算法被引用了238次,截至到2016年,Boris and Book的原始文章已经被引2400余次,Zalesak的多维FCT算法文章被引2200余次。FCT算法被用于各种学科,包括且不限于空气动力学、震波物理学、大气、海洋、电磁学、多相混合、计算生物学等。



当然在提及FCT算法的时候,我们还需要随后被提出的一些无震荡迎风格式(CFD人不能不了解大名鼎鼎的“TVD”)。Van Leer在这方面做了大量的先驱工作。如果我们看这些格式的特点,他们除了包含迎风的机理外,也均包含了限制器的概念。这个限制器的理念和FCT算法的理念是相同的:强制单调无震荡。另外,这些限制器的形式和Boris and Book的限制器非常相似。当然了,Van Leer,作为无震荡迎风格式的先驱,独立的发展了自己的理念。但是Zalesak认为,当时Van Leer的工作可以被看作Boris and Book工作的后续研究。

那么我们可能会问,具有40年历史的单调性限制,相比较于无震荡的迎风格式,哪一个更重要呢?

MUSCL格式来举例,移除单调性限制(限制器)和移除迎风特性,哪一个会严重的降低MUSCL格式特性?我们可以很容易的通过Hancock Half-step来去掉迎风特性,同时使用一些其他的比较耗散的格式,其结果是去掉迎风特性的MUSCL格式比原始的MUCEL格式耗散,但是依然是一个比较好的二阶格式,并且,保证了单调性。

如果我们去掉限制器,不管我们多么的迎风,结果都变成了灾难。很明显的,单调性限制是这些格式最需要满足的基本特性,这个限制,也就是Boris and Book提出来的算法的基本理念。

最后的话:大量的CFDer咨询CFD界,OpenFOAM中求解多相流相方程的MULES算法到底是怎么回事。CFD界在这里说:FCT算法是你想要的。
拓展阅读:“OpenFOAM”的前世今生 | CFD访谈(一):看OpenFOAM创始人Henry Weller论CFD! | 空气动力学著名问题:逆压梯度和流动分离 | 得了心血管疾病?用CFD来模拟一下吧 | 遇见你,纵然迎风,我的心才得以有界 | CFD计算中的CPU高主频误区 | Very Large Eddy Simulation

原文整理于:S.T. Zalesak, Introduction to ‘‘Flux-Corrected Transport. I. SHASTA, A Fluid Transport Algorithm That Works’’, Journal of Computational Physics, 135, 170-171 (1997)


    关注 CFD界


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册