Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 动网格求解中correctPhi的作用是什么

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

已定时 已固定 已锁定 已移动 OpenFOAM
5 帖子 3 发布者 4.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 史 离线
    史 离线
    史浩 神
    写于 最后由 编辑
    #1

    现在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是做什么呢?

    让我们随波逐流

    1 条回复 最后回复
  • 史 离线
    史 离线
    史浩 神
    写于 最后由 编辑
    #2

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

    让我们随波逐流

    1 条回复 最后回复
  • 史 离线
    史 离线
    史浩 神
    写于 最后由 编辑
    #3

    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
    把图补上,原来的图太大了上传失败了

    让我们随波逐流

    1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    写于 最后由 编辑
    #4

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

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

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

    滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

    异步沟通方式(《posting style》from wiki)(下载后打开):
    https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
    提问的智慧(github在gitee的镜像):
    https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #5

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

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]