关于CreateTurbulenceFieldsLES疑问



  • 想计算LES下的耗散率,搜到cfdonline的一个程序CreateTurbulenceFieldsLES,是这个createTurbulenceFieldsLES2.zip ,这个是cfdonline链接,里面对于耗散率的计算非常简单,贴下代码

    volScalarField epsilon
    (
    IOobject
    (
    	"epsilon",
     	runTime.timeName(),
     	mesh,IOobject::NO_READ,
     	IOobject::NO_WRITE
     ),
     turbulence->epsilon()
     );
    

    对于这个不是很理解,箭头应该是指针吧,但是我不能很好的找到计算公式,貌似是采用的层流下的计算方式,因为在这个程序另一个文件createFields.H下有这么一处代码:

        singlePhaseTransportModel laminarTransport(U, phi);
    
        autoPtr<incompressible::turbulenceModel> turbulence
        (
            incompressible::turbulenceModel::New(U, phi, laminarTransport)
        );
    

    然后我找了下层流laminar.C下计算的方法

    tmp<volScalarField> laminar::epsilon() const
    {
        return tmp<volScalarField>
        (
            new volScalarField
            (
                IOobject
                (
                    "epsilon",
                    runTime_.timeName(),
                    mesh_,
                    IOobject::NO_READ,
                    IOobject::NO_WRITE
                ),
                mesh_,
                dimensionedScalar
                (
                    "epsilon", sqr(U_.dimensions())/dimTime, 0.0
                )
            )
        );
    }
    

    两个具体问题,我找的laminar.C这个是不是计算epsilon的公式,第二个问题层流下计算耗散率epsilon的公式为什么是这样的,按照定义应该是下图这样的,Eij就是指耗散率,应该是脉动速度的乘积,希望得到解答,谢谢!
    8545ee27-f883-41aa-8142-3a38baddc552-image.png


  • Linux讲师 OpenFOAM讲师

    箭头是对指针的成员的引用,找到这个类的定义:turbulenceModel.H

    epsilon()函数声明在205行,是个虚函数,所以在 turbulenceModel.C 里没有定义,而是在使用其作为模板创建新类的时候再各自定义

    在上面那个窗口里搜 epsilon() 函数:
    Screenshot from 2020-09-15 16-37-07.png

    看你的情况是用的哪种定义,其实里面 epsilon() 函数定义大差不差,
    你用的 LES,咋找上层流的了,你找的那个确实是层流的对于 epsilon() 的一个实现,在我发的那个图片里也有

    脉动速度都用上了,那应该不是层流了,速度分成脉动速度和平均速度这就是用了湍流模型了


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2