各位朋友:
我想通过计算得到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