Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新

    关于omega_和omega_()中的括号

    OpenFOAM
    3
    6
    813
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 吴
      吴优 last edited by 吴优

      各位好!
      我看到了东岳老师之前在CFD online上的一篇post:call a tmp formal value without a parentheses?,我最近在研究k-omega SST模型时也发现了类似的问题。
      例如在定义epsilonByk时,用到的是有括号的omega_():

      
      template<class BasicEddyViscosityModel>
      tmp<volScalarField::Internal>
      kOmegaSSTBase<BasicEddyViscosityModel>::epsilonByk
      (
          const volScalarField& F1,
          const volTensorField& gradU
      ) const
      {
          return betaStar_*omega_();
      }
      

      而在定义分段函数F2时用到的是omega_:

      template<class BasicEddyViscosityModel>
      tmp<volScalarField> kOmegaSSTBase<BasicEddyViscosityModel>::F2() const
      {
          tmp<volScalarField> arg2 = min
          (
              max
              (
                  (scalar(2)/betaStar_)*sqrt(k_)/(omega_*y_),
                  scalar(500)*(this->mu()/this->rho_)/(sqr(y_)*omega_)
              ),
              scalar(100)
          );
          return tanh(sqr(arg2));
      }
      

      我试着用Info将omega_和omega_()都输出到log文件中,得到的是完全一样的体标量场。但是有时如果删去原有的括号或是加上括号会引起报错。说明omega_和omega_()具有同样的值,但是类型不同。不知道这个括号是否也是由于<tmp>类所引起的?

      1 Reply Last reply Reply Quote
      • bestucan
        bestucan 版主 副教授 last edited by

        名字里带_的的基本是类的私有变量,类外无法读取,我猜这个带()的是返回私有变量的函数,即给其他的函数一个读取私有变量的接口。

        所以在类空间内他俩是一个东西,类外不带括号无法调用。就解释了你见到的现象。:mianmo:

        滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

        异步沟通方式(《posting style》from wiki)(下载后打开):
        https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
        提问的智慧(github在gitee的镜像):
        https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

        X 1 Reply Last reply Reply Quote
        • X
          xpqiu 教授 @bestucan last edited by xpqiu

          @bestucan 然而很可惜你猜错了。omega_() 返回的是 omega_ 这个 volScalarField 类型的变量的 Internal 部分(也就是只有内部网格的值,不包含边界值),而且是带量纲。

          bestucan 吴 2 Replies Last reply Reply Quote
          • bestucan
            bestucan 版主 副教授 @xpqiu last edited by

            @xpqiu :jingya: :146: 来,举高高 :quwan:

            滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

            异步沟通方式(《posting style》from wiki)(下载后打开):
            https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
            提问的智慧(github在gitee的镜像):
            https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

            1 Reply Last reply Reply Quote
            • 吴
              吴优 @xpqiu last edited by 吴优

              @xpqiu 谢谢您的回复,我把 omega_ 换成omega_() ,报了类型不匹配的错误,看了一下错误提示确实omega_() 是Internal的,但是omega_() 的相关定义在哪里可以找到呢?我看这个类里面没有,是在父类中吗?还是定义在volScalarField中呢?我看到GeometricField里面有一个重载:

              inline const Internal& operator()() const;
              

              不知道实现的是不是就是这个返回Internal信息的功能

              X 1 Reply Last reply Reply Quote
              • X
                xpqiu 教授 @吴优 last edited by

                @吴优 对,是这个。

                1 Reply Last reply Reply Quote
                • First post
                  Last post

                CFD中文网 | 东岳流体 | 京ICP备15017992号-2