@@ -311,7 +311,8 @@ def get_shrinkwrap_grid(
311311 slab = slab [raster_surf_index ]
312312
313313 starting_grid , faces = _get_starting_grid (slab , precision = precision )
314- grid_positions = starting_grid .positions
314+ # grid_positions = starting_grid.positions
315+ grid_positions = starting_grid .arrays ['wrapped_positions' ]
315316 large_slab = get_large_atoms (slab )
316317 slab_positions = large_slab .positions
317318
@@ -328,13 +329,17 @@ def get_shrinkwrap_grid(
328329 grid_positions [:, 2 ] <= 0
329330 ).all ():
330331 break
332+ new_grid_positions = starting_grid .positions
333+ new_grid_positions [:,2 ] = grid_positions [:,2 ]
331334
332335 grid = Atoms (
333336 [marker for _ in grid_positions ],
334- grid_positions ,
337+ new_grid_positions ,
335338 pbc = [True , True , True ],
336339 cell = slab .cell ,
337340 )
341+ grid .arrays ['wrapped_positions' ] = grid_positions
342+
338343 grid = grid [[atom .index for atom in grid if atom .position [2 ] > 0 ]]
339344
340345 return grid , faces
@@ -356,7 +361,8 @@ def shrinkwrap_surface(
356361 grid_shrinkwrapped , _ = get_shrinkwrap_grid (
357362 slab , precision , touch_sphere_size = touch_sphere_size - 0.2
358363 )
359- grid_positions = grid_shrinkwrapped .positions
364+ grid_positions = grid_shrinkwrapped .arrays ['wrapped_positions' ]
365+ # grid_positions = grid_shrinkwrapped.positions
360366 slab_positions = slab .positions
361367
362368 distances_to_grid = cdist (slab_positions , grid_positions ).min (axis = 1 )
@@ -1334,6 +1340,11 @@ def max_cell_range(cell):
13341340 positions
13351341 )
13361342
1343+ grid .cell = atoms .cell
1344+ grid_copy = grid .copy ()
1345+ grid_copy .wrap ()
1346+ grid .arrays ['wrapped_positions' ] = grid_copy .positions
1347+
13371348 # Map vertices to 2D grid indices for face creation
13381349 nx , ny = len (x_coords ), len (y_coords )
13391350 faces = []
0 commit comments