diff --git a/src/parcels/_core/particleset.py b/src/parcels/_core/particleset.py index 20c73f84b..d044e7edf 100644 --- a/src/parcels/_core/particleset.py +++ b/src/parcels/_core/particleset.py @@ -417,8 +417,14 @@ def execute( logger.info(f"Output files are stored in {output_file.path}") if verbose_progress: - pbar = tqdm(total=end_time - start_time, file=sys.stdout) - pbar.set_description("Integration time: " + str(start_time)) + pbar = tqdm( + total=end_time - start_time, + file=sys.stdout, + bar_format="{desc} {percentage:3.0f}%|{bar}| [{elapsed}<{remaining}, {rate_fmt}]", + ) + pbar.set_description_str( + "Integration time: " + str(float_to_datelike(start_time, self.fieldset.time_interval)) + ) next_output = None if output_file: @@ -445,7 +451,9 @@ def execute( next_output += outputdt * sign_dt if verbose_progress: - pbar.set_description("Integration time: " + str(float_to_datelike(time, self.fieldset.time_interval))) + pbar.set_description_str( + "Integration time: " + str(float_to_datelike(time, self.fieldset.time_interval)) + ) pbar.update(next_time - time) time = next_time diff --git a/src/parcels/_core/utils/time.py b/src/parcels/_core/utils/time.py index bdce7fc13..eee0fe164 100644 --- a/src/parcels/_core/utils/time.py +++ b/src/parcels/_core/utils/time.py @@ -207,9 +207,12 @@ def timedelta_to_float(dt: float | timedelta | np.timedelta64) -> float: return float(dt) -def float_to_datelike(dt: float, time_interval) -> np.datetime64 | np.timedelta64: +def float_to_datelike(dt: float, time_interval) -> np.datetime64 | np.timedelta64 | cftime.datetime: """Convert a float time (in seconds from the start of the time_interval) to a datetime (if time_interval is a datetime object) or timedelta (otherwise)""" if time_interval: - return np.timedelta64(int(dt), "s") + time_interval.left + result = np.timedelta64(int(dt), "s") + time_interval.left + if isinstance(result, cftime.datetime): + return result + return result.astype("datetime64[s]") else: return np.timedelta64(int(dt), "s")