并行计算能否直接引用到case的地址



  • 串行计算的runTime.path()是本case的地址,而并行的runTime.path()是processor的地址。有没有某个命令,能让并行和串行都能识别并引用到case地址呢。
    举例: 假如有这个命令是runTime.casePath(),对于串行就返回的相当于是runTime.path(),对于并行返回的就是runTime.path()/..
    主要是我在编写一个串行和并行通用的solver,需要一个都能识别的命令使其返回case的地址。。
    我觉得这个命令应该是存在的,因为并行transportProperties文件并没有进入processor里面,而并行的却可以初始化它。。



  • Foam::singlePhaseTransportModel::singlePhaseTransportModel
    (
        const volVectorField& U,
        const surfaceScalarField& phi
    )
    :
        IOdictionary
        (
            IOobject
            (
                "transportProperties",
                U.time().constant(),
                U.db(),
                IOobject::MUST_READ_IF_MODIFIED,
                IOobject::NO_WRITE
            )
        ),
        viscosityModelPtr_(viscosityModel::New("nu", *this, U, phi))
    {}
    

    IOdictinary初始化的时候用了U.time().constant()和 U.db(),但是我验证了下U.time().constant()还是返回的是processor里面的constant,U.db()没看懂返回的是什么,一串列表。。



  • 去源代码里面找了一下caseConstant()对于串行和并行,都可以返回case里面的constant的地址,我试了一下,达到我想要的效果了


  • Linux讲师 OpenFOAM讲师

    这个叫函数的重载,在面向对象的编程语言中是个普遍应用的特性。:high:


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2