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