颗粒的全局ID输出问题?
-
因为用的是并行计算,颗粒的ID被输出到origProcId文件(计算颗粒的processor)和origId文件(颗粒在当前processor中的ID)。 比如我有4000个颗粒用4个processors计算,我的origProcId值是0-3,origId可能是0-999。这种情况下需要两个文件中的origProcId和origId值完全对应,才能找到指定的颗粒,对于大量颗粒时间步多的情况来说,效率有点低。
所以想请问一下各位老师们,怎么让openfoam运行的时候就输出一个全局的颗粒ID?按上述例子能得到一个颗粒的ID文件是0-3999,而不是4个0-999文件。
我注意到particle.H文件中有一段是:
//- Cumulative particle counter - used to provode unique ID static label particleCount_; //- Fraction of distance to tet centre to move a particle to // 'rescue' it from a tracking problem static const scalar trackingCorrectionTol; //- Fraction of the cell volume to use in determining tolerance values // for the denominator and numerator of lambda static const scalar lambdaDistanceToleranceCoeff; //- Minimum stepFraction tolerance static const scalar minStepFractionTol;
这个particleCount是不是我要的unique particle ID?请问怎么修改能使其输出?
先谢谢各位老师们了
-
楼主你这个问题解决了吗?
-
@fubianhanshu 并没有在openfoam中解决,不过可以在后处理中根据ID和processor来找到相应的颗粒,我现在就是这样做的
-
@zhangxc0223 我不清楚你怎么做的,不过我刚发现可以在paraview中可以显示粒子ID,随着时间步推移,好像每个粒子的ID号是不变的,这样就可以通过后处理输出某个固定ID的各个时间步的信息了,可以交流下