@@ -75,7 +75,8 @@ def remove_deleted(self, pset):
7575 # TODO v4: need to implement ParticleFile writing of deleted particles
7676 # if len(indices) > 0 and self.fieldset.particlefile is not None:
7777 # self.fieldset.particlefile.write(pset, None, indices=indices)
78- pset .remove_indices (indices )
78+ if len (indices ) > 0 :
79+ pset .remove_indices (indices )
7980
8081
8182class Kernel (BaseKernel ):
@@ -378,25 +379,24 @@ def evaluate_particle(self, p, endtime):
378379 dt :
379380 computational integration timestep
380381 """
382+ sign_dt = 1 if p .dt >= 0 else - 1
381383 while p .state in [StatusCode .Evaluate , StatusCode .Repeat ]:
382- pre_dt = p .dt
383-
384- sign_dt = np .sign (p .dt ).astype (int )
385- if sign_dt * (endtime - p .time_nextloop ) <= np .timedelta64 (0 , "ns" ):
384+ if sign_dt * (endtime - p .time_nextloop ) <= 0 :
386385 return p
387386
387+ pre_dt = p .dt
388388 # TODO implement below later again
389389 # try: # Use next_dt from AdvectionRK45 if it is set
390390 # if abs(endtime - p.time_nextloop) < abs(p.next_dt) - 1e-6:
391391 # p.next_dt = abs(endtime - p.time_nextloop) * sign_dt
392392 # except AttributeError:
393- if abs (endtime - p .time_nextloop ) <= abs ( p .dt ) :
394- p .dt = abs (endtime - p .time_nextloop ) * sign_dt
393+ if sign_dt * (endtime - p .time_nextloop ) <= p .dt :
394+ p .dt = sign_dt * (endtime - p .time_nextloop )
395395 res = self ._pyfunc (p , self ._fieldset , p .time_nextloop )
396396
397397 if res is None :
398398 if p .state == StatusCode .Success :
399- if sign_dt * (p .time - endtime ) > np . timedelta64 ( 0 , "ns" ) :
399+ if sign_dt * (p .time - endtime ) > 0 :
400400 p .state = StatusCode .Evaluate
401401 else :
402402 p .state = res
0 commit comments