有限体积怎么算的Limiter中那个梯度比例r之类的东西?
-
如题,感觉文献里limiter有几种吧,一个是梯度限制器,gradient limiter,$\nabla a_c = \phi ( r ) \nabla a$,还有一个是通量限制器,flux limiter, $f_c = f_{lo} + \phi ( r )f_{ho}$,$f_{lo}$是低阶的low order flux,比如upwind flux,$f_{cd}$是高阶的high order flux,比如中心差分,然后$\phi ( r )$是限制器函数。
到底有啥联系没?特别是对于非正交的有限体积的多面体网格,具体怎么搞的?因为只有网格面两边的信息呀。
而且我发现OF里没有fvm::grad,只有fvc::grad,感觉这玩意儿太扯了,至少Gauss cell based 应该可以做成fvm::grad吧。
-
@程迪
for example
mplementation of semi-discrete, non-staggered central schemes in a colocated, polyhedral, finite volume framework, for high-speed viscous flows DOI: 10.1002/fld.2069
里公式11是酱紫的:\begin{equation}
r = 2\frac {\mathbf d \cdot (\nabla \phi)_P}{\phi_N-\phi_P}-1
\end{equation}$\phi_P,\phi_N$分别是当前单元P和临近单元N的标量$\phi$的值。$\mathbf d $是P网格中心到N网格中心的矢量。
but,这破玩意儿没给出处,都不知道是咋来的。。。
-
参考
https://www.nas.nasa.gov/assets/pdf/techreports/2005/nas-05-007.pdfslope limiter等价于flux limiter,在FVM的REP过程中更natural...
-
没,还是不知道那个公式咋来的,不过基本解决了flux limiter 和slope/gradient limiter的等价关系问题。
但是这玩意儿也是个大坑,对于多维网格带skew和non-uniform的情况,限制器设计和计算量都挺大。
OpenFOAM具体实现还没看太懂。有一个先有鸡还是先有蛋的问题,到底是interpolation先调用gradient呢?还是gradient调用interpolation?
我看的文章里是先leastSquare算gradient,不用Gauss的情况下是不用插值的。然后interpolation可以用一些limited gradient。
暂时只看懂了cellLimited, faceLimited没看懂。