In some special cases you can save quite a bit of performance on collision if you can constrain your particles to move in a single axis. I’ve tried this on tank tracks and basically use just a single sphere check (on each sub-step before verlet iteration) to know the “boundaries” where particle can be, then on internal verlet iterations I don’t need to re-calculate collision as boundary won’t change till the next sub-step.