Skip to content

Commit fa34341

Browse files
Fixing time_interval bug in particlefile
1 parent 6be7500 commit fa34341

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

src/parcels/_core/particlefile.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,10 @@ def write(self, pset: ParticleSet, time, indices=None):
158158
pclass = pset._ptype
159159
time_interval = pset.fieldset.time_interval
160160
particle_data = pset._data
161-
time = timedelta_to_float(time - time_interval.left)
161+
if time_interval is None:
162+
time = timedelta_to_float(time)
163+
else:
164+
time = timedelta_to_float(time - time_interval.left)
162165
particle_data = _convert_particle_data_time_to_float_seconds(particle_data, time_interval)
163166

164167
self._write_particle_data(
@@ -309,7 +312,12 @@ def _convert_particle_data_time_to_float_seconds(particle_data, time_interval):
309312
#! Important that this is a shallow copy, so that updates to this propogate back to the original data
310313
particle_data = particle_data.copy()
311314

312-
particle_data["time"] = ((particle_data["time"] - time_interval.left) / np.timedelta64(1, "s")).astype(np.float64)
315+
if time_interval is None:
316+
particle_data["time"] = (particle_data["time"] / np.timedelta64(1, "s")).astype(np.float64)
317+
else:
318+
particle_data["time"] = ((particle_data["time"] - time_interval.left) / np.timedelta64(1, "s")).astype(
319+
np.float64
320+
)
313321
particle_data["dt"] = (particle_data["dt"] / np.timedelta64(1, "s")).astype(np.float64)
314322
return particle_data
315323

@@ -326,10 +334,11 @@ def _maybe_convert_time_dtype(dtype: np.dtype | _SAME_AS_FIELDSET_TIME_INTERVAL)
326334
def _get_calendar_and_units(time_interval: TimeInterval) -> dict[str, str]:
327335
calendar = None
328336
units = "seconds"
329-
if isinstance(time_interval.left, (np.datetime64, datetime)):
330-
calendar = "standard"
331-
elif isinstance(time_interval.left, cftime.datetime):
332-
calendar = time_interval.left.calendar
337+
if time_interval:
338+
if isinstance(time_interval.left, (np.datetime64, datetime)):
339+
calendar = "standard"
340+
elif isinstance(time_interval.left, cftime.datetime):
341+
calendar = time_interval.left.calendar
333342

334343
if calendar is not None:
335344
units += f" since {time_interval.left}"

src/parcels/_core/particleset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ def execute(
548548

549549
self._kernel.execute(self, endtime=next_time, dt=dt)
550550

551-
if next_output:
551+
if next_output is not None:
552552
if np.abs(next_time - next_output) < np.timedelta64(1000, "ns"):
553553
if output_file:
554554
output_file.write(self, next_output)

0 commit comments

Comments
 (0)