Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新

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

    Algorithm
    5
    21
    11488
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 程
      程迪 last edited by

      如题,看到OF中和Fluent TG中都是直接写成离散形式的。感觉checker board问题就是纯粹的离散问题?

      github: chengdi123000
      网站:chengdi123000.github.io
      本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

      1 Reply Last reply Reply Quote
      • 李东岳
        李东岳 管理员 last edited by

        \begin{equation}
        {\bf{U}}_f={\rm{fvscheme}}{\bf{U}}+\frac{{\rm d}^3p}{{\rm d} x^3}
        \end{equation}

        CFD高性能服务器 http://dyfluid.com/servers.html

        程 1 Reply Last reply Reply Quote
        • 程
          程迪 last edited by

          ??
          cannot understand.

          github: chengdi123000
          网站:chengdi123000.github.io
          本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

          程 1 Reply Last reply Reply Quote
          • 程
            程迪 @李东岳 last edited by

            @李东岳

            哦~明白了,$d^3p/dx^3$的来历。

            我参考的 http://www.fem.unicamp.br/~im450/palestras&artigos/CFD of Turbulence_Chalmers_Un/chapter_6-1.pdf

            github: chengdi123000
            网站:chengdi123000.github.io
            本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

            1 Reply Last reply Reply Quote
            • 程
              程迪 @程迪 last edited by

              @程迪

              可否认为Rhie-Chow是用额外的3阶项(对压力方程式4阶项)来平滑掉压力波动的,因为是3阶项,所以不会影响FVM的二阶及以下的空间精度。

              但是这样的话R-C插值算激波绝对是有问题的,激波的FFT展开后频率很宽,微分高阶项比低阶项大,这玩意儿搞插值还是会抖啊。

              github: chengdi123000
              网站:chengdi123000.github.io
              本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

              1 Reply Last reply Reply Quote
              • C
                CFD中文网 last edited by

                @程迪 我最近也在看这个Rhie-Chow插值,岳哥那个网站上的也没太看明白,@Him 还说OpenFOAM没有RC插值,你在一楼说的:

                看到OF中和Fluent TG中都是直接写成离散形式的

                这个在哪发现的?

                CFD中国标准用户测试帐号
                目前由徐笑笑登录

                程 1 Reply Last reply Reply Quote
                • C
                  CFD中文网 last edited by

                  \begin{equation}
                  {\bf{U}}_f={\rm{fvscheme}}{\bf{U}}+\frac{{\rm d}^3p}{{\rm d} x^3}
                  \end{equation}

                  这一项在H.K. 那本书里面也有看见过。

                  CFD中国标准用户测试帐号
                  目前由徐笑笑登录

                  1 Reply Last reply Reply Quote
                  • H
                    Him last edited by

                    OF没有Rhie-Chow,处理的过程大概是这样子的:
                    1)压力梯度不影响动量的phi
                    2)压力梯度不影响在压力方程里的系数A
                    3)压力方程在网格面上算,并且面上的值由邻居网格中心得出
                    4)压力梯度直接在网格面上算出
                    5)压力梯度不影响系数A对守恒速度的更新

                    1 Reply Last reply Reply Quote
                    • 程
                      程迪 @CFD中文网 last edited by 程迪

                      @cfd-china
                      我的意思是,OF中代码明显是从方程矩阵中抽出系数来做Piso的,也就是只有离散形式。而Fluent TG也是没有给出Rhie-Chow差值实际求解的PDE形式,只有离散形式。我严重怀疑Rhie-Chow差值解的不是N-S方程,而是稳定化修正的N-S方程,收敛到的解和N-S会差一个$d^3p/dx^3$项。

                      我的思路是这样的:

                      • 首先,求解连续的PDE方程本身是没有任何问题的,它是适定的;
                      • 但是求解离散的FVM同位网格就出了岔子,为啥?
                        • 一定是离散的过程有问题
                      • 首先交错的网格求解是没有问题的,对吧
                        • 那说明只是同位网格有问题
                      • 而同位网格的问题在于,只有segregate的求解有问题,coupled求解是没有问题的。
                        • 说明segregate 同位网格离散才会有checker board问题;

                      @李东岳

                      github: chengdi123000
                      网站:chengdi123000.github.io
                      本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

                      1 Reply Last reply Reply Quote
                      • H
                        Him last edited by 赵一铭

                        @程迪
                        1)Rhie-Chow解的既不是N-S方程,也不是稳定化修正的N-S方程,因为RC跟解方程没有任何关系
                        2)Fluent TG没有写,不代表Fluent没用RC
                        3)在OF内实现RC是个很简单的事情,这个时候是RC用来计算进入压力(修正)方程的那个通量的。

                        以下是我随便写的:

                        phi_RC = (fvc::interpolate(U)&mesh.Sf()) - (((fvc::interpolate(rAU*(Volume))/Volume)*(gradP-gradPBar)&mesh.Sf());
                        

                        你只是需要在之前定义Volume, gradP还有gradPBar而已
                        phi_RC算出来之后,进入压力修正方程。

                        程 1 Reply Last reply Reply Quote
                        • 程
                          程迪 @Him last edited by

                          @Him
                          Fluent TG写了用的是Rhie-Chow插值,但是没有给出Rhie-Chow实际求解的PDE,我的意思是当网格和时间步趋于0的时候,求解器整体所逼近的PDE,如果这个PDE不是N-S方程,那么理论上是会有问题的。@李东岳 在另一个帖子给出的三篇论文在证明原始RC会存在时间步和松弛因子依赖的时候的证明方式就是通过证明最终得到的表达式存在关于时间步、松弛因子和体积力的依赖项来证明的。

                          我的问题是,Rhie-Chow插值在网格和时间步趋于0的时候实际逼近的是哪个PDE,根据文献来看似乎是一个修改之后带有$d^4p/dx^4$项的压力修正方程,这个方程应该是和不可压N-S方程导出的压力修正方程是不一样的。

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

                          我觉得RC插值在数学上还有很多东西没讲清楚,比如离散方程用迭代法求解不稳定不代表没有解啊。checker-board解虽然非物理,但是它是满足线性插值得到的离散方程的。那么线性插值得到的离散方程如果用耦合算法求解,是不是还会得到checker-board解?

                          github: chengdi123000
                          网站:chengdi123000.github.io
                          本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

                          1 Reply Last reply Reply Quote
                          • H
                            Him last edited by

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

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

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

                            1 Reply Last reply Reply Quote
                            • 赵
                              赵一铭 last edited by

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

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

                              程 1 Reply Last reply Reply Quote
                              • 程
                                程迪 @赵一铭 last edited by

                                @赵一铭

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

                                github: chengdi123000
                                网站:chengdi123000.github.io
                                本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

                                1 Reply Last reply Reply Quote
                                • 李东岳
                                  李东岳 管理员 last edited by 李东岳

                                  越来越复杂了。

                                  可否认为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()。这部分太复杂了并且感兴趣的人很少。

                                  CFD高性能服务器 http://dyfluid.com/servers.html

                                  程 2 Replies Last reply Reply Quote
                                  • H
                                    Him last edited by

                                    也可以用二阶算激波。

                                    1 Reply Last reply Reply Quote
                                    • 程
                                      程迪 @李东岳 last edited by

                                      @李东岳

                                      额~啥玩意是临点?

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

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

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

                                      github: chengdi123000
                                      网站:chengdi123000.github.io
                                      本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

                                      1 Reply Last reply Reply Quote
                                      • H
                                        Him last edited by Him

                                        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插值的话题。

                                        程 1 Reply Last reply Reply Quote
                                        • 程
                                          程迪 @Him last edited by

                                          @Him

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

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

                                          github: chengdi123000
                                          网站:chengdi123000.github.io
                                          本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

                                          1 Reply Last reply Reply Quote
                                          • 程
                                            程迪 @李东岳 last edited by

                                            @李东岳

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

                                            github: chengdi123000
                                            网站:chengdi123000.github.io
                                            本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

                                            1 Reply Last reply Reply Quote
                                            • H
                                              Him last edited by

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

                                              1 Reply Last reply Reply Quote
                                              • First post
                                                Last post

                                              CFD中文网 | 东岳流体 | 京ICP备15017992号-2
                                              论坛登录问题反馈可联系 li.dy@dyfluid.com