@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网格的指示相同而以)。这样理解不知道对不对?
最后一点儿避免两次被征用,所以有了一个对比。
知道您肯定也花时间翻了一遍了,实在是感谢!
如果有其他朋友一起讨论,感激不尽。