有限体积怎么算的Limiter中那个梯度比例r之类的东西?


  • OpenFOAM讲师

    如题,感觉文献里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吧。


  • OpenFOAM讲师

    @程迪
    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,这破玩意儿没给出处,都不知道是咋来的。。。


  • OpenFOAM讲师

    参考
    https://www.nas.nasa.gov/assets/pdf/techreports/2005/nas-05-007.pdf

    slope limiter等价于flux limiter,在FVM的REP过程中更natural…


  • 网格教授 OpenFOAM教授 管理员

    手机不能看pdf, 问题解决了?看你一楼那个gauss cell based很熟悉,因为最近在整理fluent指南里用到了这个词,opwnfoam植入了这个只不过是显性的。如果你要做隐形的,如果是压力方程grad§无解,如果是速度方程+fvm::grad§这需要耦合求解了。extend里面有。在底层植入了blockMatrix. 同样旋度隐形操作也不好处理。


  • OpenFOAM讲师

    @李东岳

    没,还是不知道那个公式咋来的,不过基本解决了flux limiter 和slope/gradient limiter的等价关系问题。

    但是这玩意儿也是个大坑,对于多维网格带skew和non-uniform的情况,限制器设计和计算量都挺大。

    OpenFOAM具体实现还没看太懂。有一个先有鸡还是先有蛋的问题,到底是interpolation先调用gradient呢?还是gradient调用interpolation?

    我看的文章里是先leastSquare算gradient,不用Gauss的情况下是不用插值的。然后interpolation可以用一些limited gradient。

    暂时只看懂了cellLimited, faceLimited没看懂。