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. 如何找到mesh_.nCells()的源文件具体位置?

如何找到mesh_.nCells()的源文件具体位置?

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

    各位朋友们好!

    我现在正在研究lagrangian库中的代码,参考网上的教程进行一些二次开发,其中有些设置流场初始值 或者 调用某些网格单元 中心、边长的代码自己不太懂。(例如: mesh_.nCells(), mesh_nCells().size()等)

    本着溯源的目的,目前自己采取的方法是在lagrangian库下面 调用搜索命令 grep -R 'mesh_.nCells() ./ 查找对应的文件,例如搜索到:

    ./intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
    

    然后在doxygen上查找对应文件的源代码(链接:https://cpp.openfoam.org/v3/a06411_source.html),

    可以发现KinematicCloud.C中mesh_.nCells()的位置 ,但在这里却没有对应的链接 来解释mesh_.nCells()的含义(见下图)

    1611978281(1).png

    请问我如何找到真正定义mesh_n.Cells() 的源文件的位置呢?我想查看一下nCells()函数的具体功能

    我感觉这个找mesh_n.Cells() 源代码的方法,也应该可以推广应用到查找网格单元的其他属性吧?(比如想查找单元中心的位置,单元的边长等等)

    希望各位前辈 朋友们能够指点一下

    X 1 条回复 最后回复
  • X 离线
    X 离线
    xpqiu 超神
    在 中回复了 小考拉 最后由 编辑
    #2

    @小考拉

    在这里: https://cpp.openfoam.org/v3/a01955.html
    mesh_ 只是一个对象的名字,所以你直接搜 mesh_.nCells() 就算能搜出来内容,也只是调用函数的地方,而不是定义函数的地方。你首先得需要知道 mesh_ 是哪个类的对象,比如,通常情况下 mesh_ 是对 fvMesh 的对象,所以你需要去搜的是 fvMesh 这个类的接口,然后,去找这个类及其父类们的成员函数,这样就能找到了。

    小 1 条回复 最后回复
  • 小 离线
    小 离线
    小考拉
    在 中回复了 xpqiu 最后由 编辑
    #3

    @xpqiu 非常感谢邱老师的热心指点!:xinxin:

    根据邱老师的指点,我自己梳理了一下思路:

    1.找到对象mesh_的类fvMesh,fvMesh类具体介绍:https://cpp.openfoam.org/v3/a08664_source.html ,可以发现fvMesh类继承了primitiveMesh这个类,necll() 函数是在primitiveMesh类中定义的。
    1611992759(1).png

    2.查找primitiveMesh类,发现了成员函数nCell(),这样就可以在primitiveMesh.H文件、primitiveMeshI.H文件查看具体定义了
    1611993165(1).png

    但上述这个过程,我目前存在一个问题,在fvMesh.H中 fvMesh类 调用 基类primitiveMesh成员函数nCell() 的接口 是 哪几行代码呢?(fvMesh.H文件源代码链接: https://cpp.openfoam.org/v3/a05817_source.html)

    我自己对老师说的 “搜索fvMesh这个类的接口” 这句话 不太理解

    同时,结合我自己初学的一些C++知识,fvMesh类的接口应该是 留给fvMesh类的子类 调用的,这里我要找的应该是fvMesh类的某个基类(即primitiveMesh),总感觉有点矛盾:mihu:

    麻烦老师能否再指点一下?谢谢

    X 1 条回复 最后回复
  • X 离线
    X 离线
    xpqiu 超神
    在 中回复了 小考拉 最后由 xpqiu 编辑
    #4

    @小考拉

    在fvMesh.H中 fvMesh类 调用 基类primitiveMesh成员函数nCell() 的接口 是 哪几行代码呢?

    换一种说法,不用接口之类这样容易混淆的概念。简单地说,C++里面类的成员函数是可以继承的。先只说公有的成员函数,父类的公有成员函数可以被子类的对象调用,比如 nCells 这个函数,是 primitiveMesh 类的公有成员函数,所以这个函数可以给其子类的对象来调用。fvMesh 是 primitiveMesh 的一个子类,所以,mesh_ 作为 fvMesh 类的对象,可以调用 nCells 这个函数。
    而不是说fvMesh.H 里面需要怎么调用 “基类primitiveMesh成员函数nCell() 的接口”。

    fvMesh类的接口应该是 留给fvMesh类的子类 调用的,这里我要找的应该是fvMesh类的某个基类(即primitiveMesh),总感觉有点矛盾

    这个你说得对,我上面用接口这个概念的时候太随意了,所以我们就直接说成员函数好了。

    小 1 条回复 最后回复
  • 小 离线
    小 离线
    小考拉
    在 中回复了 xpqiu 最后由 编辑
    #5

    @xpqiu 谢谢邱老师的热心指点!我明白了!再次感谢:xinxin:

    1 条回复 最后回复

  • 登录

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