functionObjects导出数据没有内部值只有边界是caculated



  • 各位好,我想在运行算例的时候输出LES的delta大小以及一些其他的SGS数据(最简单的就是Uprime=U-Umean)
    我在cfdonline上找个帖子,但是代码看起来是2.X版本的,我将它放到CreateFields.H里面

    volScalarField LESdelta
        (
            IOobject
            (
                "LESdelta",
                runTime.timeName(),
                mesh,
                IOobject::NO_READ,
                IOobject::NO_WRITE
            ),
            mesh,
            dimensionedScalar("LESdelta", dimLength, SMALL)
        );
    
        if (mesh.objectRegistry::foundObject<volScalarField>("delta"))
        {
            const volScalarField& delta =
                mesh.objectRegistry::lookupObject<volScalarField>("delta");
    
            //LESdelta.internalField() = delta.internalField();原代码,4.0以后internalField这个功能被ref()取代了
              LESdelta.ref()=delta;//修改的,感觉不太合适,至少编译不报错           
        }
    

    导出的delta文件只有一个很小的内部值,边界是caculated,很明显数据没提出来

    其次是Uprime,也是看这个帖子https://github.com/syavash20/TurbLab/tree/master/LESpimpleFoam
    在creatFields设置了该量之后,

    Info<< "Reading field UMean\n" << endl;
    volVectorField UMean
    (
        IOobject
        (
            "UMean",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::NO_WRITE
        ),
        mesh
    );
    

    去.C文件加一句

    UPrime = (U-UMean);
    

    这个导出文件是内部场直接没有,直接uniform 0,边界条件是一堆caculated(已经按照文档所说先算一会给个初始的Umean场了)
    所以为什么会没有数据呢?


Log in to reply
 


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