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



  • 各位朋友们好!

    我现在正在研究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() 源代码的方法,也应该可以推广应用到查找网格单元的其他属性吧?(比如想查找单元中心的位置,单元的边长等等)

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


  • 教授

    @小考拉

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



  • @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:

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


  • 教授

    @小考拉

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

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

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

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



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


Log in to reply
 


CFD中文网 | 东岳流体学术 | 东岳流体商业 | 吉ICP备20003622号-1