CFD高阶格式,距离 ‘ 全民普及 ’ 还有多远?
CFD这面玩高阶格式的很多。今天就举几个例子。简单说一下这些高阶格式。
一、矩方法高阶格式
很多人可能一看标题就蒙了,其实不必,就简单理解为高阶格式就行。我也会把这个东西尽可能说的简单。
在矩方法领域,矩一般代表着某些变量,比如密度、动量等。那在这块,咱就假定密度是一种矩。
矩方法要对网格面上的矩进行重组,最简单的UPWIND格式,大家都非常熟悉。直接网格上游体心的值就等于面心的值。非常简单、非常straightforward。
当然,Upwind是一阶格式。
如果在矩方法中,如果要上二阶以上格式,这就费事了。需要某些特殊的算法,传统central中心格式不能用,会导致震荡。
目前在矩方法这个非常小非常小的领域,用的一些特殊的格式,这个植入的过程,真是够喝一壶的。
因为咱植入过这个格式,光是学习,就得学几个月。代码量也不少。当然了,这种流弊的东西,发文章可以大大的提升接受率。
然后,也只能实现个二阶。。。
大体上就是,为了实现个高阶格式,投资了3000万,到头来给项目方做项目,合同总价只加了30万。。。
二、WENO高阶格式
WENO高阶格式,这个在幼儿园大班大家就开始接触了。
由于结构网格已经成为过去式,但是在非结构网格植入WENO,喝个4 5壶绝对要的。有些搞不明白的,幼儿园都没法毕业。
现在对边看看比如在OpenFOAM里面植入WENO需要做哪些处理。
首先就是非结构网格那个stencil确定,本身咱们非结构网格没有编号,那么WENO怎么确定stencil?
然后就是做积分,看下面这个图,直观来讲,central格式,upwind格式,直接插值过来就行。
但是WENO呢,需要做积分,虽然要离散化,但是这明显要比传统格式复杂好多。其中还要存储大量的离散系数,文献表示,3阶WENO每个面上要存储19个多项式系数!!
然后还涉及到一个并行的问题,WENO在并行的时候,必然会引起效率低下,因为每个主网格,需要到不同的proc上面去通信。
比如下面这个图,不小心4个CPU都要用到。。。
然后如果看WENO跟传统TVD之类格式的对比,文献里面有下面2个图,我是觉得差别基本可以忽略...
如果看真实的多相流溃坝问题,下面这个图是WENO格式、传统TVD格式以及实验的对比:
照我来说,上面这个数据,个人感觉WENO跟传统TVD真是没啥区别哎。
三、最后
其实本文,不说是高阶格式不好。但是想说一些普遍性的东西。只不过WENO躺qiang而已..
很多算法上的东西吧,确实是流弊到极致。一个简单的例子,如果按照精度来看,迎风格式就是60分水平,那TVD格式可以到90分了。
然而一些高阶格式,能达到95甚至99分!
当然大家都知道,分数越高,每提高一分,需要付出的努力就越大。本文举例的一些高阶格式,就是在90分的TVD格式的基础上,花费了上千倍的努力,提升到了95分。
做学术是完全没问题的。JCP蹭蹭的发。但是另一方面,一个算法的提出,越难,用的人越少。
反而是那些极简,直击痛点的文章,虽然精度不高,但是大肆被CFD软件以及工业界采用。
再次声明,本文啊,不是说某些算法不好,只是想说一个普适性的原则,这些算法实在是太复杂了,流弊确实流弊!!就是用到工业界,还需要很长一段路要走。
我还发现一个事,之前我写的某些SCI,可能实在是太复杂了,引用的都少。。某些应用类,引用反而很高,可能因为比较简单,大家都看得懂吧
查看更多评论 >