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. MPPICInterFoam 中如何通过alphac得到alpha1和alpha2?

MPPICInterFoam 中如何通过alphac得到alpha1和alpha2?

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

    @jasper-0
    0e85dbdf-ee3c-449b-ac56-b0e366bf4679-image.png
    懂了,现在就是说是红色部分的问题对吧,我看了代码中这部分是通过下面代码求的

    fvc::surfaceIntegrate(psiIf, phiPsi)
    

    而里面的phiPsi则对应的这一部分
    87b34b23-8ec8-40f0-bb9e-001511b06be6-image.png
    通过追踪

    alphaPhi10 = talphaPhi1Un;
    
    //又查到
    
    tmp<surfaceScalarField> talphaPhi1Un
            (
                fvc::flux
                (
                    phiCN(),
                    cnCoeff*alpha1 + (1.0 - cnCoeff)*alpha1.oldTime(),
                    alphaScheme
                )
              + fvc::flux
                (
                   -fvc::flux(-phir, alpha2, alpharScheme),
                    alpha1,
                    alpharScheme
                )
            );
    

    而其中的phiCN则

        tmp<surfaceScalarField> phiCN(alphaPhic);
    
        // Calculate the Crank-Nicolson off-centred volumetric flux
        if (ocCoeff > 0)
        {
            phiCN = cnCoeff*alphaPhic + (1.0 - cnCoeff)*alphaPhic.oldTime();
        }
    

    如果不采用CN格式phiCN就等于alphaPhic,又查到

     alphacf = fvc::interpolate(alphac);
    alphaPhic = alphacf*phi;
    

    所以本质上图一中红色部分还是通过alphac*alpha1得到的

    J 2 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 Tens 最后由 编辑
    #22

    @tens 懂了懂了,大佬牛!:146:

    T zheZ 2 条回复 最后回复
  • T 离线
    T 离线
    Tens 神
    在 中回复了 Jasper 0 最后由 编辑
    #23

    @jasper-0
    互相交流,以前从没这么认真的看过这么底层的东西,这次也学到了很多:chitang:

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

    @tens :chouchou:

    1 条回复 最后回复
  • zheZ 离线
    zheZ 离线
    zhe
    在 中回复了 Jasper 0 最后由 编辑
    #25

    @jasper-0 你好,看到你这个问题却是很有意思。解释的code与公式对应起来了。但我相问一下,那么最终为什么interFoam和MPPICInterFoam的公式还是不一样啊?

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

    @zhe MPPICInterFoam 就是多了个alphac啊,考虑拉格朗日粒子对体积分数的影响

    zheZ 1 条回复 最后回复
  • zheZ 离线
    zheZ 离线
    zhe
    在 中回复了 Jasper 0 最后由 编辑
    #27

    @jasper-0 换句话说,alphac在interFoam里就是1,所以可以直接省略。谢谢。

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

    @zhe 对

    1 条回复 最后回复
  • zheZ 离线
    zheZ 离线
    zhe
    写于 最后由 编辑
    #29

    我测试了一下大家说的,在MPPICInterFoam里,加入粒子。但是alpha.water和alphac是不符合逻辑的。在最底部分,应该是只有水,那么alpha的值就该都是0.38。为什么在alpha.water却是0.62?

    alpha.png

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

    @zhe alpha.water 是占连续相的体积分数,如果没有空气只有水的话,理论上应该alpha.water都是1吧,你看看是不是你alpha.water图例显示的问题?

    zheZ 1 条回复 最后回复
  • zheZ 离线
    zheZ 离线
    zhe
    在 中回复了 Jasper 0 最后由 编辑
    #31

    @jasper-0 理论上,是应该这样的。我有两个问题:第一,哪里提到alpha1和aloha2只是占连续相的比值?我们希望它只是占连续相比值,但code里并没有提过吧。我是怕先入为主了,因为确实对不上。第二,你对比的alpha1的求解公式,帮助很大。但从物理意义上来说,alpha1*alphac就是考虑了粒子影响后的求解方式?它俩相乘是啥意义啊?

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

    @tens 在 MPPICInterFoam 中如何通过alphac得到alpha1和alpha2? 中说:

    @jasper-0
    0e85dbdf-ee3c-449b-ac56-b0e366bf4679-image.png
    懂了,现在就是说是红色部分的问题对吧,我看了代码中这部分是通过下面代码求的

    fvc::surfaceIntegrate(psiIf, phiPsi)
    

    而里面的phiPsi则对应的这一部分
    87b34b23-8ec8-40f0-bb9e-001511b06be6-image.png
    通过追踪

    alphaPhi10 = talphaPhi1Un;
    
    //又查到
    
    tmp<surfaceScalarField> talphaPhi1Un
            (
                fvc::flux
                (
                    phiCN(),
                    cnCoeff*alpha1 + (1.0 - cnCoeff)*alpha1.oldTime(),
                    alphaScheme
                )
              + fvc::flux
                (
                   -fvc::flux(-phir, alpha2, alpharScheme),
                    alpha1,
                    alpharScheme
                )
            );
    

    而其中的phiCN则

        tmp<surfaceScalarField> phiCN(alphaPhic);
    
        // Calculate the Crank-Nicolson off-centred volumetric flux
        if (ocCoeff > 0)
        {
            phiCN = cnCoeff*alphaPhic + (1.0 - cnCoeff)*alphaPhic.oldTime();
        }
    

    如果不采用CN格式phiCN就等于alphaPhic,又查到

     alphacf = fvc::interpolate(alphac);
    alphaPhic = alphacf*phi;
    

    所以本质上图一中红色部分还是通过alphac*alpha1得到的

    @zhe 看这条消息,code中就是按这个公式求的,alphan*alphac是真实的相体积分数,因此求得的alphan就是占连续相的体积分数

    zheZ 1 条回复 最后回复
  • zheZ 离线
    zheZ 离线
    zhe
    在 中回复了 Jasper 0 最后由 编辑
    #33

    @jasper-0 不好意思,最近没看到回复。如果像你说的alpha1*alphac就是真实的体积分数,那么alpha1才应该是整个cell里的alpha1啊,否则不需要再去乘以alphac.
    我之前怀疑过,MPPICInterFoam并不是像我们想象的那样,alpha1+alpha2+alpha_p = alphac + alpha_p = 1。而是按照interFoam的alpha1 + alpha2 = 1进行了两相流的计算。随后在动量方程和连续方程中,乘以alphac(这个值与lapha1和alpha2无关,而是用1-alpha_p来的)的效果,以保证真实流过的体积是考虑过粒子占比后的,也能解释方程右边加入的momentum transfer的力。所以可以说OpenFOAM目前做的三相流耦合,还是秉承了粒子在流体中不占体积来的(只是有相互作用力)。
    以上如果有不对的,希望可以多交流,感谢!

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

    @zhe 在 MPPICInterFoam 中如何通过alphac得到alpha1和alpha2? 中说:

    那么alpha1才应该是整个cell里的alpha1啊

    没看懂这是什么意思。举个例子,比如alphac=1-theta=0.8, alpha1=0.5,那么phase1所占整个cell的体积分数就是0.8*0.5=0.4,phase2也是0.4,0.4+0.4+0.2=1,在MPPICInterFoam中粒子是考虑了体积分数的

    zheZ 1 条回复 最后回复
  • zheZ 离线
    zheZ 离线
    zhe
    在 中回复了 Jasper 0 最后由 编辑
    #35

    @jasper-0 MPPICInterFoam中考虑了体积分数是为了保证质量守恒。你举的例子,alpha1=0.5本身就是占据整个cell的体积分数。而乘以alphac后得到的是实际占据cell的体积分数(因为cell中被粒子占据了一部分)。所以,整个过程中,alpha1一直都是0.5(alpha2=1-alpha1=1-0.5=0.5)这样是符合算法的。而上述例子中最后的0.4+0.4+0.2=1。可是OpenFOAM对于alpha2的求解是通过1-alpha1. 0.4+0.4不等于1。
    考虑一个简单的例子,只有粒子和水。alphac=1-theta=0.8。那么如果考虑了粒子的占比,那么水在这里就该是alpha1=alphac=0.8.那么在根据alpha1alphac=0.64?这个值是什么?
    然而回到我说的没有考虑粒子占比,对于alpha1的值,一直是占据cell的,那么alpha1就该是等于1(alpha2=1-alpha1=1-1=0. 符合假设前提)。而在实际运动过程中,由于粒子占比,alpha1实际的流通量是alpha1
    alphac=1*0.8=0.8. 这里考虑了alphac的影响,但是跟alpha1本身的值没有任何关系。
    我做了个最简单的验证,上下一共5个网格,最下面的放了一颗粒子。下面3个网格是水,上面是空气。得到的数据是
    444.png

    希望能帮助大家。

    T 2 条回复 最后回复
  • T 离线
    T 离线
    Tens 神
    在 中回复了 zhe 最后由 Tens 编辑
    #36

    @zhe alpha1一直都不是占cell的体积分数,只是占连续相的体积分数,不是alpha1+alpha2=alphac,而是再次将alphac看做单位1,alpha1+alpha2=1
    对于你的例子,只有粒子和水,那就是alphac=0.8,alpha1=1
    2160b90a-c5db-40fe-ad9b-9253977bcce1-image.png

    zheZ 1 条回复 最后回复
  • T 离线
    T 离线
    Tens 神
    在 中回复了 zhe 最后由 Tens 编辑
    #37

    @zhe 对alpha1和alpha2来说,分母不是Vcell,而是Vc
    d39cbc61-6364-43e0-a9d5-a6080d1b453d-image.png

    zheZ 1 条回复 最后回复
  • zheZ 离线
    zheZ 离线
    zhe
    在 中回复了 Tens 最后由 编辑
    #38

    @tens 你的意思我明白,但是将alphac看做单位1是混淆了概念。alphac就是alphac,它是个值,并是有时不是1。这个操作在OpenFOAM中没有。在概念上来说,你说的通,我是认同的。但是在存在MPPICInterFoam中,这种把alphac当作1,是不存在的。alpha1一直以来都是占cell的体积分数,你所说的把alphac当作1,也不是不对,而是当作1,其实就是cell本身。

    这里有人会迷糊,说那么alphac到底干啥用?它就是用来体现粒子占据一定体积后,对流体总体积造成了影响,不是来梳理alphac, alpha1, alpha2的关系的。

    1 条回复 最后回复
  • zheZ 离线
    zheZ 离线
    zhe
    在 中回复了 Tens 最后由 编辑
    #39

    @tens 之前你说不是alpha1+alpha2=alphac. 而这个图里又表示V1+V2=Vc?

    T 1 条回复 最后回复
  • T 离线
    T 离线
    Tens 神
    在 中回复了 zhe 最后由 编辑
    #40

    @zhe 体积和占比并不是一个概念

    zheZ 1 条回复 最后回复

  • 登录

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