CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    粒子库的move函数

    OpenFOAM
    2
    12
    463
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 杨
      杨英狄 最后由 编辑

      各位好
      请教一个代码知识
      如下是kinematicparcel.C文件中的move函数
      微信截图_20220410185847.png
      想请教红框里面的代码的含义
      (我的理解是红框里的代码可以使得move函数中可以使用parcelType&p相关的变量比如p.cell(),不知道对不对)
      谢谢各位

      星 1 条回复 最后回复 回复 引用
      • 星
        星星星星晴 @杨英狄 最后由 编辑

        @杨英狄 是的,但是如果想要照抄到别的地方的话 可能不一定好使~
        建议不要研读过多的code,先实现你需要的功能即可,不然of是个无底深坑。。。

        m.sui20@foxmail.com

        杨 1 条回复 最后回复 回复 引用
        • 杨
          杨英狄 @星星星星晴 最后由 编辑

          @星星星星晴 你好,想请教一下。我添加了一个函数,想在move里面调用,但是这个函数需要获取流场边界网格信息,所以变量里包括CloudType&owner 。但是,move函数里面没有这个变量。所以我需要模仿红框里面的代码,让我可以在move函数里面使用CloudType&owner。但是不知道该怎样模仿。不知道可否请教你一下。
          谢谢!

          星 1 条回复 最后回复 回复 引用
          • 星
            星星星星晴 @杨英狄 最后由 编辑

            @杨英狄 你好,你是自己添加了一个函数在kinematicparcel.c中?类似cellValueSourceCorrection这个函数?希望问题不是出在定义这个函数。。
            不知道下面的能不能解决你的问题

            获取某cell的某个field的值
            
            const objectRegistry& obr = this->mesh();
            rhoc = obr.lookupObject<volScalarField> ("rho").internalField() [celli];
            
            获取cell体积
            const objectRegistry& obr = this->owner().mesh();
               	scalar Vcell = this->owner().mesh().V() [cellI];
            
            
            在hitpatch中有这个
               typename TrackCloudType::parcelType& p =
                   static_cast<typename TrackCloudType::parcelType&> (*this);
            
               const polyPatch& pp = p.mesh().boundaryMesh() [p.patch()];
            

            m.sui20@foxmail.com

            杨 1 条回复 最后回复 回复 引用
            • 杨
              杨英狄 @星星星星晴 最后由 编辑

              @星星星星晴 非常感谢!我是做了一个cloudfunction,类似于move里面调用的postface函数,我想让我的cloudfunction被调用,所以打算也放在move里面

              星 1 条回复 最后回复 回复 引用
              • 星
                星星星星晴 @杨英狄 最后由 编辑

                @杨英狄 。。。我没理解你说的调用的地方

                could.functions().postFace() 和 cloudfunction是俩概念

                我建议你看看这个解释的调用流程。弄清楚是做一个cloud里的function 还是cloudfunction用作postmove
                https://openfoamwiki.net/index.php/OpenFOAM_guide/UML/lagrangian

                m.sui20@foxmail.com

                杨 2 条回复 最后回复 回复 引用
                • 杨
                  杨英狄 @星星星星晴 最后由 编辑

                  @星星星星晴 好的谢谢!

                  1 条回复 最后回复 回复 引用
                  • 杨
                    杨英狄 @星星星星晴 最后由 编辑

                    @星星星星晴 你好,是这样的。我的根本目的是做一个新的CloudFunctionObjects,就像particleerosion或者particleTrap这种。
                    我发现particleTrap里面有postface函数。我注意到这个postface函数在kinematic.C文件里的move函数中被调用了。所以我就想把我的CloudFunctionObject里的could.functions().函数也加在move里面。(不太清楚particleTrap里面的postface函数与move函数里面调用的postface函数是不是一个东西)
                    非常感谢!

                    星 1 条回复 最后回复 回复 引用
                    • 星
                      星星星星晴 @杨英狄 最后由 编辑

                      @杨英狄 不好意思 我对这个方程不是很了解,可能之前有说错的地方。

                      但是我查了一下postface 这个函数就是定义在particletrap中,所以在kinematic.C中是通过这个方法调用的

                      cloud.functions().postFace(p, ttd.keepParticle);
                      

                      你可以试着先copy particletrap这个cloudfunction,
                      改个名particletrap2,方程改为postface2,
                      重新编译一下,然后你在kinematicparcel的move中调用

                      cloud.functions().postFace2(p, ttd.keepParticle);
                      

                      这俩code是可以用在cloudfunction中的

                      获取某cell的某个field的值
                      
                      const objectRegistry& obr = this->mesh();
                      rhoc = obr.lookupObject<volScalarField> ("rho").internalField() [celli];
                      
                      获取cell体积
                      const objectRegistry& obr = this->owner().mesh();
                         	scalar Vcell = this->owner().mesh().V() [cellI];
                      

                      m.sui20@foxmail.com

                      杨 1 条回复 最后回复 回复 引用
                      • 杨
                        杨英狄 @星星星星晴 最后由 编辑

                        @星星星星晴 非常感谢你的帮助!:xinxin:

                        星 1 条回复 最后回复 回复 引用
                        • 星
                          星星星星晴 @杨英狄 最后由 编辑

                          @杨英狄 我简单看了一下 postPatch也是这样,
                          CloudFunctionObjectList.C 别忘了。
                          善用grep~

                          我没做过你这种,可能你还有坑要跨过,先试着搭个架子,然后再往里面填东西。发现有问题咱们再说

                          m.sui20@foxmail.com

                          杨 1 条回复 最后回复 回复 引用
                          • 杨
                            杨英狄 @星星星星晴 最后由 编辑

                            @星星星星晴 太感谢了!:xinxin2:

                            1 条回复 最后回复 回复 引用
                            • First post
                              Last post