这个东西是比较简单直接的
第一 你的init的用法不对 因为你获取的指针是Injection* 所以现在他还没有指向到Particle指针里面 Injection里面调用Particle*的方式是 loop(p,I->p) 注意如果是瞬态的话 是loop(p,I->p_init);
第二 有更简单的方式 注意Init的执行时间是比较间接的 你未必真正能够完全做对
更直接的方式是直接编写一个inj文件来描述颗粒的位置信息
见下图的示例

最后的31500颗粒的堆积结果见图

希望有帮助 这些都是很基础的DPM UDF开发的内容