Skip to content

Commit ec5e9bd

Browse files
Adding tests on pset.execute in a for-loop
1 parent cee0954 commit ec5e9bd

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

parcels/particleset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -822,7 +822,7 @@ def execute(
822822
raise TypeError("The runtime must be a np.timedelta64 object")
823823

824824
else:
825-
start_time = self.fieldset.time_interval.left
825+
start_time = self._data["time_nextloop"].min().values
826826

827827
if runtime is None:
828828
if endtime is None:

tests/v4/test_particleset_execute.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,24 @@ def Delete(particle, fieldset, time): # pragma: no cover
4949
assert pset[0].time == fieldset.U.time[0].values + np.timedelta64(4, "s")
5050

5151

52+
@pytest.mark.parametrize("with_delete", [True, False])
53+
def test_pset_multi_execute(fieldset, with_delete, npart=10, n=5):
54+
pset = ParticleSet(fieldset, lon=np.linspace(0, 1, npart), lat=np.zeros(npart))
55+
56+
def AddLat(particle, fieldset, time): # pragma: no cover
57+
particle_dlat += 0.1 # noqa
58+
59+
k_add = pset.Kernel(AddLat)
60+
for _ in range(n + 1):
61+
pset.execute(k_add, runtime=np.timedelta64(1, "s"), dt=np.timedelta64(1, "s"))
62+
if with_delete:
63+
pset.remove_indices(len(pset) - 1)
64+
if with_delete:
65+
assert np.allclose(pset.lat, n * 0.1, atol=1e-12)
66+
else:
67+
assert np.allclose([p.lat - n * 0.1 for p in pset], np.zeros(npart), rtol=1e-12)
68+
69+
5270
@pytest.mark.parametrize("verbose_progress", [True, False])
5371
def test_uxstommelgyre_pset_execute(verbose_progress):
5472
ds = datasets_unstructured["stommel_gyre_delaunay"]

0 commit comments

Comments
 (0)