Skip to content

Commit 42770dc

Browse files
Use the field.igrid in the selection of which ei in unravel_index
1 parent 56caa14 commit 42770dc

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

parcels/_index_search.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def _search_indices_rectilinear(
225225

226226
def _search_indices_curvilinear(field: Field, time, z, y, x, ti=-1, particle=None, search2D=False):
227227
if particle:
228-
zi, yi, xi = field.unravel_index(particle.ei[field.igrid])
228+
zi, yi, xi = field.unravel_index(particle.ei)
229229
else:
230230
xi = int(field.grid.xdim / 2) - 1
231231
yi = int(field.grid.ydim / 2) - 1

parcels/field.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1349,10 +1349,12 @@ def unravel_index(self, ei):
13491349
xi : int
13501350
The z index.
13511351
"""
1352-
zi = ei // (self.grid.xdim * self.grid.ydim)
1353-
ei = ei % (self.grid.xdim * self.grid.ydim)
1354-
yi = ei // self.grid.xdim
1355-
xi = ei % self.grid.xdim
1352+
1353+
_ei = ei[self.igrid]
1354+
zi = _ei // (self.grid.xdim * self.grid.ydim)
1355+
_ei = _ei % (self.grid.xdim * self.grid.ydim)
1356+
yi = _ei // self.grid.xdim
1357+
xi = _ei % self.grid.xdim
13561358
return zi, yi, xi
13571359

13581360

tests/test_grids.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,11 @@ def sampleTemp(particle, fieldset, time): # pragma: no cover
9292
# check if particle xi and yi are different for the two grids
9393
# xi check from unraveled index
9494
assert np.all(
95-
[fieldset.U.unravel_index(pset[i].ei)[2][0] != fieldset.U.unravel_index(pset[i].ei)[2][1] for i in range(3)]
95+
[fieldset.U.unravel_index(pset[i].ei)[2] != fieldset.V.unravel_index(pset[i].ei)[2] for i in range(3)]
9696
)
9797
# yi check from unraveled index
9898
assert np.all(
99-
[fieldset.U.unravel_index(pset[i].ei)[1][0] != fieldset.U.unravel_index(pset[i].ei)[1][1] for i in range(3)]
99+
[fieldset.U.unravel_index(pset[i].ei)[1] != fieldset.V.unravel_index(pset[i].ei)[1] for i in range(3)]
100100
)
101101
# advect without updating temperature to test particle deletion
102102
pset.remove_indices(np.array([1]))

tests/test_particlefile.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,9 @@ def Get_XiYi(particle, fieldset, time): # pragma: no cover
273273
and that the first outputted value is zero.
274274
Be careful when using multiple grids, as the index may be different for the grids.
275275
"""
276-
particle.pxi0 = fieldset.U.unravel_index(particle.ei[0])[2]
277-
particle.pxi1 = fieldset.U.unravel_index(particle.ei[1])[2]
278-
particle.pyi = fieldset.U.unravel_index(particle.ei[0])[1]
276+
particle.pxi0 = fieldset.U.unravel_index(particle.ei)[2]
277+
particle.pxi1 = fieldset.P.unravel_index(particle.ei)[2]
278+
particle.pyi = fieldset.U.unravel_index(particle.ei)[1]
279279

280280
def SampleP(particle, fieldset, time): # pragma: no cover
281281
if time > 5 * 3600:

0 commit comments

Comments
 (0)