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. DPMFoam速度方程代码与实际物理方程如何对应?

DPMFoam速度方程代码与实际物理方程如何对应?

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

    最近看DPMFoam的求解器源代码,速度方程的代码一直没看懂,速度方程文件中的代码如下

    fvVectorMatrix UcEqn
    (
        fvm::ddt(alphac, Uc) + fvm::div(alphaPhic, Uc)
      - fvm::Sp(fvc::ddt(alphac) + fvc::div(alphaPhic), Uc)
      + continuousPhaseTurbulence->divDevTau(Uc)
     ==
        (1.0/rhoc)*cloudSU
    );
    
    UcEqn.relax();
    
    fvOptions.constrain(UcEqn);
    
    volScalarField rAUc(1.0/UcEqn.A());
    surfaceScalarField rAUcf("Dp", fvc::interpolate(rAUc));
    
    surfaceScalarField phicForces
    (
       fvc::flux(rAUc*cloudVolSUSu/rhoc) + rAUcf*(g & mesh.Sf())
    );
    
    if (pimple.momentumPredictor())
    {
        solve
        (
            UcEqn
         ==
            fvc::reconstruct
            (
                phicForces/rAUcf - fvc::snGrad(p)*mesh.magSf()
            )
        );
    
        fvOptions.correct(Uc);
    }
    

    而实际的物理方程为
    替代文字

    问题总结如下

    1、代码

    fvm::ddt(alphac, Uc) + fvm::div(alphaPhic, Uc)
    

    表示物理方程的左边两项好像比较清晰,但是代码

    - fvm::Sp(fvc::ddt(alphac) + fvc::div(alphaPhic), Uc)
    

    表示的意义有点难以理解。其中

    fvc::ddt(alphac) + fvc::div(alphaPhic)
    

    貌似恰好是连续性方程?

    2、应力项代码

    + continuousPhaseTurbulence->divDevTau(Uc)
    

    为何与孔隙率alphac无关,好像和实际物理方程无法对应(左边第三项)?

    求解!谢谢。

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

    你的第一个理解是对的,就是连续性方程

    第二个,则是在湍流模型里面已经把alpha找到了,类似rho的代码也一样

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

    1 条回复 最后回复
  • M 离线
    M 离线
    mechanicsdog
    写于 最后由 李东岳 编辑
    #3

    谢谢@东岳 老师,但我依旧有两个后续问题想请教一下:
    1、既然

    - fvm::Sp(fvc::ddt(alphac) + fvc::div(alphaPhic), Uc)
    

    表示连续性方程和速度的乘积。
    从物理意义上来说,连续性方程恒为0,那么将连续性方程放到速度方程里求解的意义是什么?
    是为了更好的数值稳定性吗?还是说为了修正速度值?
    2、我在湍流模型里确实找到了divDevTau的代码,如下

    template<class BasicMomentumTransportModel>
    Foam::tmp<Foam::fvVectorMatrix>
    Foam::linearViscousStress<BasicMomentumTransportModel>::divDevTau
    (
        const volScalarField& rho,
        volVectorField& U
    ) const
    {
        return
        (
          - fvc::div((this->alpha_*rho*this->nuEff())*dev2(T(fvc::grad(U))))
          - fvm::laplacian(this->alpha_*rho*this->nuEff(), U)
        );
    }
    

    代码里面确实包含了密度rho和孔隙率alpha。由于我发现由于是不可压缩流体,速度方程代码两端都是除以密度rho表示的,然而应力求解出来却没有除以rho,这是不是与物理方程相违背

    替代文字

    是不是速度方程应该改为

        fvm::ddt(alphac, Uc) + fvm::div(alphaPhic, Uc)
      - fvm::Sp(fvc::ddt(alphac) + fvc::div(alphaPhic), Uc)
      + (1.0/rhoc)*continuousPhaseTurbulence->divDevTau(Uc)//这一项除以密度rho
     ==
        (1.0/rhoc)*cloudSU
    

    比较正确?

    1 条回复 最后回复
  • M 离线
    M 离线
    mechanicsdog
    写于 最后由 编辑
    #4

    奥第二个问题刚刚查代码搞清楚了,对于不可压缩流动的应力计算,密度都设为1了,所以速度方程代码的量纲没有问题。

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

    @mechanicsdog 在 DPMFoam速度方程代码与实际物理方程如何对应? 中说:

    从物理意义上来说,连续性方程恒为0,那么将连续性方程放到速度方程里求解的意义是什么?
    是为了更好的数值稳定性吗?还是说为了修正速度值?

    更好的有界性。在顺泰迭代的时候,时间步长内是不一定收敛的。有的时候可能会越界。主要起到这个作用。

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

    1 条回复 最后回复
  • M 离线
    M 离线
    mechanicsdog
    写于 最后由 编辑
    #6

    十分感谢!@东岳 :146:

    1 条回复 最后回复

  • 登录

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