Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 关于omega_和omega_()中的括号

关于omega_和omega_()中的括号

已定时 已固定 已锁定 已移动 OpenFOAM
10 帖子 5 发布者 5.6k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 吴 离线
    吴 离线
    吴优
    写于 最后由 吴优 编辑
    #1

    各位好!
    我看到了东岳老师之前在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 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    写于 最后由 编辑
    #2

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

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

    X 1 条回复 最后回复
  • X 在线
    X 在线
    xpqiu 超神
    在 中回复了 bestucan 最后由 xpqiu 编辑
    #3

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

    bestucanB 吴 2 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 xpqiu 最后由 编辑
    #4

    @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

    1 条回复 最后回复
  • 吴 离线
    吴 离线
    吴优
    在 中回复了 xpqiu 最后由 吴优 编辑
    #5

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

    inline const Internal& operator()() const;
    

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

    X 1 条回复 最后回复
  • X 在线
    X 在线
    xpqiu 超神
    在 中回复了 吴优 最后由 编辑
    #6

    @吴优 对,是这个。

    1 条回复 最后回复
  • B 离线
    B 离线
    biaowai
    写于 最后由 编辑
    #7

    受益匪浅呀

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #8

    楼主 @吴优 最后登录是2024年了,不知道还在CFD不。我记得当时应该是北航的博士。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    吴 1 条回复 最后回复
  • 吴 离线
    吴 离线
    吴优
    在 中回复了 李东岳 最后由 编辑
    #9

    @李东岳 东岳老师还记得我哈哈,我现在已经毕业了,现在虽然还在搞相关工作但不是专门做算法的,这几年搞的方向也比较杂,但主要还是围绕openfoam做流固耦合相关的

    李东岳李 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 吴优 最后由 编辑
    #10

    @吴优 每年都有人离开,每年也都有新人进来。春去秋来。年复一年。马上过年了,祝你新的一年更好吧!老铁。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]