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. CollidingCloud构造函数后面的 CloudType()是什么?

CollidingCloud构造函数后面的 CloudType()是什么?

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

    冒号是用于初始化的,可以搜到相关解释

    https://www.cnblogs.com/Allen-rg/p/11529949.html

    https://www.baidu.com/s?wd=c%2B%2B函数后的冒号

    滚来滚去……~(~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

    J 1 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 bestucan 最后由 编辑
    #3

    @bestucan 谢谢大佬,我知道冒号是初始化的意思,我想问的是这个CloudType是什么?是不是就是指的kinematicCloud?因为CollidingCloud是由kinematicCloud继承来的

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 Jasper 0 最后由 bestucan 编辑
    #4

    @jasper-0
    第75行是定义
    https://www.openfoam.com/documentation/guides/v2112/api/CollidingCloud_8H_source.html
    点那个类型有更详细的定义

    Untitled.png

    这是类型关系图
    https://www.openfoam.com/documentation/guides/v2112/api/classFoam_1_1CollidingCloud.html

    滚来滚去……~(~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

    J 2 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 bestucan 最后由 编辑
    #5

    @bestucan 好的谢谢您,我去看一下

    1 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 bestucan 最后由 编辑
    #6

    @bestucan 老师您好,我想请教一下kinematicCloud.H 里面的274行

    template<class TrackCloudType>
                 void solve
                 (
                     TrackCloudType& cloud,
                     typename parcelType::trackingData& td
                 );
    

    TrackCloudType& cloud,里面的cloud是在cloud.H里面定义的类,但是在kinematicCloud.C 里面的140行直接调用了kinematicCloud类的成员函数cloud.preEvolve(td)。这是为什么呢?还是说这里的cloud指的就是kinematicCloud?

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 Jasper 0 最后由 编辑
    #7

    @jasper-0

    这个 cloud 是一个 TrackCloudType 类的引用,

    这个 TrackCloudType 具体是什么,看调用 solve 函数的时候这里填的是什么类的引用,

    用 preEolve 没法判断,因为这是个模板函数,符合模板的类八成有共同的机构,要不编译也过不去。就是说,不只 kinematicCloud 有 preEvolve 这个函数。

    但是在kinematicCloud.C 里面的140行直接调用了kinematicCloud类的成员函数cloud.preEvolve(td)。

    cloud.preEvolve(td) 不是 kinematicCloud 的成员函数。

    cloud 是 TrackCloudType& 类型的变量,具体 TrackCloudType 取决于调用。

    preEvolve 是 cloud 的成员函数

    要想通过 preEolve 判断 cloud 的可能类型,可以直接搜这个函数
    Untitled.png

    或者看调用 solve 的时候,第一个参数填的具体是什么

    滚来滚去……~(~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

    J 2 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 bestucan 最后由 编辑
    #8

    @bestucan 感谢大佬的解答,非常详细。我主要的问题也是没有看到有模板参数的函数是在哪里调用的?例如solve函数的调用。我用的是DPMFoam,在DPMFoam.C里也没有看到调用,如果能看到调用函数就能知道TrackCloudType指的是什么了。大佬能否指点一下去哪里看solve函数的调用呢?

    bestucanB 1 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 bestucan 最后由 编辑
    #9

    @bestucan 刚看了一下CollidingCloud.C,引用了solve函数:

    template<class CloudType>
     void Foam::CollidingCloud<CloudType>::evolve()
     {
         if (this->solution().canEvolve())
         {
             typename parcelType::trackingData td(*this);
      
             this->solve(*this, td);
         }
     }
    

    我个人的理解是,这里的*this指针指的就是CollidingCloud,因此cloud.preEvolve就是CollidingCloud.preEvolve, 而preEvolve是KinematicCloud的public的成员函数,CollidingCloud是其衍生类,因此可以直接调用了preEvolve函数

    1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 Jasper 0 最后由 编辑
    #10

    @jasper-0

    这个命令可以在文件夹里搜多个文件

    grep -r 'solve' . 
    

    滚来滚去……~(~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

    J 1 条回复 最后回复
  • J 离线
    J 离线
    Jasper 0
    在 中回复了 bestucan 最后由 编辑
    #11

    @bestucan 好的,非常感谢大佬的指点!

    1 条回复 最后回复

  • 登录

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