@@ -116,17 +116,21 @@ def __init__(
116116 depth = convert_to_flat_array (depth )
117117 assert lon .size == lat .size and lon .size == depth .size , "lon, lat, depth don't all have the same lenghts"
118118
119- time = convert_to_flat_array (time )
120- time = np .repeat (time , lon .size ) if time .size == 1 else time
119+ if time is not None :
120+ time = convert_to_flat_array (time )
121+ time = np .repeat (time , lon .size ) if time .size == 1 else time
122+
123+ if time .size > 0 and type (time [0 ]) in [np .datetime64 , np .timedelta64 ]:
124+ pass # already in the right format
125+ elif time .size > 0 and type (time [0 ]) in [datetime , date ]:
126+ time = np .array ([np .datetime64 (t ) for t in time ])
127+ elif time .size > 0 and type (time [0 ]) in [timedelta ]:
128+ time = np .array ([np .timedelta64 (t ) for t in time ])
129+ else :
130+ raise NotImplementedError ("particle time must be a datetime, timedelta, or date object" )
121131
122- if time .size > 0 and type (time [0 ]) in [np .datetime64 , np .timedelta64 ]:
123- pass # already in the right format
124- elif time .size > 0 and type (time [0 ]) in [datetime , date ]:
125- time = np .array ([np .datetime64 (t ) for t in time ])
126- else :
127- raise NotImplementedError ("particle time must be a datetime or date object" )
132+ time = np .array ([self .time_origin .reltime (t ) if _convert_to_reltime (t ) else t for t in time ])
128133
129- time = np .array ([self .time_origin .reltime (t ) if _convert_to_reltime (t ) else t for t in time ])
130134 assert lon .size == time .size , "time and positions (lon, lat, depth) do not have the same lengths."
131135 if fieldset .time_interval :
132136 _warn_particle_times_outside_fieldset_time_bounds (time , fieldset .time_interval )
@@ -153,7 +157,7 @@ def __init__(
153157 time = time ,
154158 lonlatdepth_dtype = lonlatdepth_dtype ,
155159 pid_orig = pid_orig ,
156- ngrid = fieldset .gridset_size ,
160+ ngrid = len ( fieldset .gridset ) ,
157161 ** kwargs ,
158162 )
159163
0 commit comments