Skip to content

Commit 14b93c9

Browse files
committed
review feedback
1 parent 7fe211d commit 14b93c9

File tree

1 file changed

+10
-19
lines changed

1 file changed

+10
-19
lines changed

parcels/_interpolation.py

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ def _nearest_2d(ctx: InterpolationContext2D) -> float:
113113
return ctx.data[ctx.ti, yii, xii]
114114

115115

116-
def _unit_square_to_target(*, eta: float, xsi: float, data: np.ndarray, yi: int, xi: int) -> float:
117-
"""Interpolation on a unit square. See Delandmeter and Sebille 2019."""
116+
def _interp_on_unit_square(*, eta: float, xsi: float, data: np.ndarray, yi: int, xi: int) -> float:
117+
"""Interpolation on a unit square. See Delandmeter and Van Sebille (2019), 10.5194/gmd-12-3571-2019."""
118118
return (
119119
(1 - xsi) * (1 - eta) * data[yi, xi]
120120
+ xsi * (1 - eta) * data[yi, xi + 1]
@@ -128,13 +128,7 @@ def _unit_square_to_target(*, eta: float, xsi: float, data: np.ndarray, yi: int,
128128
@register_2d_interpolator("partialslip")
129129
@register_2d_interpolator("freeslip")
130130
def _linear_2d(ctx: InterpolationContext2D) -> float:
131-
xsi = ctx.xsi
132-
eta = ctx.eta
133-
data = ctx.data
134-
yi = ctx.yi
135-
xi = ctx.xi
136-
ti = ctx.ti
137-
val = _unit_square_to_target(eta=eta, xsi=xsi, data=data[ti, :, :], yi=yi, xi=xi)
131+
val = _interp_on_unit_square(eta=ctx.eta, xsi=ctx.xsi, data=ctx.data[ctx.ti, :, :], yi=ctx.yi, xi=ctx.xi)
138132
return val
139133

140134

@@ -167,7 +161,7 @@ def _linear_invdist_land_tracer_2d(ctx: InterpolationContext2D) -> float:
167161
w_sum += 1 / distance
168162
return val / w_sum
169163
else:
170-
val = _unit_square_to_target(eta=eta, xsi=xsi, data=data[ti, :, :], yi=yi, xi=xi)
164+
val = _interp_on_unit_square(eta=eta, xsi=xsi, data=data[ti, :, :], yi=yi, xi=xi)
171165
return val
172166

173167

@@ -221,23 +215,23 @@ def _linear_invdist_land_tracer_3d(ctx: InterpolationContext3D) -> float:
221215
return val / w_sum
222216
else:
223217
data = ctx.data[ctx.ti, ctx.zi, :, :]
224-
f0 = _unit_square_to_target(eta=ctx.eta, xsi=ctx.xsi, data=data, yi=ctx.yi, xi=ctx.xi)
218+
f0 = _interp_on_unit_square(eta=ctx.eta, xsi=ctx.xsi, data=data, yi=ctx.yi, xi=ctx.xi)
225219

226220
data = ctx.data[ctx.ti, ctx.zi + 1, :, :]
227-
f1 = _unit_square_to_target(eta=ctx.eta, xsi=ctx.xsi, data=data, yi=ctx.yi, xi=ctx.xi)
221+
f1 = _interp_on_unit_square(eta=ctx.eta, xsi=ctx.xsi, data=data, yi=ctx.yi, xi=ctx.xi)
228222

229223
return (1 - ctx.zeta) * f0 + ctx.zeta * f1
230224

231225

232226
def _get_3d_f0_f1(*, eta: float, xsi: float, data: np.ndarray, zi: int, yi: int, xi: int) -> tuple[float, float | None]:
233227
data_2d = data[zi, :, :]
234-
f0 = _unit_square_to_target(eta=eta, xsi=xsi, data=data_2d, yi=yi, xi=xi)
228+
f0 = _interp_on_unit_square(eta=eta, xsi=xsi, data=data_2d, yi=yi, xi=xi)
235229
try:
236230
data_2d = data[zi + 1, :, :]
237231
except IndexError:
238232
f1 = None # POP indexing at edge of domain
239233
else:
240-
f1 = _unit_square_to_target(eta=eta, xsi=xsi, data=data_2d, yi=yi, xi=xi)
234+
f1 = _interp_on_unit_square(eta=eta, xsi=xsi, data=data_2d, yi=yi, xi=xi)
241235

242236
return f0, f1
243237

@@ -259,14 +253,11 @@ def _z_layer_interp(
259253
@register_3d_interpolator("partialslip")
260254
@register_3d_interpolator("freeslip")
261255
def _linear_3d(ctx: InterpolationContext3D) -> float:
262-
zeta = ctx.zeta
263-
eta = ctx.eta
264-
xsi = ctx.xsi
265256
zdim = ctx.data.shape[1]
266257
data_3d = ctx.data[ctx.ti, :, :, :]
267-
f0, f1 = _get_3d_f0_f1(eta=eta, xsi=xsi, data=data_3d, zi=ctx.zi, yi=ctx.yi, xi=ctx.xi)
258+
f0, f1 = _get_3d_f0_f1(eta=ctx.eta, xsi=ctx.xsi, data=data_3d, zi=ctx.zi, yi=ctx.yi, xi=ctx.xi)
268259

269-
return _z_layer_interp(zeta=zeta, f0=f0, f1=f1, zi=ctx.zi, zdim=zdim, gridindexingtype=ctx.gridindexingtype)
260+
return _z_layer_interp(zeta=ctx.zeta, f0=f0, f1=f1, zi=ctx.zi, zdim=zdim, gridindexingtype=ctx.gridindexingtype)
270261

271262

272263
@register_3d_interpolator("bgrid_velocity")

0 commit comments

Comments
 (0)