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. 直接计算气泡流问题,欢迎讨论

直接计算气泡流问题,欢迎讨论

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

    现拟采用的计算方法:
    1.基于interFOAM求解器;
    2.基于压力的可压缩算法;
    3.VOF处理两相。

    在上述求解器基础上作改动,使气泡的计算实现以下效果:
    1.在恒定速度入口的流场中,能使气泡的位置固定下来而不随流体流走,类似于做一个“气泡绕流”;
    2.不能影响气泡在同等工况参数下的正常变形。

    想在上述计算方法的基础上作改动,实现使气泡流的计算达到上述两个效果,大家可以提出什么好的办法呢?

    附: 如今可以参考的,有类似做法的两篇文章:
    1.Feng J , Bolotnov I A . Evaluation of bubble-induced turbulence using direct numerical simulation[J]. International Journal of Multiphase Flow, 2017, 93:92-107.
    2.Thomas A M , Fang J , Feng J , et al. Estimation of Shear-Induced Lift Force in Laminar and Turbulent Flows[J]. Nuclear Technology, 2015, 190(3):274-291.

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

    @Cav 在 直接计算气泡流问题,欢迎讨论 中说:

    在恒定速度入口的流场中,能使气泡的位置固定下来而不随流体流走,类似于做一个“气泡绕流”;

    这种方法就可以,实现起来非常简单,用interFoam即可

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

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

    李老师好!
    问题是,怎么能实现让气泡能固定下来呢?
    直接用interFoam计算,实际上泡就随流体流走了,就跟实际情况那样。
    但是我们想定量地研究这个问题,就要实现把气泡固定下来,同时又不影响气泡的正常变形。
    哎,这实际上是个很糟心的问题。在这个问题上我已经花了大概半年时间,尝试过好几种方法,对现有的求解器做了很多修改,仍然没有实现这个目标。
    迫不得已,跑到论坛上来请教,看大家能有什么办法。

    李东岳李 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 Cav 最后由 编辑
    #4

    你要好好的调节进口速度,同时计算域扩大一些,是需要一些精细的调试

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

    1 条回复 最后回复
  • C 离线
    C 离线
    Cav
    写于 最后由 编辑
    #5

    李老师,可能我没有说清楚。这个case,气泡在假设无重力情况下(或重力作用时间极短)的横向流动中。正常情况下气泡会随流体横向输运流走。现在是想将气泡位置能固定下来,此时给定流场入口速度即为气泡滑移速度。
    问题是,**怎么能将气泡位置固定下来?**已经见到的思路,包括:

    1.从动量方程着手,在方程右端单独对气泡施加一个PID控制的体积力,与气泡受到的阻力升力相平衡,保持气泡位置稳定
    2.从动量方程着手,在方程左端单独对气泡施加一个可解耦的极大的速度项,效果是使求得的气泡内速度削减到极小
    3.从alpha方程的对流项着手,采取某种办法将使气泡输运的流场速度过滤掉

    以上,
    第一种方法被证明可行,且不会对气泡形状产生影响,但PID controller的几个参数需要大量尝试来确定,对于泡群情况下,计算量会极大;
    第二种办法计算量会比较小,但貌似会对气泡形状产生影响,体现在影响alpha方程的速度上;
    第三种方法目前没想到可实施的具体方案。

    又或者我将这个问题考虑地过于复杂了。但目前也想不到别的办法了。

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

    我那种方法应该是最简单的,比如下面这种模拟就是给定反向的速度,气泡的运动。

    第一种方法我没考虑过。我见过你说的第二种方法:考虑非静止参考系,将参考系固定在气泡中心,这样就可以完美固定,对于气泡群不适合因为你将有多个非静止参考系。比如这个求解器中植入的算法:
    https://github.com/Unofficial-Extend-Project-Mirror/foam-extend-foam-extend-4.0/blob/master/applications/solvers/surfaceTracking/bubbleInterTrackFoam/bubbleInterTrackFoam.C 中的+ rho*aF项,同时你alpha方程也需要类似的进行改动,要不然就会貌似会对气泡形状产生影响,体现在影响alpha方程的速度上;

    捕获.JPG

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

    C 1 条回复 最后回复
  • C 离线
    C 离线
    Cav
    在 中回复了 李东岳 最后由 编辑
    #7

    @东岳 非常感谢李老师!我马上研究一下这个求解器。

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

    好的你试试,我也挺感兴趣,欢迎反馈

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

    1 条回复 最后回复
  • huntersongH 离线
    huntersongH 离线
    huntersong
    写于 最后由 编辑
    #9

    我也是在研究这个的,我的想法是首先研究湍流,对单相流计算或者PIV测量得到一个速度场,拟合出脉动速度的方程f(x,y,z,t),随后在设置的方腔流域采用LES计算,使用上面的方程来设置边界条件,但是现在算出来的流场我用湍动能谱来对比原来的流场的,不知道有没有别的流场检验方法。
    这样的话可以仅仅研究湍流作用下的气泡。下面是我测试的一个湍流边界进口。

    ![5e0120de-e12c-47b9-b79f-e79e95220c42-image.png](/assets/uploads/files/1565439493774-5e0120de-e12c-47b9-b79f-e79e95220c42-image.png) IN    
    {	
    type     codedFixedValue;	
    value     $internalField;	
    redirectType 	velocityProfile;	
    code	
    #{	
    fixedValueFvPatchVectorFieldmyPatc(*this);	
    forAll(this->patch().Cf(),i)	
    {	
    double x= this->patch().Cf()[i].x();	
    double y= this->patch().Cf()[i].y();	
    double z= this->patch().Cf()[i].z();
    double t= this->db().time().value;
    //Info<<“current time step ==” << t << endl;	
    double r= sqrt(y*y+z*z);	
    double SIN = y/r;	
    double CON = x/r;	
    double ux = -50*r*SIN;	
    double uy = 50*r*CON;	
    double uz = (1-cos(r/0.0265*3.14/2))*10;	
    myPatch[i]=vector(ux,uy,uz);	
    }	
    operator==(myPatch);	
    #};
    
    1 条回复 最后回复
  • huntersongH 离线
    huntersongH 离线
    huntersong
    写于 最后由 编辑
    #10

    不过我碰到一个问题,这样的计算的时候单核计算可以进行,但是并行会碰到“mpirun noticed that process rank 0 with pid on node exited on signal 8”这个问题。谷歌也没找到

    1 条回复 最后回复

  • 登录

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