function initial_particle_grid_pos(i, j; grid_box_width, l) dim1_pos(x) = (x - 0.5) * grid_box_width - l return SVector(dim1_pos(i), dim1_pos(j)) end function generate_particles(grid_n, grid_box_width, l) particles = Vector{Particle}(undef, grid_n^2) particle_pos_in_grid_dim(i) = (i - 0.5) * grid_box_width - l id = 1 for i in 1:grid_n for j in 1:grid_n particles[id] = Particle(; id=id, c=initial_particle_grid_pos(i, j; grid_box_width=grid_box_width, l=l), φ=rand(Uniform(-π, π)), ) id += 1 end end return particles end