@@ -30,6 +30,7 @@ function initialize!(search::NeighborListsNeighborhoodSearch,
3030 x:: AbstractMatrix , y:: AbstractMatrix )
3131 (; neighborhood_search, neighbor_lists) = search
3232
33+ # Initialize grid NHS
3334 initialize! (neighborhood_search, x, y)
3435
3536 initialize_neighbor_lists! (neighbor_lists, neighborhood_search, x, y)
@@ -40,9 +41,13 @@ function update!(search::NeighborListsNeighborhoodSearch,
4041 particles_moving = (true , true ))
4142 (; neighborhood_search, neighbor_lists) = search
4243
44+ # Update grid NHS
4345 update! (neighborhood_search, x, y, particles_moving = particles_moving)
4446
45- initialize_neighbor_lists! (neighbor_lists, neighborhood_search, x, y)
47+ # Skip update if both point sets are static
48+ if any (particles_moving)
49+ initialize_neighbor_lists! (neighbor_lists, neighborhood_search, x, y)
50+ end
4651end
4752
4853function initialize_neighbor_lists! (neighbor_lists, neighborhood_search, x, y)
@@ -53,15 +58,15 @@ function initialize_neighbor_lists!(neighbor_lists, neighborhood_search, x, y)
5358 neighbor_lists[i] = Int[]
5459 end
5560
56- # Compute neighbor lists
61+ # Fill neighbor lists
5762 for_particle_neighbor (x, y, neighborhood_search) do particle, neighbor, _, _
5863 push! (neighbor_lists[particle], neighbor)
5964 end
6065end
6166
6267@inline function foreach_neighbor (f, system_coords, neighbor_system_coords,
6368 neighborhood_search:: NeighborListsNeighborhoodSearch ,
64- particle, search_radius = nothing )
69+ particle; search_radius = nothing )
6570 (; periodic_box, neighbor_lists) = neighborhood_search
6671 (; search_radius) = neighborhood_search. neighborhood_search
6772
0 commit comments