Skip to content

Commit 365046f

Browse files
committed
Delete old 3d interpolator
1 parent ba1bc6c commit 365046f

File tree

3 files changed

+2
-79
lines changed

3 files changed

+2
-79
lines changed

parcels/_interpolation.py

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import numpy as np
55

6-
from parcels._typing import GridIndexingType, InterpMethodOption
6+
from parcels._typing import GridIndexingType
77

88

99
@dataclass
@@ -73,7 +73,6 @@ class InterpolationContext3D:
7373
yi: int
7474
xi: int
7575
gridindexingtype: GridIndexingType #! Needed in 2d as well??
76-
interp_method: InterpMethodOption # TODO: Remove during refactoring
7776

7877

7978
_interpolator_registry_2d: dict[str, Callable[[InterpolationContext2D], float]] = {}
@@ -248,37 +247,6 @@ def z_layer_interp(*, zeta: float, f0: float, f1: float, zi: int, zdim: int, gri
248247
return (1 - zeta) * f0 + zeta * f1
249248

250249

251-
@register_3d_interpolator("linear")
252-
@register_3d_interpolator("bgrid_velocity")
253-
@register_3d_interpolator("bgrid_w_velocity")
254-
@register_3d_interpolator("partialslip")
255-
@register_3d_interpolator("freeslip")
256-
def _linear_3d_old(ctx: InterpolationContext3D) -> float:
257-
zeta = ctx.zeta
258-
eta = ctx.eta
259-
xsi = ctx.xsi
260-
zdim = ctx.data.shape[1]
261-
if ctx.interp_method == "bgrid_velocity":
262-
if ctx.gridindexingtype == "mom5":
263-
zeta = 1.0
264-
else:
265-
zeta = 0.0
266-
elif ctx.interp_method == "bgrid_w_velocity":
267-
eta = 1.0
268-
xsi = 1.0
269-
data_3d = ctx.data[ctx.ti, :, :, :]
270-
f0, f1 = get_3d_f0_f1(eta=eta, xsi=xsi, data=data_3d, zi=ctx.zi, yi=ctx.yi, xi=ctx.xi)
271-
272-
if ctx.gridindexingtype == "pop" and ctx.zi >= zdim - 2:
273-
# Since POP is indexed at cell top, allow linear interpolation of W to zero in lowest cell
274-
return (1 - zeta) * f0
275-
if ctx.interp_method == "bgrid_w_velocity" and ctx.gridindexingtype == "mom5" and ctx.zi == -1:
276-
# Since MOM5 is indexed at cell bottom, allow linear interpolation of W to zero in uppermost cell
277-
return zeta * f1
278-
else:
279-
return (1 - zeta) * f0 + zeta * f1
280-
281-
282250
@register_3d_interpolator("linear")
283251
@register_3d_interpolator("partialslip")
284252
@register_3d_interpolator("freeslip")

parcels/field.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1258,9 +1258,7 @@ def interpolator3D(self, *_):
12581258
def _interpolator3D(self, ti, z, y, x, time, particle=None):
12591259
"""Impelement 3D interpolation with coordinate transformations as seen in Delandmeter, P. and van Sebille, E (2019)."""
12601260
(zeta, eta, xsi, zi, yi, xi) = self._search_indices(time, z, y, x, ti, particle=particle)
1261-
ctx = InterpolationContext3D(
1262-
self.data, zeta, eta, xsi, ti, zi, yi, xi, self.gridindexingtype, self.interp_method
1263-
)
1261+
ctx = InterpolationContext3D(self.data, zeta, eta, xsi, ti, zi, yi, xi, self.gridindexingtype)
12641262

12651263
try:
12661264
f = get_3d_interpolator_registry()[self.interp_method]

tests/test_interpolation.py

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -96,49 +96,6 @@ def test_3d(self, data_3d, func, zeta, eta, xsi, expected):
9696
assert func(ctx) == expected
9797

9898

99-
@pytest.mark.parametrize("zeta", np.linspace(0, 1, 5))
100-
@pytest.mark.parametrize("eta", np.linspace(0, 1, 5))
101-
@pytest.mark.parametrize("xsi", np.linspace(0, 1, 5))
102-
@pytest.mark.parametrize(
103-
"interp_method",
104-
[
105-
"linear",
106-
"bgrid_velocity",
107-
"bgrid_w_velocity",
108-
"partialslip",
109-
"freeslip",
110-
"linear_invdist_land_tracer",
111-
"bgrid_tracer",
112-
"cgrid_tracer",
113-
],
114-
)
115-
@pytest.mark.parametrize(
116-
"gridindexingtype",
117-
[
118-
"mom5",
119-
"pop",
120-
],
121-
)
122-
def test_interpolation_3d_refactor(data_3d, zeta, eta, xsi, interp_method, gridindexingtype):
123-
# fmt: off
124-
f_old, f_new = {
125-
"linear": (interpolation._linear_3d_old, interpolation._linear_3d),
126-
"bgrid_velocity": (interpolation._linear_3d_old, interpolation._linear_3d_bgrid_velocity),
127-
"bgrid_w_velocity": (interpolation._linear_3d_old, interpolation._linear_3d_old),
128-
"partialslip": (interpolation._linear_3d_old, interpolation._linear_3d),
129-
"freeslip": (interpolation._linear_3d_old, interpolation._linear_3d),
130-
"linear_invdist_land_tracer": (interpolation._linear_invdist_land_tracer_3d, interpolation._linear_invdist_land_tracer_3d),
131-
"bgrid_tracer": (interpolation._tracer_3d, interpolation._tracer_3d),
132-
"cgrid_tracer": (interpolation._tracer_3d, interpolation._tracer_3d),
133-
}[interp_method]
134-
# fmt: on
135-
136-
ti, zi, yi, xi = 1, 1, 1, 1
137-
138-
ctx = interpolation.InterpolationContext3D(data_3d, zeta, eta, xsi, ti, zi, yi, xi, gridindexingtype, interp_method)
139-
assert np.isclose(f_old(ctx), f_new(ctx))
140-
141-
14299
@pytest.mark.usefixtures("tmp_interpolator_registry")
143100
def test_full_depth_provided_to_interpolators():
144101
"""The full depth needs to be provided to the interpolation schemes as some interpolators

0 commit comments

Comments
 (0)