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. multiphaseEulerFoam对相变的计算

multiphaseEulerFoam对相变的计算

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

    各位老师和学者好,我最近在尝试使用multiphaseEulerFoam来计算水的闪蒸过程。但是遇到了一些问题。对于纯水的两相流动(没有空气),应该是调用ThermalPhaseChangePhaseSystem

    type thermalPhaseChangeMultiphaseSystem;
    
    phases (steam water);
    
    phaseChange on;
    
    steam
    {
        type            purePhaseModel;
        diameterModel   isothermal;
        isothermalCoeffs
        {
            d0              3e-3;
            p0              1e5;
        }
    
        residualAlpha   1e-3;
    }
    
    water
    {
        type            purePhaseModel;
        diameterModel   constant;
        constantCoeffs
        {
            d               1e-4;
        }
    
        residualAlpha   1e-3;
    }
    

    在此基础上,后续的换热模型选用了RanzMarshall,但是我发现根本不会发生闪蒸(我在能量方程里对water相直接补充了热量,保证了温度上升)

    in EEqns.H

    forAll(fluid.anisothermalPhases(), anisothermalPhasei)
        {
            phaseModel& phase = fluid.anisothermalPhases()[anisothermalPhasei];
    
            const volScalarField& alpha = phase;
            tmp<volScalarField> tRho = phase.rho();
            const volScalarField& rho = tRho();
            tmp<volVectorField> tU = phase.U();
            const volVectorField& U = tU();
            
            volScalarField q = alpha*rho*(U&g)-alpha*rho*(U&g);
    
            if(phase.name() == "water")
            {
            q[93] = 5.0E8;
            q[94] = 5.0E8;
            q[95] = 5.0E8;
            q[96] = 5.0E8;
            q[97] = 5.0E8;
            }
    ···········
    

    不会发生相变的原因确定于代码中,对于质量源项的计算有

    ThermalPhaseChangePhaseSystem.C

            // Interfacial mass transfer update
            {
                volScalarField& dmdtf(*this->dmdtfs_[pair]);
                volScalarField& Tf(*this->Tfs_[pair]);
    
                const volScalarField Tsat(saturationModelIter()->Tsat(thermo1.p()));
    
                const volScalarField L
                (
                    volatile_ != "none"
                  ? this->Li(pair, volatile_, dmdtf, Tsat, latentHeatScheme::upwind)
                  : this->L(pair, dmdtf, Tsat, latentHeatScheme::upwind)
                );
    
                volScalarField H1(this->heatTransferModels_[pair].first()->K(0));
                volScalarField H2(this->heatTransferModels_[pair].second()->K(0));
    
                volScalarField dmdtfNew((H1*(Tsat - T1) + H2*(Tsat - T2))/L);
    

    其中,换热系数H1与2的计算
    RanzMarshall.C

    Foam::tmp<Foam::volScalarField>
            
            Foam::heatTransferModels::RanzMarshall::K(const scalar residualAlpha) const
            
            {
            
                volScalarField Nu(2 + 0.6*sqrt(pair_.Re())*cbrt(pair_.Pr()));
            
            
            
                return
            
                    6
            
                   *max(pair_.dispersed(), residualAlpha)
            
                   *pair_.continuous().thermo().kappa()
            
                   *Nu
            
                   /sqr(pair_.dispersed().d());
            
            }
    

    可以发现,当离散相为水蒸气(初始条件下为0),连续相为水时,输入的残差为0时,

                volScalarField H1(this->heatTransferModels_[pair].first()->K(0));
                volScalarField H2(this->heatTransferModels_[pair].second()->K(0));
    

    这个H1和H2必然为0,因此计算所得到的相变量dmdtfNew也必然为0,无论液体的温度高过饱和温度多少。

    请问有老师碰到过这种情况吗,任何点拨都感激不尽:xinlei:

    1 条回复 最后回复

  • 登录

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