动网格求解中correctPhi的作用是什么


  • OpenFOAM讲师

    现在OpenFOAM比较成熟的求解器都能求解动网格算例,与v5.0中普通求解器相比,现在的求解器为了求解动网算例,都会在循环中加这么一段:

            while (pimple.loop())
            {
                if (pimple.firstIter() || moveMeshOuterCorrectors)
                {
                    mesh.update();
    
                    if (mesh.changing())
                    {
                        // Do not apply previous time-step mesh compression flux
                        // if the mesh topology changed
                        if (mesh.topoChanging())
                        {
                            talphaPhi1Corr0.clear();
                        }
    
                        gh = (g & mesh.C()) - ghRef;
                        ghf = (g & mesh.Cf()) - ghRef;
    
                        MRF.update();
    
                        if (correctPhi)
                        {
                            // Calculate absolute flux
                            // from the mapped surface velocity
                            phi = mesh.Sf() & Uf();
    
                            #include "correctPhi.H"  
    
                            // Make the flux relative to the mesh motion
                            fvc::makeRelative(phi, U);
    
                            mixture.correct();
                        }
    
                        if (checkMeshCourantNo)
                        {
                            #include "meshCourantNo.H"
                        }
                    }
                }
    
                ........
    
            }
    

    其中比较关键的是correctPhi.H,这个文件主要是实现一个面通量的预修正,引入了一个修正压力pcorr。但是这一块具体实现了什么功能,我还是不清楚,于是我把这一行给注释掉了,然后比较原始的interFoam和注释掉correctPhi.H后的求解器求解结果,算例采用OpenFOAM自带的interFoam tutorial算例——testTubeMixer。比较了两个算例在t=0.89s的结果:
    下图为原始的interFoam求解的结果:

    下图为注释掉correctPhi.H后的求解结果:

    就上面的结果来看,没有任何的区别。但是作为OpenFOAM的程序设计师们,肯定不会把一段没用的代码放在一个这么经典的求解器中。有没有哪位CFDer能够解释一下这个correctPhi.H是做什么呢?


  • OpenFOAM讲师

    上面的图片实在上传不上去,主要是证明两种结果一样,两个图看起来确实是一样的,就不再另外挂图了


  • OpenFOAM讲师

    t=0.89s
    原始interFoam求解器结果
    cfe3a104-8198-4390-966b-be652ae5195f-图片.png file:///media/sh/SH/OpenFOAM/droplets/tutorials/noPcorrInterFoam/testTubeMixer1/interFoam.jpg
    去掉correctPhi.H后的结果
    d8b024e1-b6d4-4894-974b-d4a61f5279a4-图片.png file:///media/sh/SH/OpenFOAM/droplets/tutorials/noPcorrInterFoam/testTubeMixer2/interNoPcorrFoam.jpg
    把图补上,原来的图太大了上传失败了


  • Linux讲师 OpenFOAM讲师

    我记得是修正非正交网格的面通量。两个相邻的网格,共用面的中心点到两个网格体中心点连线。如果两个连线不重合就要修正。你看那个correctPhi里不是面的法向量和速度向量相乘么。

    phi = mesh.Sf() & Uf();
    

    我说的不严谨,大概是这个意思。



  • 是的,一般情况下你1)可以忽略correctPhiH,2)pcorr也可以不求解


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2