buoyantPimpleFoam与rhosimpleFoam的密度场读写问题



  • 大家好,
    我目前想用查表法读取密度等场量,在constant里面有rho文件。
    在rhosimpleFoam里面,rho这么定义:

    volScalarField rho
    (
        IOobject
        (
            "rho",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::AUTO_WRITE
        ),
        thermo.rho()
    );
    

    这种情况下,可以读取rho文件数据。在buoyantPimpleFoam中,rho:

            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        thermo.rho()
    );
    

    这种情况下,rho不读取,不写入。我将其改成:

    IOobject::READ_IF_PRESENT,
    IOobject::AUTO_WRITE
    

    还是没有从文件中读取rho,而是显示了rho的internalfield为0,导致了printstack错误。

    我想知道为什么同样的代码和文件配置,为什么会出现读取的差异呢?我在想会不会是因为psiThermo与rhoThermo中对rho的处理存在差异?

    另外,在buoyantPimpleFoam中rho=thermo.rho()与 thermo.correct()哪个是更新密度呢?

    谢谢大家。


  • 管理员

    rho=thermo.rho()是赋值,thermo.correct()是更新;

    你在buoyangSimpleFoam中改那几个不可以,他整个rho的代码是

    volScalarField rho
        (
            IOobject
            (
                "rho",
                runTime.timeName(),
                mesh,
                IOobject::NO_READ,
                IOobject::NO_WRITE
            ),
            thermo.rho()
        );
    

    是通过thermo.rho()赋值的。



  • 看看 这个 满足你的需求吗?


Log in to reply
 


CFD中文网 | 东岳流体学术 | 东岳流体商业 | 吉ICP备20003622号-1