OpenFoam 获取每个点的坐标向量



  • 各位朋友:

    我想通过计算得到U在切向和轴向的速度分量,所以要用到如下的公式:

    Uradial = vector(position) & U / mag( vector(position))
    

    读取U场数据用如下代码:

    IOobject Uheader
    (
        "U"
        runTime.timeName(),
        mesh,
        IOobject::MUST_READ
    );
    

    可是在读取各个网格中心坐标的时候,遇到了问题,我的代码如下:

    void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
    {
        //bool writeResults = !args.optionFound("noWrite");
    
        IOobject Uheader
        (
            "U",
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ
        );
        // Check U exists
        if (Uheader.headerOk() )
        {
            Info<< "    Reading U" << endl;
            volVectorField U(Uheader, mesh);
          
           // 读取各个网格中心点的坐标
            volVectorField&  centres =  mesh.C().internalField();
          // 由于mesh.C()在网格内部返回的是中心点的坐标,在网格边界处返回的是面心坐标,所以用.internalField(),可是在这儿报错
    
    
            volScalarField URadial
            (
                IOobject
                (
                    "URadial",
                    runTime.timeName(),
                    mesh
                ),
                ((centres - centres.component(2) ) & U) //mag ((mesh.C() - (0., 0., mesh.C().component(2)))
                //这个地方我想得到一个平行于z轴的坐标,方法是用这一点的位置向量减去(0, 0, z)可是系统报错告诉我不能这样减。
            );
        }
        else
        {
            Info<< "    Missing p or T" << endl;
        }
        Info<< "\nEnd\n" << endl;
    }
    

    我想问一下,如果想实现mesh.C()- (0, 0, z)的话,需要怎么做?

    非常感谢!
    Janry


登录后回复
 

与 CFD 中国 的连接断开,我们正在尝试重连,请耐心等待