新浪博客

压力校正算法---(1)SIMPLE算法的历史

2017-06-10 11:45阅读:

这些天,想写点关于不可压流动计算中SIMPLE算法的由来。众所周知,CFD理论近年来已经取得了长足的发展,但在不可压流领域,以压力校正为核心的SIMPLE类算法仍然是主流算法。这不得不引起一些思考,为什么这种算法能长盛不衰,当初DB
Spalding和SV Patankar是受了什么样的启发,才提出这种算法。我想分几篇文章,对此寻根溯源。

压力校正--SIMPLE算法至今已在教科书已经出现了二三十年了。但是浏览一下2000年前国内研究者发表的文章,不难看出,至少在那个年代,多数人只是依靠手上得到的SIMPLE源程序的代码(如SIMPLE,TEACH,CHAMPION等),对诸如边界条件,源项,对流项格式等,作一些有限的修改,很少有人对SIMPLE的迭代体系进行研究。这里所说的SIMPLE的迭代体系,即假设压力求出速度预估值,再利用压力校正值修正速度、压力与流量,这也难怪SIMPLER,PISO等大名鼎鼎的算法名称与我们无缘。

想当初,在学校里学习SIMPLE算法时,基本上也是听着老师照本宣科,实际上自己并不怎么懂,更谈不是将SIMPLE算法扩展到其它领域。后来,当自己完全从头,一行一行写出非结构化多面体流体流动的代码,才发现SIMPLE算法背后的理论背景是如此重要,压力校正涉及太多的细节。正是这些原因,很多讲解SIMPLE算法的人,可能从来没有真正去寻根问底;边界条件或者源项实施等只是局部问题,而SIMPLE迭代体系却是框架性的问题,让人望而却步。但总归而言,CFD是一门实战性的科学,没有理论是寸步难行,有了理论却没有与之对应的代码,理论也是废物。

要想彻底搞清,SIMPLE算法提出的由来,可能最好的办法就是去问当事人Spalding和Patankar,我这里只是从他们发表的文献中寻根溯源了。

下面这篇文章中

文献1:S. V. PATANKA
R and D. B. SPALDING,A
CALCULATION PROCEDURE FOR HEAT, MASS AND MOMENTUM TRANSFER IN
THREE-DIMENSIONAL PARABOLIC FLOWS,ht. f. Hear Mass
Transfer,1972,
Vol. IS, pp. 1787-1806
是能查到的最早提到压力校正算法,这与后来《国际传热传质期刊》为表彰Splading的贡献一文

文献2:A tribute to D.B. Spalding and his
contributions in science and engineering,International Journal of Heat and Mass
Transfer,52,(2009) 3884–3905
中的时间是一致的。

在文献1中提到,1970年左右,Spalding就致力于开发三维边界层流动计算的算法,但是他很快就意识到,无法将原来的二维边界层流动的算法扩展到三维。这里需要注意,边界层流的特征是,流动方向上是方程是抛物线型的,就跟时间推进一样,典型的一阶偏导数(如非稳态热传导),当前时间解只受已经发生的解的影响。但是当边界层流动从二维扩展到三维时,每个界面就是2维了,每个截面上的速度场受椭圆型方程约束。说得通俗点,对于某个截面,任何一处的解将受到这个截面上任何其它位置解的影响,表现出典型的扩散方程的特征。要知道,原来的2维边界层流动是引入流函数来计算流场的,但是现在已经扩展到3维,在当时的情况下,SPALDING认为涡流-流函数法是无法应用到三维。当然最后证明,涡量-流函数法可以扩展到3维,这是后话了,例如国内学者李有章、郭鸿志等就发展了这种方法,国外也有人进行类似尝试。但在当时情况下,即使当今,原始变量法还是人们普遍愿意选择的,毕竟物理意义明确。

在文献1中还提到,Spalding突破性贡献在于,他识别出压力梯度特殊作用。说实话,这一点,我并不认同的,我认为正是SPALDING对压力梯度的不正确认识,导致了SPALDING这一学派失去了在同位网格方面的可能取得的贡献;我猜测,正是这一错误认识,进一步导致这一学派,最初对非结构网格的排斥,从而失去了真正的机会。实际上,认真分析一下Gosman这一学派的文献,他们对压力梯度的认识,远高于SPALDING这一学派。问题再哪里,当然在这里,也并不愿引起争论,我只是提一个问题,供大家思考。

动量方程中的dp/dx ,
dp/dy,dp/dz,需要在x,y,z方向离散吗?它的真正含义是偏微分,还是有其它含义吗?如果想通了,你会觉得Patankar等人,早期的交错网格很无聊,作出的结论也很武断。当然,现在还有人喜欢交错网格,因为在某些特殊场合,尤其是低维度(1维)的情况下,非常好用,比同位网格方便。我正在研究的1维CFD计算,流体网络(flow
net)就是这种情况,交错网格比同位网格就好多了。但多数情况下,并不是这样。

回到正题,没必要纠缠交错网格,因为我认为交错网格只是CFD发展中经过的一个歧途罢了。

文献1的精化在于

1)边界层流动方向的某一截面上,压力梯度是个定值,这样的话,流动方向的速度分量方程就变得特殊,容易求解了。注意,这只对这个问题是有用的,只是特殊处理罢了。

2)在流动方向的某一截面上,两个速度分量和压力是耦合的,即连续方程和截面动量方程需要同时求解,对它们的求解也就发展成我们所称为的SIMPLE算法。在求解过程中,随意给出压力梯度去求解截面动量方程,得到的速度场并不能满足连续方程,因此Spalding等(Patankar还是Spalding,已不可知)就提出,给压力场某些校正,使得求出的速度场能满足连续方程。这就诞生了所谓的压力校正方程,这个压力校正方程,可以用来直接求解压力校正量,从而得到合适的压力场。

可以看出,Patankar和Spalding是在三维的抛物线型流动的框架下,提出了SIMPLE算法,这种算法只是处理截面的2维椭圆型流动问题。但是,很快他们意识到,SIMPLE方法很容易扩展到三维问题,能够处理动量方程和连续方程耦合的任何维度的问题。从此,SIMPLEC,SIMPLER,SIMPLEST等相继提出,并在学术界取得了它应有的地位。
微信号liuhuafei123456789,欢迎讨论
压力校正算法---(1)SIMPLE算法的历史

我的更多文章

下载客户端阅读体验更佳

APP专享