yPlus在openfoam代码里面的实现
-
大家好,
我想在openfoam里面植入y+的公式。
我看到在nutLowReWallFunciton.C里面有关于yPlus的定义:tmp<scalarField> nutLowReWallFunctionFvPatchScalarField::yPlus() const { const label patchi = patch().index(); const turbulenceModel& turbModel = db().lookupObject<turbulenceModel> ( IOobject::groupName ( turbulenceModel::propertiesName, internalField().group() ) ); const scalarField& y = turbModel.y()[patchi]; const tmp<scalarField> tnuw = turbModel.nu(patchi); const scalarField& nuw = tnuw(); const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchi]; return y*sqrt(nuw*mag(Uw.snGrad()))/nuw; }
我目前在改湍流模型,里面需要用到yPlus,所以就想着引用这里面yPlus()的定义到自己的代码里,但编译一直会报错。
不知道正确的操作应该是怎么样的?谢谢。 -
@东岳 老师您可以再提示下吗?
错误里面汇总就是:there are no arguments to ‘patch’ that depend on a template parameter, so a declaration of ‘patch’ 或‘internalField’或‘db’ must be available
不好意思代码功底有点差
-
@东岳 我想在湍流模型中植入fMu,公式是:
里面有y+,所以想引用yPlus
用后处理工具算出来的y+是定值吧,直接简化成定值带进去吗? -
-
@东岳 是的,体标量场
-
@东岳 代码里面公式在nutLowReWallFunciton.C的yPlus()体现
计算公式就是: -
@东岳 那从一个壁面函数的代码里面引用yplus到湍流模型的代码里不知道怎么操作
-
那从一个壁面函数的代码里面引用yplus到湍流模型的代码里不知道怎么操作
代码倒不是问题。我觉得构成问题的,是如何在非壁面处求yPlus,目前我还没找到相应的公式,有公式就不难处理
不知道有没有人见到过如何在非壁面处求yPlus的数学公式?
-
van Driest 也是施加 damping function,跟你这个比较类似,van Driest damping function 的定义可以参考这里。
-
最近算了几个验证壁面函书的LES,可能加van Driest会更准。有空把这个算立整理整理发上来
另外得知:
@东岳 在 yPlus在openfoam代码里面的实现 中说:
如何在非壁面处求yPlus的数学公式?
自我回答,跟常规方法一样。程序里:
#include "wallDist.H" int main() { volScalarField Dist(wallDist::New(mesh).y()); dimensionedScalar uTau("uTau", dimVelocity, 1.003); volScalarField yPlus(Dist*uTau/turbulence->nu()); }
-
@东岳 谢谢老师!这里面的uTau为何直接取1.003呢?不需要植入它的公式吗?
-
如果要植入MK湍流模型的话,里面有一项
其中y+我按照了东岳老师提供的方法,那就是如下图:
编译成功,但按这个湍流模型跑的结果不对。uTau为何设成1.003呢?如果要植入uTau的公式,那tauw这个如何得到呢?源代码里面相关的有tauw跟wallshearstress,但是不知道怎么引用。还望赐教。
-
@Calf-Z-DNS 我那个是我自己写哒,计算出来之后是1.0003,具体我有点忘了下周回办公室给你看看
-
@东岳 好的谢谢!