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
1 帖子 1 发布者 1.1k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 书生kao书 离线
    书生kao书 离线
    书生kao
    写于 最后由 书生kao 编辑
    #1

    计算气固颗粒反应流动,稠密颗粒流动的基础上添加了气固反应,组分输运方程的代码如下:

    {
        combustion->correct();
        Qdot = combustion->Qdot();
        volScalarField Yt(0.0*Y[0]);
    
        const volScalarField muEff(turbulence->muEff());
    
        forAll(Y, i)
        {
            if (i != inertIndex && composition.active(i))
            {
                volScalarField& Yi = Y[i];
    
                fvScalarMatrix YiEqn
                (
                    fvm::ddt(alphac, rhoc, Yi)
                  + mvConvection->fvmDiv(alphaRhoPhic, Yi)
                  - fvm::laplacian
                    (
                        fvc::interpolate(alphac)
                        *fvc::interpolate(muEff),
                        Yi
                    )
                  ==
                    vanadiumParcels.SYi(i, Yi)
                  + combustion->R(Yi)
                  + fvOptions(rhoc, Yi)
                );
    
                YiEqn.relax();
    
                fvOptions.constrain(YiEqn);
    
                YiEqn.solve("Yi");
    
                fvOptions.correct(Yi);
    
                Yi.max(0.0);
                Yt += Yi;
            }
        }
    
        Y[inertIndex] = scalar(1) - Yt;
        Y[inertIndex].max(0.0);
    }
    

    编译是没有问题的,目前遇到的问题是各组分的质量分数不对。
    反应是生成Cl2,消耗O2,inertSpecie为N2,计算过程氯气的质量分数不断增加(未越界),而N2的质量分数减少。实际上即便完全反应,N2的质量分数下降应该不大,计算结果不符合实际现象。
    个人理解问题应该是vanadiumParcels.SYi(i, Yi),可以理解为组分输运方程的源项,其代码为

    template<class CloudType>
    inline Foam::tmp<Foam::fvScalarMatrix> Foam::ReactingCloud<CloudType>::SYi
    (
        const label i,
        volScalarField& Yi
    ) const
    {
        if (this->solution().coupled())
        {
            if (this->solution().semiImplicit("Yi"))
            {
                tmp<volScalarField> trhoTrans
                (
                    volScalarField::New
                    (
                        this->name() + ":rhoTrans",
                        this->mesh(),
                        dimensionedScalar(dimMass/dimTime/dimVolume, 0)
                    )
                );
    
                volScalarField& sourceField = trhoTrans.ref();
    
                sourceField.primitiveFieldRef() =
                    rhoTrans_[i]/(this->db().time().deltaTValue()*this->mesh().V());
    
                const dimensionedScalar Yismall("Yismall", dimless, small);
    
                return
                    fvm::Sp(neg(sourceField)*sourceField/(Yi + Yismall), Yi)
                  + pos0(sourceField)*sourceField;
            }
            else
            {
                tmp<fvScalarMatrix> tfvm(new fvScalarMatrix(Yi, dimMass/dimTime));
                fvScalarMatrix& fvm = tfvm.ref();
    
                fvm.source() = -rhoTrans_[i]/this->db().time().deltaTValue();
    
                return tfvm;
            }
        }
    
        return tmp<fvScalarMatrix>(new fvScalarMatrix(Yi, dimMass/dimTime));
    }
    

    到目前为止,我也没看出来有啥问题。所以,想请教一下吧里的大佬,能否帮我解答一下疑惑?如何解决这个问题,请各位大佬不吝赐教!!!

    业精于勤荒于嬉,行成于思毁于随!

    1 条回复 最后回复

  • 登录

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