wallShearStress函数量纲问题咨询
-
各位老师们好,我在用OpenFOAM-2.4.0版本中,需要提取可压缩流动中壁面的剪切应力,查阅了后处理程序wallShearStress,其中有一点我感到很困惑。
剪切应力场定义如下:
volVectorField wallShearStress ( IOobject ( "wallShearStress", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, dimensionedVector ( "wallShearStress", sqr(dimLength)/sqr(dimTime), vector::zero ) );
其中规定量纲为$m^2/s^2$,然而在wallShearStress的计算中
在calcIncompressible函数中,是读取的$devReff()$函数
const volSymmTensorField Reff(model->devReff()); forAll(wallShearStress.boundaryField(), patchI) { wallShearStress.boundaryField()[patchI] = ( -mesh.Sf().boundaryField()[patchI] /mesh.magSf().boundaryField()[patchI] ) & Reff.boundaryField()[patchI]; }
而在calcCompressible函数中,是读取的$devRhoReff()$函数
const volSymmTensorField Reff(model->devRhoReff()); forAll(wallShearStress.boundaryField(), patchI) { wallShearStress.boundaryField()[patchI] = ( -mesh.Sf().boundaryField()[patchI] /mesh.magSf().boundaryField()[patchI] ) & Reff.boundaryField()[patchI]; }
这两个函数不是应该差了$\rho$么,为什么输入的wallShearStress场的量纲在不可压缩和可压缩下是固定的呢?我也看了其他几个版本,发现都是一样的代码。
这块没有特别理解,如果我要计算可压缩流动的剪切应力,是直接取它的值,还是在该场的基础上乘以密度呢?希望老师们能帮我解答疑惑,不胜感激!
-
一个是可压缩的,一个是不可压缩的。
不可压缩的状况下$\rho$是个常量,方程两边同除以$\rho$。好像是压力项变成$\frac{p}{\rho}$。其他项就没有$\rho$了。
可压缩的话,方程中各项按说本身就带$\rho$,我猜的
看这个
-
@bestucan 在 wallShearStress函数量纲问题咨询 中说:
一个是可压缩的,一个是不可压缩的。
不可压缩的状况下$\rho$是个常量,方程两边同除以$\rho$。好像是压力项变成$\frac{p}{\rho}$。其他项就没有$\rho$了。
可压缩的话,方程中各项按说本身就带$\rho$,我猜的
看这个
嗯嗯,东岳老师那个帖子我也看过。但是就是上面代码写到的,如果按照上面的公式看的话,可压缩流中剪切应力计算得到的结果应该要比不可压缩中结果多乘一个$\rho$。但是wallShearStress函数中输出场的量纲是固定的(不可压缩公式中计算得到的剪切应力量纲),我就觉得很奇怪……到底对于可压缩流,如果用这个代码计算,得到的结果是量纲给错了,数值是正确的,还是是除以了一个密度后计算的结果
-
@王慧博 你写的那些代码,不进行量纲检测,直接赋值过去。我看openfoam-9里面已经修正了,跟
tau
的单位有关,而不是固定的了tmp<volVectorField> twallShearStress ( volVectorField::New ( type(), mesh_, dimensionedVector(tau.dimensions(), Zero) ) );
-
@李东岳 感谢东岳老师哈,我也测试了一下,再乘了个密度,发现也没有报错,的确不会受量纲限制。老师我还想请教一个问题,OpenFOAM中的代码在什么情况下会考虑等式两边的量纲是否对应呢
-
@王慧博 带量纲的场都会做量纲检测。你那个boundaryField属于scalarField,本身没有量纲。
-
@李东岳 好的,我明白啦,感谢李老师~: