@@ -162,7 +162,7 @@ def AddDt(particles, fieldset): # pragma: no cover
162162 pset = ParticleSet (fieldset , pclass = pclass , lon = 0 , lat = 0 )
163163 pset .update_dt_dtype (dt .dtype )
164164 pset .execute (AddDt , runtime = dt * 10 , dt = dt )
165- np .testing .assert_allclose (pset [0 ].added_dt , 10 .0 * dt / np .timedelta64 (1 , "s" ), atol = 1e-5 )
165+ np .testing .assert_allclose (pset [0 ].added_dt , 11 .0 * dt / np .timedelta64 (1 , "s" ), atol = 1e-5 )
166166
167167
168168def test_pset_execute_subsecond_dt_error (fieldset ):
@@ -227,34 +227,35 @@ def test_execution_endtime(fieldset, starttime, endtime, dt):
227227 dt = np .timedelta64 (dt , "s" )
228228 pset = ParticleSet (fieldset , time = starttime , lon = 0 , lat = 0 )
229229 pset .execute (DoNothing , endtime = endtime , dt = dt )
230- assert abs (pset .time_nextloop - endtime ) < np .timedelta64 (1 , "ms" )
230+ assert abs (pset .time - endtime ) < np .timedelta64 (1 , "ms" )
231231
232232
233233def test_dont_run_particles_outside_starttime (fieldset ):
234234 # Test forward in time (note third particle is outside endtime)
235235 start_times = [fieldset .time_interval .left + np .timedelta64 (t , "s" ) for t in [0 , 2 , 10 ]]
236236 endtime = fieldset .time_interval .left + np .timedelta64 (8 , "s" )
237+ dt = np .timedelta64 (1 , "s" )
237238
238239 def AddLon (particles , fieldset ): # pragma: no cover
239240 particles .lon += 1
240241
241242 pset = ParticleSet (fieldset , lon = np .zeros (len (start_times )), lat = np .zeros (len (start_times )), time = start_times )
242- pset .execute (AddLon , dt = np . timedelta64 ( 1 , "s" ) , endtime = endtime )
243+ pset .execute (AddLon , dt = dt , endtime = endtime )
243244
244- np .testing .assert_array_equal (pset .lon , [8 , 6 , 0 ])
245- assert pset .time_nextloop [0 :1 ] == endtime
246- assert pset .time_nextloop [2 ] == start_times [2 ] # this particle has not been executed
245+ np .testing .assert_array_equal (pset .lon , [9 , 7 , 0 ])
246+ assert pset .time [0 :1 ] == endtime
247+ assert pset .time [2 ] == start_times [2 ] - dt # this particle has not been executed # TODO check why -dt is needed
247248
248249 # Test backward in time (note third particle is outside endtime)
249250 start_times = [fieldset .time_interval .right - np .timedelta64 (t , "s" ) for t in [0 , 2 , 10 ]]
250251 endtime = fieldset .time_interval .right - np .timedelta64 (8 , "s" )
251252
252253 pset = ParticleSet (fieldset , lon = np .zeros (len (start_times )), lat = np .zeros (len (start_times )), time = start_times )
253- pset .execute (AddLon , dt = - np . timedelta64 ( 1 , "s" ) , endtime = endtime )
254+ pset .execute (AddLon , dt = - dt , endtime = endtime )
254255
255- np .testing .assert_array_equal (pset .lon , [8 , 6 , 0 ])
256- assert pset .time_nextloop [0 :1 ] == endtime
257- assert pset .time_nextloop [2 ] == start_times [2 ] # this particle has not been executed
256+ np .testing .assert_array_equal (pset .lon , [9 , 7 , 0 ])
257+ assert pset .time [0 :1 ] == endtime
258+ assert pset .time [2 ] == start_times [2 ] + dt # this particle has not been executed
258259
259260
260261def test_some_particles_throw_outofbounds (zonal_flow_fieldset ):
@@ -336,7 +337,7 @@ def MoveLeft(particles, fieldset): # pragma: no cover
336337 lon = np .linspace (0.05 , 6.95 , npart )
337338 lat = np .linspace (1 , 0 , npart )
338339 pset = ParticleSet (fieldset , lon = lon , lat = lat )
339- pset .execute ([MoveRight , MoveLeft ], runtime = np .timedelta64 (61 , "s" ), dt = np .timedelta64 (1 , "s" ))
340+ pset .execute ([MoveRight , MoveLeft ], runtime = np .timedelta64 (60 , "s" ), dt = np .timedelta64 (1 , "s" ))
340341 assert len (pset ) == npart
341342 np .testing .assert_allclose (pset .lon , [6.05 , 5.95 ], rtol = 1e-5 )
342343 np .testing .assert_allclose (pset .lat , lat , rtol = 1e-5 )
@@ -354,7 +355,7 @@ def test_execution_runtime(fieldset, starttime, runtime, dt, npart):
354355 dt = np .timedelta64 (dt , "s" )
355356 pset = ParticleSet (fieldset , time = starttime , lon = np .zeros (npart ), lat = np .zeros (npart ))
356357 pset .execute (DoNothing , runtime = runtime , dt = dt )
357- assert all ([abs (p .time_nextloop - starttime - runtime * sign_dt ) < np .timedelta64 (1 , "ms" ) for p in pset ])
358+ assert all ([abs (p .time - starttime - runtime * sign_dt ) < np .timedelta64 (1 , "ms" ) for p in pset ])
358359
359360
360361def test_changing_dt_in_kernel (fieldset ):
@@ -363,9 +364,9 @@ def KernelCounter(particles, fieldset): # pragma: no cover
363364
364365 pset = ParticleSet (fieldset , lon = np .zeros (1 ), lat = np .zeros (1 ))
365366 pset .execute (KernelCounter , dt = np .timedelta64 (2 , "s" ), runtime = np .timedelta64 (5 , "s" ))
366- assert pset .lon == 3
367- print (pset .dt )
367+ assert pset .lon == 4
368368 assert pset .dt == np .timedelta64 (2 , "s" )
369+ assert pset .time == fieldset .time_interval .left + np .timedelta64 (5 , "s" )
369370
370371
371372@pytest .mark .parametrize ("npart" , [1 , 100 ])
0 commit comments