美文网首页
基于coalChemistryFoam的稠密气固两相求解器开发(

基于coalChemistryFoam的稠密气固两相求解器开发(

作者: charryzzz | 来源:发表于2021-01-02 05:07 被阅读0次

    基于coalChemistryFoam的稠密气固两相求解器开发

    今天和大家一起学习一篇出自于Chalmers University of Technology的OpenFOAM课程的学生报告

    对于气固两相流,如果颗粒间距远大于粒径,那么拉格朗日点源假设可以简化计算,但是当颗粒间距与粒径可比或者离散相的体积分数不可忽略,则常用的欧拉-拉格朗日方法可能不再适用,这篇报告的目的就是在欧拉-拉格朗日框架的基础上通过引入离散相的体积分数来魔改OF自带的coalChemistryFoam求解器(本报告针对的是OpenFOAMv1806)。

    首先作者简要分析了coalChemistryFoam的框架,因为Lagrangian类比较复杂,有机会以后单独来讲,下面介绍关于体积分数的魔改
    连续相控制方程如下(其实就是加了\alpha):
    \frac{\partial\left(\alpha \rho_{g}\right)}{\partial t}+\nabla \cdot\left(\alpha \rho_{g} \mathbf{U}_{g}\right)=S_{m}
    \frac{\partial( \alpha \rho_{g} \mathbf{U}_{g} )}{\partial t}+\nabla \cdot\left(\alpha \rho_{g} \mathbf{U}_{g} \mathbf{U}_{g}\right)-\nabla \cdot\left(\alpha \tau_{g}\right)-\nabla \cdot\left(\alpha \rho_{g} \mathbf{R}_{g}\right)=-\alpha \nabla p+\alpha \rho_{g} \mathbf{g}+S_{\mathbf{U}}
    \frac{\partial\left(\alpha \rho_{g}(h+K)\right)}{\partial t}+\nabla \cdot\left(\alpha \rho_{g} \mathbf{U}_{g}(h+K)\right)-\nabla \cdot\left(\alpha \alpha_{e f f} \nabla(\mathrm{h})\right)=\alpha \nabla p+\alpha \rho_{g} \mathbf{U}_{g} \cdot \mathbf{g}+S_{h}
    \frac{\partial\left(\alpha \rho_{g} Y_{i}\right)}{\partial t}+\nabla \cdot\left(\alpha \rho_{g} \mathbf{U}_{g} Y_{i}\right)-\nabla \cdot\left(\alpha D_{e f f} \nabla\left(\rho_{g} Y_{i}\right)\right)=S_{i}
    在原有的coalChemistryFoam的基础上,需要做以下三点修改:

    1. 建立新的fields variables,主要就是体积分数\alpha
    2. 建立新的湍流模型
    3. 更新方程的求解

    Alpha fields

    createFields.H中将

    #include "compressibleCreatePhi.H"
    

    替换为

    surfaceScalarField phi
    (
        IOobject
        (
            "phi",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        linearInterpolate(U) & mesh.Sf()
    );
    

    这个OF中的phi在可压缩流中表示的就是质量通量,对比原来的compressibleCreatePhi.H

     surfaceScalarField phi
     (
         IOobject
         (
             "phi",
             runTime.timeName(),
             mesh,
             IOobject::READ_IF_PRESENT,
             IOobject::AUTO_WRITE
         ),
         linearInterpolate(rho*U) & mesh.Sf()
     );
    

    不难发现\phi = \rho*U 被替换为\phi = U,为什么这么做大家可以思考一下
    接着定义了连续相的体积分数

    volScalarField alphac
    (
        IOobject
        (
            "alpha",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        mesh,
        dimensionedScalar(dimless, Zero)
    );
    

    计算连续相体积分数

    scalar alphacMin // 相体积分数的最小值 = 1 - 离散相体积分数的最大值
    (
        1.0
      - readScalar
        (
            coalParcels.particleProperties().subDict("constantProperties")
           .lookup("alphaMax")
        )
    );
    
    // Update alphac from the particle locations
    alphac = max(1.0 - coalParcels.theta() - limestoneParcels.theta(), alphacMin);
    alphac.correctBoundaryConditions();
    

    注意到这里调用了Lagrangian类中的theta()函数,这个函数应在OF源代码里是没有的,应该是作者自己定义的,但是作者提交的源代码里并没有Lagrangian类的部分,所以它是如何实现的我们不得而知,但是不难推断出theta()应该是返回离散相的体积。代码里coalParcelslimestoneParcels是离散相的名称,它们是在creatClouds.H文件中定义的:

    Info<< "\nConstructing coal cloud" << endl;
    coalCloud coalParcels
    (
        "coalCloud1",
        rhoc,
        Uc,
        g,
        slgThermo
    );
    
    Info<< "\nConstructing limestone cloud" << endl;
    basicThermoCloud limestoneParcels
    (
        "limestoneCloud1",
        rhoc,
        Uc,
        g,
        slgThermo
    );
    

    因为以上的修改,phi不再表示质量通量,故定义新的rhoPhi

    surfaceScalarField rhocPhic
    (
        IOobject
        (
            "rhoPhi",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        fvc::interpolate(rhoc)*phic
    );
    
    surfaceScalarField alphaRhoPhic
    (
        IOobject
        (
            "alphaRhoPhi",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        alphacf*rhocPhic
    );
    

    至此,体积分数\alpha及考虑体积分数的质量通量都定义好了,后续我们会继续学习余下部分:

    1. 建立新的湍流模型
    2. 更新方程的求解

    相关文章

      网友评论

          本文标题:基于coalChemistryFoam的稠密气固两相求解器开发(

          本文链接:https://www.haomeiwen.com/subject/dxscoktx.html