编程小白求问:kEpsilon模型中 k_() 的定义在哪?



  • 在求解器(例如pisoFoam.C)中添加代码turbulence->k()可以得到湍动能的量。这是因为在kEpsilon.H中,对k()有如下定义

    //- Return the turbulence kinetic energy
    virtual tmp<volScalarField> k() const
    {
        return k_;
    }
    

    所以我明白k_k()代表什么。
    但是,在kEpsilon.C中,对湍动能的求解方程如下

    tmp<fvScalarMatrix> kEqn
    (
        fvm::ddt(alpha, rho, k_)
      + fvm::div(alphaRhoPhi, k_)
      - fvm::laplacian(alpha*rho*DkEff(), k_)
     ==
        alpha()*rho()*G
      - fvm::SuSp((2.0/3.0)*alpha()*rho()*divU, k_)
      - fvm::Sp(alpha()*rho()*epsilon_()/k_(), k_)
      + kSource()
      + fvOptions(alpha, rho, k_)
    );
    
    kEqn.ref().relax();
    fvOptions.constrain(kEqn.ref());
    solve(kEqn);
    fvOptions.correct(k_);
    bound(k_, this->kMin_);
    

    不论是显式离散还是隐式离散,源项括号左边中的湍动能都是用k_()表示的。那么k_()是在哪定义的?代表什么含义?



  • k_是class kEpsilon的protected 变量,k()是class kEpsilon的member function,这些都是很基础的C++类的知识,如果你时间充足可以阅读C++ prime(plus),如果时间不是很充足,推荐阅读Guide to Scientific Computing in Cpp。另外在http://www.tfd.chalmers.se/~hani/kurser/OS_CFD/和知乎上你也能搜索到一些修改湍流模型的资料。



  • @yfclark编程小白求问:kEpsilon模型中 k_() 的定义在哪? 中说:

    http://www.tfd.chalmers.se/~hani/kurser/OS_CFD/

    我知道k_和k()分别为protected变量和member function,但是这里出现了k_(),那么k_()是protected function吗?



  • 可能没把问题描述清楚。我问的是k_(),不是k_或者k()啊



  • 不好意思,我常看的是2.3和2.4的单相流的代码,里面用的都是k_。比如openfoam2.4

        tmp<fvScalarMatrix> kEqn
        (
            fvm::ddt(rho_, k_)
          + fvm::div(phi_, k_)
          - fvm::laplacian(DkEff(), k_)
         ==
            G
          - fvm::SuSp((2.0/3.0)*rho_*divU, k_)
          - fvm::Sp(rho_*epsilon_/k_, k_)
        );
    

    不知道你看的是那个版本,看样子还是多相流的



  • @yfclark

    5.0版本的。刚才受到你的启发,去知乎上搜了一下,用的是k_,看来k_和k_()没区别吧,好吧。谢谢了


  • OpenFOAM教授

    k_() 调用的是 GeometricFieldoperator(),定义如下:

    src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.H

            //- Return a const-reference to the dimensioned internal field  
            //  Useful in the formulation of source-terms for FV equations
            inline const Internal& operator()() const; 
    


  • @wwzhao
    谢谢
    虽然没看懂,不过知道了这个在源项处理上非常有用:xinlei:


  • OpenFOAM教授

    @MecYHL 简而言之就是返回一个不带边界的内场。



  • 感谢大家分享!:xiexie: 论坛急需散金币机制。暂且欠每人1000金币!:w:


Log in to reply