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. fireFoam createFields.H文件中创建场编译,输出多组分混合物各成分的质量流率,没有效果......

fireFoam createFields.H文件中创建场编译,输出多组分混合物各成分的质量流率,没有效果......

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

    在fireFoam求解器源程序的createfields.H文件中,根据phi(总质量通量)和Yi(多组分的质量分数),希望创建各组分的通量场,值为phi*Yi,进行如下添加后(标记黄色),编译正常通过,但求解结果文件中并没有发现创建好的通量场,希望各位大神能给与指导,不胜感激。

    autoPtr<combustionModels::psiCombustionModel> combustion
    (
        combustionModels::psiCombustionModel::New
        (
            mesh
        )
    );
    
    Info<< "Reading thermophysical properties\n" << endl;
    
    psiReactionThermo& thermo = combustion->thermo();
    thermo.validate(args.executable(), "h", "e");
    
    SLGThermo slgThermo(mesh, thermo);
    
    basicMultiComponentMixture& composition = thermo.composition();
    PtrList<volScalarField>& Y = composition.Y();
    
    
    const word inertSpecie(thermo.lookup("inertSpecie"));
    
    Info<< "Creating field rho\n" << endl;
    volScalarField rho
    (
        IOobject
        (
            "rho",
            runTime.timeName(),
            mesh,
            IOobject::NO_READ,
            IOobject::AUTO_WRITE
        ),
        thermo.rho()
    );
    
    volScalarField& p = thermo.p();
    const volScalarField& T = thermo.T();
    const volScalarField& psi = thermo.psi();
    
    Info<< "\nReading field U\n" << endl;
    volVectorField U
    (
        IOobject
        (
            "U",
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        mesh
    );
    
    #include "compressibleCreatePhi.H"
    
    Info<< "Creating turbulence model\n" << endl;
    autoPtr<compressible::turbulenceModel> turbulence
    (
        compressible::turbulenceModel::New
        (
            rho,
            U,
            phi,
            thermo
        )
    );
    
    // Set the turbulence into the combustion model
    combustion->setTurbulence(turbulence());
    
    volScalarField dQ
    (
        IOobject
        (
            "dQ",
            runTime.timeName(),
            mesh,
            IOobject::NO_READ,
            IOobject::AUTO_WRITE
        ),
        mesh,
        dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
    );
    
    
    Info<< "Creating field dpdt\n" << endl;
    volScalarField dpdt
    (
        IOobject
        (
            "dpdt",
            runTime.timeName(),
            mesh
        ),
        mesh,
        dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
    );
    
    Info<< "Creating field kinetic energy K\n" << endl;
    volScalarField K("K", 0.5*magSqr(U));
    
    
    #include "readGravitationalAcceleration.H"
    #include "readhRef.H"
    #include "gh.H"
    
    
    volScalarField p_rgh
    (
        IOobject
        (
            "p_rgh",
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        mesh
    );
    
    // Force p_rgh to be consistent with p
    p_rgh = p - rho*gh;
    
    mesh.setFluxRequired(p_rgh.name());
    
    multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
    
    forAll(Y, i)
    {
        fields.add(Y[i]);
    }
    fields.add(thermo.he());
    
    %(#fffc99)[PtrList<surfaceScalarField> Ysf;
    forAll(Ysf, i)
    {
        surfaceScalarField Ycf
        (
        IOobject
        (
            IOobject::groupName("Ycf",Y[i].name()),
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        fvc::interpolate(Y[i])*phi
       );
       Info<< "Ycf is\n" << Ycf << endl;
    }]
    
    IOdictionary additionalControlsDict
    (
        IOobject
        (
            "additionalControls",
            runTime.constant(),
            mesh,
            IOobject::MUST_READ_IF_MODIFIED,
            IOobject::NO_WRITE
        )
    );
    
    Switch solvePrimaryRegion
    (
        additionalControlsDict.lookup("solvePrimaryRegion")
    );
    
    
    A 1 条回复 最后回复
  • A 离线
    A 离线
    Alvin
    在 中回复了 Alvin 最后由 李东岳 编辑
    #2

    @alvin 抱歉,新添加的代码未能正常黄色标记显示,加入的代码为

    PtrList<surfaceScalarField> Ysf;
    forAll(Ysf, i)
    {
    surfaceScalarField Ycf
    (
    IOobject
    (
    IOobject::groupName(“Ycf”,Y[i].name()),
    runTime.timeName(),
    mesh,
    IOobject::READ_IF_PRESENT,
    IOobject::AUTO_WRITE
    ),
    fvc::interpolate(Y[i])*phi
    );
    Info<< “Ycf is\n” << Ycf << endl;
    }
    
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #3

    但求解结果文件中并没有发现创建好的通量场

    你强制写一下看看?field.write();

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

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