粒子库的move函数
-
各位好
请教一个代码知识
如下是kinematicparcel.C文件中的move函数
想请教红框里面的代码的含义
(我的理解是红框里的代码可以使得move函数中可以使用parcelType&p相关的变量比如p.cell(),不知道对不对)
谢谢各位 -
@杨英狄 是的,但是如果想要照抄到别的地方的话 可能不一定好使~
建议不要研读过多的code,先实现你需要的功能即可,不然of是个无底深坑。。。 -
@星星星星晴 你好,想请教一下。我添加了一个函数,想在move里面调用,但是这个函数需要获取流场边界网格信息,所以变量里包括CloudType&owner 。但是,move函数里面没有这个变量。所以我需要模仿红框里面的代码,让我可以在move函数里面使用CloudType&owner。但是不知道该怎样模仿。不知道可否请教你一下。
谢谢! -
@杨英狄 你好,你是自己添加了一个函数在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()];
-
@星星星星晴 非常感谢!我是做了一个cloudfunction,类似于move里面调用的postface函数,我想让我的cloudfunction被调用,所以打算也放在move里面
-
@杨英狄 。。。我没理解你说的调用的地方
could.functions().postFace() 和 cloudfunction是俩概念
我建议你看看这个解释的调用流程。弄清楚是做一个cloud里的function 还是cloudfunction用作postmove
https://openfoamwiki.net/index.php/OpenFOAM_guide/UML/lagrangian -
@星星星星晴 好的谢谢!
-
@星星星星晴 你好,是这样的。我的根本目的是做一个新的CloudFunctionObjects,就像particleerosion或者particleTrap这种。
我发现particleTrap里面有postface函数。我注意到这个postface函数在kinematic.C文件里的move函数中被调用了。所以我就想把我的CloudFunctionObject里的could.functions().函数也加在move里面。(不太清楚particleTrap里面的postface函数与move函数里面调用的postface函数是不是一个东西)
非常感谢! -
@杨英狄 不好意思 我对这个方程不是很了解,可能之前有说错的地方。
但是我查了一下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];
-
@星星星星晴 非常感谢你的帮助!
-
@杨英狄 我简单看了一下 postPatch也是这样,
CloudFunctionObjectList.C 别忘了。
善用grep~我没做过你这种,可能你还有坑要跨过,先试着搭个架子,然后再往里面填东西。发现有问题咱们再说
-
@星星星星晴 太感谢了!