CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    devReff()通过devRhoReff()实现其功能 (rho =1)?(OF4.x)

    OpenFOAM
    3
    3
    673
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Y
      Yongbo 最后由 编辑

      • IncompressibleTurbulenceModel.C 中的代码:
        首先给出devReff() 和devRhoReff()的代码,如下:
      template<class TransportModel>
      Foam::tmp<Foam::volSymmTensorField>
      Foam::IncompressibleTurbulenceModel<TransportModel>::devReff() const
      {
          return devRhoReff();
      }
      
      ...
      
      template<class TransportModel>
      Foam::tmp<Foam::volSymmTensorField>
      Foam::IncompressibleTurbulenceModel<TransportModel>::
      devRhoReff() const
      {
          NotImplemented;
      
          return devReff();
      }
      

      可以看到,devReff()调用了 devRhoReff()。然而在IncompressibleTurbulenceModel.C中,并没有找到这两个函数更进一步的细节

      • 接着,在linearViscousStress.C 中的的代码中,
        发现devRhoReff()的定义
      template<class BasicTurbulenceModel>
      Foam::tmp<Foam::volSymmTensorField>
      Foam::linearViscousStress<BasicTurbulenceModel>::devRhoReff() const
      {
          return tmp<volSymmTensorField>
          (
              new volSymmTensorField
              (
                  IOobject
                  (
                      IOobject::groupName("devRhoReff", this->U_.group()),
                      this->runTime_.timeName(),
                      this->mesh_,
                      IOobject::NO_READ,
                      IOobject::NO_WRITE
                  ),
                  (-(this->alpha_*this->rho_*this->nuEff()))
                 *dev(twoSymm(fvc::grad(this->U_)))
              )
          );
      }
      
      • 先将问题总结如下:
        1)NotImplemented是什么意思?为什么不可压中devRhoReff()返回的是devReff()?
        是否可以理解为,不可压缩流里面的devReff()执行的是其它代码(linearViscousStress.C)中的devRhoReff()?
      template<class TransportModel>
      Foam::tmp<Foam::volSymmTensorField>
      Foam::IncompressibleTurbulenceModel<TransportModel>::
      devRhoReff() const
      {
          NotImplemented;
      
          return devReff();
      }
      

      2)若devReff() 实际上执行的是devRhoReff()(linearViscousStress.C)

      并且在CFDonline一个帖子里,链接文本,有人说devReff()实际上是devRhoReff()中rho为1时的情况
      ''it seems like it's best to simply search for "devRhoReff()", because "devReff()" is just when "rho" is simply 1.0.''。
      若是如此,这里面rho_=1是在哪里定义的,我一直没找到相应代码:136:

      望各位不吝赐教 :)!

      1 条回复 最后回复 回复 引用
      • 李东岳
        李东岳 管理员 最后由 编辑

        手头没有OpenFOAM。简单来说,notimplementsd是一个宏,返回到一个error函数。ρ=1是因为定义了geometricOneField。你顺着这个思路看看。

        2023年线下CFD课 报名正式启动 http://dyfluid.com/class.html
        CFD高性能服务器 http://dyfluid.com/servers.html

        1 条回复 最后回复 回复 引用
        • S
          Samuel-Tu 最后由 编辑

          我记得构造哪个class的时候就是默认了1

          1 条回复 最后回复 回复 引用
          • Referenced by  U upc_ngh 
          • First post
            Last post