Rhie-Chow插值有没有对应的连续的微分方程/积分方程?



  • 不知道RC在在网格和时间步趋于0的时候实际逼近的是哪个PDE。

    RC需要使用U方程的系数,那个系数在OF内用A()获取。

    我从来没管过RC插值还会出现棋盘压力的问题,因为我在算稳态的时候不会用那么小的松弛。



  • 我的意思是当网格和时间步趋于0的时候,求解器整体所逼近的PDE,如果这个PDE不是N-S方程,那么理论上是会有问题的。

    是原始的PDE。至少从松弛来看,人为添加松弛,就是人为的操纵了。如果不添加松弛,使用RC和原始NS方程一样。


  • OpenFOAM讲师

    @赵一铭

    必然不是,松弛在非RC插值时是对的,因为收敛之后的结果是和松弛因子无关的。但是在RC插值时就有问题了。尽管有改进的插值证明结果和松弛因子无关,但是相容性怎么样就不知道了。。。


  • 网格教授 OpenFOAM教授 管理员

    越来越复杂了。

    可否认为Rhie-Chow是用额外的3阶项(对压力方程式4阶项)来平滑掉压力波动的,因为是3阶项,所以不会影响FVM的二阶及以下的空间精度。但是这样的话R-C插值算激波绝对是有问题的,激波的FFT展开后频率很宽,微分高阶项比低阶项大,这玩意儿搞插值还是会抖啊。

    关于黑体字书上确实这么解释的。同为网格压力棋格子分布很明显就可以看出来,考虑一维度情况并且方程左边不做处理:
    \begin{equation}
    f(u)_P=\frac{dp}{dx}=p_e-p_w=\frac{p_E+p_P}{2}-\frac{p_P+p_W}{2}=\frac{p_E-p_W}{2}
    \end{equation}
    可见关于$u_P$的离散后的方程不包含$p_P$,但是却和$p_W,p_E$联系起来了。这就是棋格子分布的产生。不管什么插值,都是要在$u_P$的离散方程添加$p_P$的影响。

    不太明白,RC插值和那个A,H算子是个什么关系?A, H 算子是simple/piso算法这个层次里用到的东西还是RC差值实现的一个技巧?

    UEqn.A()UEqn.H()是和SIMPLE以及SIMPLEC有关的,考虑SIMPLE,UEqn.A()UEqn.H()就是离散后压力方程的对角线系数以及临点的影响。可能说的不是很精准但是大体是这个意思。SIMPLEC算法需要重写UEqn.H()。这部分太复杂了并且感兴趣的人很少。



  • 也可以用二阶算激波。


  • OpenFOAM讲师

    @李东岳

    额~啥玩意是临点?

    而且我还是没搞明白为啥不可压缩流要求压力修正方程(pressure correction equation)而不是压力泊松方程(pressure Poison equation)呢?

    按照Moukalled书中关于压力-速度耦合问题的线性代数矩阵解释,问题在于压力变量的对角线项为0,所以称为鞍点问题,得用Gauge-Uzawa method,或者叫Uzawa迭代去求解。

    但是如果用压力泊松方程(pressure Poison equation)的话,对角线项应该不是0啊。



    1. 不可压缩流既可以算压力修正方程(pressure correction equation),e.g. SIMPLE - semi-implicit method with pressure-link equation,也可以算压力泊松方程(pressure Poison equation), e.g., PISO - pressure implicit with splitting of operator.

    2. 可压缩流既可以算压力修正方程(pressure correction equation),e.g. SIMPLE - semi-implicit method with pressure-link equation,也可以算压力泊松方程(pressure Poison equation), e.g., PISO - pressure implicit with splitting of operator.

    以上两点都是隐式压力更新,并且压力矩阵的残差在很大程度上控制了质量守恒。算SIMPLE跟PISO只是两个不同的保证质量守恒的方式而已。

    那个临点的说法,把很简单的问题复杂化了,已经脱离了Rhie-Chow插值的话题。


  • OpenFOAM讲师

    @Him

    我看到cfd-online的wiki中的PISO算法是https://www.cfd-online.com/Wiki/PISO_algorithm_-_Pressure_Implicit_with_Split_Operator
    算的修正方程而不是压力泊松方程。

    修正方程是离散的,压力泊松方程是个PDE,可以进行额外的离散求解呀。


  • OpenFOAM讲师

    @李东岳

    我有一点搞复杂了,我以为RC插值和压力-速度耦合算法是放在一起考虑的。因为OF有一定误导性。实际上二者是相对独立的。RC插值是在速度插值中带了一点儿高阶压力导数项。而SIMPLE之类的算法是用于在分离求解器中解决压力-速度耦合的鞍点问题的。



  • 但是RC插值没有离散,因为它是显式计算源项 – “速度插值+高阶压力导数项”。