Skip to content

Commit 26ec76f

Browse files
Reducing number of support variables
As these may have a large memory overhead for big particlesets (since they sclae with `npart`)
1 parent 9cd1d8e commit 26ec76f

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

parcels/application_kernels/interpolation.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,24 +76,25 @@ def XLinear(
7676
xi_1 = np.clip(xi + 1, 0, data.shape[3] - 1)
7777
xi = np.repeat(np.column_stack([xi, xi_1]), 2 * (lenT) * (lenZ))
7878

79-
F = data.values[ti, zi, yi, xi].reshape(-1, lenT, lenZ, 4)
79+
corner_data = data.values[ti, zi, yi, xi].reshape(-1, lenT, lenZ, 4)
8080

8181
if lenT == 2:
82-
F_t0, F_t1 = F[:, 0, :, :], F[:, 1, :, :]
83-
tau_expanded = tau[:, np.newaxis, np.newaxis]
84-
F = F_t0 * (1 - tau_expanded) + F_t1 * tau_expanded
82+
tau = tau[:, np.newaxis, np.newaxis]
83+
corner_data = corner_data[:, 0, :, :] * (1 - tau) + corner_data[:, 1, :, :] * tau
8584
else:
86-
F = F[:, 0, :, :]
85+
corner_data = corner_data[:, 0, :, :]
8786

8887
if lenZ == 2:
89-
F_z0, F_z1 = F[:, 0, :], F[:, 1, :]
90-
zeta_expanded = zeta[:, np.newaxis]
91-
F = F_z0 * (1 - zeta_expanded) + F_z1 * zeta_expanded
88+
zeta = zeta[:, np.newaxis]
89+
corner_data = corner_data[:, 0, :] * (1 - zeta) + corner_data[:, 1, :] * zeta
9290
else:
93-
F = F[:, 0, :]
91+
corner_data = corner_data[:, 0, :]
9492

9593
value = (
96-
(1 - xsi) * (1 - eta) * F[:, 0] + xsi * (1 - eta) * F[:, 1] + (1 - xsi) * eta * F[:, 2] + xsi * eta * F[:, 3]
94+
(1 - xsi) * (1 - eta) * corner_data[:, 0]
95+
+ xsi * (1 - eta) * corner_data[:, 1]
96+
+ (1 - xsi) * eta * corner_data[:, 2]
97+
+ xsi * eta * corner_data[:, 3]
9798
)
9899
return value.compute() if isinstance(value, dask.Array) else value
99100

0 commit comments

Comments
 (0)