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. compressibleInterFoam 耦合多组分传输模型

compressibleInterFoam 耦合多组分传输模型

已定时 已固定 已锁定 已移动 OpenFOAM
13 帖子 8 发布者 12.5k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Z 离线
    Z 离线
    Zhong-combustion
    在 中回复了 mohui 最后由 编辑
    #3

    @mohui 类似与reactingFoam的YEqn。就是每个组分都是一个标量扩散方程。l

    M 1 条回复 最后回复
  • M 离线
    M 离线
    mohui
    在 中回复了 Zhong-combustion 最后由 编辑
    #4

    @Zhong-combustion 那你的意思是指组分是可溶的吗?互相扩散?

    Z 1 条回复 最后回复
  • Z 离线
    Z 离线
    Zhong-combustion
    在 中回复了 mohui 最后由 编辑
    #5

    @mohui 是的。但是两相直接不应该扩散,两相质量交换的方式应该是相变。

    M 1 条回复 最后回复
  • M 离线
    M 离线
    mohui
    在 中回复了 Zhong-combustion 最后由 编辑
    #6

    @Zhong-combustion 目前我写了个关于compressibleinterfoam添加空化源项的求解器,但是拿试验验证不是很好。

    L 1 条回复 最后回复
  • 飞 离线
    飞 离线
    飞火流星jyj
    写于 最后由 编辑
    #7

    是不是相中再表示多个成分,目前看VOF模型里还没有

    十分感谢

    1 条回复 最后回复
  • L 离线
    L 离线
    LYT
    在 中回复了 mohui 最后由 编辑
    #8

    @mohui 能加一下你的联系方式吗

    1 条回复 最后回复
  • R 离线
    R 离线
    Rachel0096
    在 中回复了 Zhong-combustion 最后由 编辑
    #9

    @Zhong-combustion 您好,请问您实现这个功能了嘛,可以交流一下吗~

    1 条回复 最后回复
  • ShaneHEEES 在线
    ShaneHEEES 在线
    ShaneHEEE
    写于 最后由 编辑
    #10

    插个眼

    1 条回复 最后回复
  • R 离线
    R 离线
    Rachel0096
    写于 最后由 编辑
    #11

    不知道各位老师有没有看过米兰理工Cuoci教授的《DropletSMOKE++: A comprehensive multiphase CFD framework for the evaporation of multidimensional fuel droplets》,他研究了燃料液滴蒸发,但他的YEqn.H方程我有点不太明白,有兴趣的老师可以分享一下自己的见解嘛~
    YEqn.H:

    /*---------------------------------------------------------------------------------------------------------------------------*\
    Description
    
     Based on Banerjee et.al. (2013) the saturation mass fraction equation is solved. It is assumed that all the liquid phase has the
     saturation interfacial concentration and it diffuses from all the volume. Afterwards the liquid concentration is posed = 1 
     (for monocomponent cases). 
    
    \*----------------------------------------------------------------------------------------------------------------------------*/
    
    
    
    // Mass Fluxes
    #include "correctDiffusionFluxes.H"
    
    
    if(speciesEquations == true)
    {
    
     double tStart = OpenSMOKE::OpenSMOKEGetCpuTime();
    
    
     // Convection discretization schemes
     tmp<fv::convectionScheme<scalar> > mvConvection
     (
        fv::convectionScheme<scalar>::New
        (
            mesh,
            fields,
            rhoPhi,
            mesh.divScheme("div(rhoPhi,Yi)")
        )
     );
    
    
    
        
      volScalarField Yt = 0.0*Y[0];
    
    
    // Solving transport equations for the saturation mass fraction of liquid species Ysat
    
        for (label i=0; i<NLS; i++)
        {
               	volScalarField& Yi = Y[LiquidSpeciesIndices(i)];
    	     	volScalarField& rhoDmixi = rhoDmix[LiquidSpeciesIndices(i)];
    	    	volScalarField& Keqi = Keq[i];
               	volScalarField& Ysati = Ysat[i];
               	volScalarField& Xsati = Xsat[i];
                    dimensionedScalar MWi( "Mi", dimensionSet(1,0,0,0,-1,0,0),thermodynamicsMapXML->MW(LiquidSpeciesIndices(i)) );
    
                    Ysati = alpha1*Keqi + alpha2*Ysati;
    
    
    /*---------------------------------------------------------------------------------------------------------------------------*\
    Description
    
     The diffusion fluxes must be corrected with the molecular weight, because the diffusivity coefficients are molar-based. Having 
     mass-fraction equation instead of a molar-fraction one, a MW correction is needed ( Transport Phenomena, p.534 )
    
    \*----------------------------------------------------------------------------------------------------------------------------*/
    
    
                  volScalarField correctionMolarFluxes = rhoDmixi;
    
                  if(mwCorrectionInDiffusionFluxes == true)
                  {
                      correctionMolarFluxes = rhoDmixi*
                                              1./(MWsat*MWinert)*
                                              1./ Foam::pow( Ysati/MWi+(1.-Ysati)/MWinert , 2.0);
                  }
    
         
    
    
    // Solve liquid species equation
    
    			fvScalarMatrix YsatiEqn
    			(
    				fvm::ddt(rho, Ysati)
    			      + mvConvection->fvmDiv(rhoPhi, Ysati)
    			      - fvm::laplacian(correctionMolarFluxes, Ysati)
    				== 
                                 // - fvm::div(Jc,Ysati, "div(Jc,Ysati)")
    			       fvOptions(rho, Ysati)
    			);
    
    
    			// Solve
    			YsatiEqn.relax();
    			fvOptions.constrain(YsatiEqn);
    			YsatiEqn.solve(mesh.solver("T"));
    			fvOptions.correct(Ysati);	
    
    
                    Ysati = alpha1*Keqi + alpha2*Ysati;
    
                    Xsati = Ysati/( MWi * (Ysati/MWi + (1.-Ysati)/MWinert) );
    
    
                    Yi = alpha1 + Ysati*alpha2;
                    Yi.correctBoundaryConditions();
    
    		Yi.max(0.0);
    		Yt += Yi;
                         
        }
    
    
    
    
    
    // Solving transport equations for the gas species (not entering the liquid phase, like O2, CO2, reaction products...)
    
        for (label i=0; i<NGS; i++)
        {
           volScalarField& Yi = Y[GasSpeciesIndices(i)];
           volScalarField& rhoDmixi = rhoDmix[GasSpeciesIndices(i)];
           volScalarField& Ygasi = Ygas[i];
    
    
            Ygasi = alpha1*(1.0-sumYi)*GaseousInterfaceRatio[i]/(1.0+GaseousInterfaceRatio[i]) + alpha2*Ygasi;                        
    
    
    			fvScalarMatrix YgasiEqn
    			(
    				fvm::ddt(rho, Ygasi)
    			      + mvConvection->fvmDiv(rhoPhi, Ygasi)
    			      - fvm::laplacian(rhoDmixi, Ygasi)
    				== 
    			       fvOptions(rho, Ygasi)
    			);
    
    
    			// Solve
    			YgasiEqn.relax();
    			fvOptions.constrain(YgasiEqn);
    			YgasiEqn.solve(mesh.solver("Yi"));
    			fvOptions.correct(Ygasi);	
    
    
               Ygasi = alpha1*(1.0-sumYi)*GaseousInterfaceRatio[i]/(1.0+GaseousInterfaceRatio[i]) + alpha2*Ygasi;   
    
                     Yi =  alpha2*Ygasi;
                     Yi.correctBoundaryConditions();                        
    
    
    			
    			// Sum of mass fractions
    		    	Yi.max(0.0);
    		   	Yt += Yi;
    
    
        }
    
    
    
    
        Info << "Inert species is " << Y[inertIndex].name() << " with local index equal to " << inertIndex << endl;
        Y[inertIndex] = scalar(1.0) - Yt;
        Y[inertIndex].max(0.0);
    
        double tEnd = OpenSMOKE::OpenSMOKEGetCpuTime();
    	
        Info << "Transport equations of species solved in " << tEnd - tStart << " s " << endl;
    
    
    }
    
    1 条回复 最后回复
  • X 离线
    X 离线
    xr
    写于 最后由 编辑
    #12

    icoReactingMultiPhaseInterFoam就是多相流多组分的求解器把

    1 条回复 最后回复
  • E 离线
    E 离线
    EricLiu
    写于 最后由 编辑
    #13
    此回复已被删除!
    1 条回复 最后回复

  • 登录

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