pairCollision中,A和B分别指网格还是粒子?
-
// Loop over all Parcels in cell A (a) forAll(cellOccupancy[realCelli], a) { pA_ptr = cellOccupancy[realCelli][a]; forAll(dil[realCelli], interactingCells) { List<typename CloudType::parcelType*> cellBParcels = cellOccupancy[dil[realCelli][interactingCells]]; // Loop over all Parcels in cell B (b) forAll(cellBParcels, b) { pB_ptr = cellBParcels[b]; evaluatePair(*pA_ptr, *pB_ptr); } } // Loop over the other Parcels in cell A (aO) forAll(cellOccupancy[realCelli], aO) { pB_ptr = cellOccupancy[realCelli][aO]; // Do not double-evaluate, compare pointers, arbitrary // order if (pB_ptr > pA_ptr) { evaluatePair(*pA_ptr, *pB_ptr); } } }
上述一段code是来自paircollision的,原本一直一位A 和B 是分别表示两个parcel,但是看上面的意思是指代两个网格吗?希望有人能帮忙解释一下,谢谢。
-
@zhe 原来你是疑惑怎么从网格里提取 parcel 啊。
https://www.openfoam.com/documentation/guides/latest/api/PairCollision_8C_source.html
你放的代码是这个89行吧,84行创建了cellOccupancy,那个创建容积率的函数在多个模型下有同名的,我猜这里这个是
https://www.openfoam.com/documentation/guides/latest/api/KinematicCloudI_8H_source.html
这个的371行,这个函数就是判断是否存在,否则创建。就是这个函数buildCellOccupancy(),在
https://www.openfoam.com/documentation/guides/latest/api/KinematicCloud_8C_source.html
这里140行你给的代码里 pA_ptr, pB_ptr 都是通过 cellOccupancy 的返回值得到 parcel 的指针,就是 那个371行,如果存在就返回
return *cellOccupancyPtr_;而这个 cellOccupancyPtr_ 也有多个定义,在这里应该是这个
https://www.openfoam.com/documentation/guides/latest/api/KinematicCloud_8H_source.html
173行。173行的注释大概解释了cell 和parcel怎么联系起来的。
好了
模板继承用的太多,我不太熟悉这部分,同名函数定义太多,剩下的我也没招了 -
@bestucan 抱歉回复的晚了,已经很感谢您的解答了,帮我捋清了很多了。我按着您的这个思路走了一遍,大概明白了我之前给出的的确是A和B都是网格名称。而同时,在分别中也代表着其中包含的粒子a和b,也就是您说的也可以理解为A 和B 也是粒子。
我的理解是A 和B 是有相关的两个cells,而最后的
evaluatePair(*pA_ptr, *pB_ptr);
是建立两个网格之间(包括网格里所有粒子)的一种配对机制,不知道对不对?
// Loop over the other Parcels in cell A (aO) forAll(cellOccupancy[realCelli], aO) { pB_ptr = cellOccupancy[realCelli][aO]; // Do not double-evaluate, compare pointers, arbitrary // order if (pB_ptr > pA_ptr) { evaluatePair(*pA_ptr, *pB_ptr); } }
在之后的loop里,对于相同cell里的粒子相对配对,也就是说把一个粒子单拎出来a,然后其它的所有粒子相当于a0(而这个其实与之前B网格的指示相同而以)。这样理解不知道对不对?
最后一点儿避免两次被征用,所以有了一个对比。
知道您肯定也花时间翻了一遍了,实在是感谢!
如果有其他朋友一起讨论,感激不尽。