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. 植入拉格朗日粒子的Ueqn中需不需要加phicForces?

植入拉格朗日粒子的Ueqn中需不需要加phicForces?

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

    各位大佬好,

    本人想在interFoam中植入拉格朗日粒子,通过以下这个教程来学习一下
    http://www.tfd.chalmers.se/~hani/kurser/OS_CFD_2013/AlejandroLopez/LPT_for_erosionModelling_report.pdf

    但是在这个教程里,对U.eqn的修改,只是添加了kinematicCloud.SU(U)这一项,屏幕截图 2022-12-25 205147.jpg

    而在DPMFoam里,还添加了phicForces这一项,并且这一项会对P.eqn进行影响。

    surfaceScalarField phicForces
    (
       fvc::flux(rAUc*cloudVolSUSu/rhoc) + rAUcf*(g & mesh.Sf())
    );
    

    查了一些资料,是不是kinematicCloud.SU(U)指的是drag force,而phicForces包含了gravitational force,lift force和其他力?还有就是这个cloudVolSUSu指的是什么?

    希望有大佬可以解答一下!

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

    植入拉格朗日粒子的Ueqn中需不需要加phicForces?

    你的内容很多。还没详细看。针对你的标题。U方程不需要单独加力。OpenFOAM的做法是把力加到压力方程。

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

    O 1 条回复 最后回复
  • O 离线
    O 离线
    OItoCFD
    在 中回复了 李东岳 最后由 编辑
    #3

    @李东岳 他这里应该是自己用其他不带LPT的求解器额外连接openfoam的LPT包,在U方程里直接加比较简单

    J 1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    写于 最后由 编辑
    #4

    你指的SU应该是动量方程里面的源项,就是2-way coupling中的颗粒对流场的影响,那边是包涵了所有的颗粒对流场的影响的,具体你得去code里面查到底是怎么算的。

    如果你考虑的是颗粒受力的话,你就得去submodel里面看了。

    植入颗粒的话,下面这个教程可能说的更清晰
    https://www.foamacademy.com/wp-content/uploads/2018/03/particles_slides.pdf

    至于你说的phicForces 因为没做DPMFoam 所以不知道具体是什么,不过看起来这个好像用在很dense的颗粒模拟里面吧

    游荡

    J 1 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 星星星星晴 最后由 编辑
    #5

    @星星星星晴 谢谢您的回复,这个教程我也看了,他就是直接在U方程里加了个SU源项,但是在DPMFoam里面还有这个phicForces一项,主要是跟cloudVolSUSu有关,但是具体不知道是干什么的。。。

    星 1 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 OItoCFD 最后由 编辑
    #6

    @oitocfd 是的大佬,就是在interFoam里加了拉格朗日粒子,two-way coupling,但是我不知道DPMFoam里的这个phicForces是干啥的,与cloudVolSUSu有关,其定义如下

    fvVectorMatrix cloudSU(kinematicCloud.SU(Uc));
            volVectorField cloudVolSUSu
            (
                IOobject
                (
                    "cloudVolSUSu",
                    runTime.timeName(),
                    mesh
                ),
                mesh,
                dimensionedVector(cloudSU.dimensions()/dimVolume, Zero),
                zeroGradientFvPatchVectorField::typeName
            );
    
            cloudVolSUSu.primitiveFieldRef() = -cloudSU.source()/mesh.V();
            cloudVolSUSu.correctBoundaryConditions();
            cloudSU.source() = Zero;
    

    可见cloudVolSUSu是定义的cloudSU里的source项,而在U方程里加的cloudSU.source()定义为了0. 意思是cloudSU的source项和和非source项是分开算的。所以我不知道这个source()是什么?植入拉格朗日粒子,phicForces到底需不需要加?希望大佬可以解惑一下

    这里的cloudSU在KinematicCloudI.H里定义如下:

    template<class CloudType>
     inline Foam::tmp<Foam::fvVectorMatrix>
     Foam::KinematicCloud<CloudType>::SU(volVectorField& U, bool incompressible)
     const
     {
         if (debug)
         {
             Pout<< "UTrans min/max = " << min(UTrans()).value() << ", "
                 << max(UTrans()).value() << nl
                 << "UCoeff min/max = " << min(UCoeff()).value() << ", "
                 << max(UCoeff()).value() << endl;
         }
      
         dimensionSet dim(dimForce);
         if (incompressible)
         {
             dim.reset(dimForce/dimDensity);
         }
      
         if (solution_.coupled())
         {
             if (solution_.semiImplicit("U"))
             {
                 volScalarField::Internal
                     Vdt(mesh_.V()*this->db().time().deltaT());
      
                 if (incompressible)
                 {
                     Vdt.dimensions() *= dimDensity;
                 }
      
                 return UTrans()/Vdt - fvm::Sp(UCoeff()/Vdt, U) + UCoeff()/Vdt*U;
             }
             else
             {
                 tmp<fvVectorMatrix> tfvm(new fvVectorMatrix(U, dim));
                 fvVectorMatrix& fvm = tfvm.ref();
      
                 fvm.source() = -UTrans()/(this->db().time().deltaT());
      
                 return tfvm;
             }
         }
      
         return tmp<fvVectorMatrix>::New(U, dim);
     }
    
    O 1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 Jasper 0 最后由 编辑
    #7

    @jasper-0 这就得你自己翻code了,得看你用在算什么,dense的话需要考虑体积比什么的了,看起来这玩意就是和dense的有关

    游荡

    1 条回复 最后回复
  • O 离线
    O 离线
    OItoCFD
    在 中回复了 Jasper 0 最后由 编辑
    #8

    @jasper-0 我的话我是没考虑你说的这个 主要还是先看你问题吧 你的颗粒属于哪类型的 一般需要什么力 你甚至可以不用他自带的力 全关掉 自己循环颗粒自己算你所有应该有的力 加在一起给U方程

    J 1 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 OItoCFD 最后由 编辑
    #9

    @oitocfd 谢谢大佬回复,这两天忙着做实验没看到消息。所以我如果只考虑Drag force,那么这个phicForces就不用加了吧?

    O 1 条回复 最后回复
  • O 离线
    O 离线
    OItoCFD
    在 中回复了 Jasper 0 最后由 编辑
    #10

    @jasper-0 我觉得不需要

    1 条回复 最后回复

  • 登录

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