Particle simulation implementation using primitives and a neighbor list