@@ -141,23 +141,26 @@ def get_seaice_drift(self, **kwargs):
141141 grid = kwargs ['grid' ]
142142 obs_x = kwargs ['x' ]
143143 obs_y = kwargs ['y' ]
144+ obs_t = kwargs ['t' ]
144145 model = kwargs ['model' ]
145146 model .grid .set_destination_grid (grid )
147+ drift_units = self .variables ['seaice_drift' ]['units' ]
146148
147149 ##just return model variable seaice_velocity_daily snapshot, convert to km/day units
148- rec = kwargs .copy ()
149- drift_units = self .variables ['seaice_drift' ]['units' ]
150- try :
151- ##try to obtain seaice velocity from iced files
152- model_si_velocity = model .read_var (** {** kwargs , 'name' :'seaice_velocity' , 'units' :drift_units })
153- except FileNotFoundError :
154- ##if not available, try to get from iceh files
155- model_si_velocity = model .read_var (** {** kwargs , 'name' :'seaice_velocity_daily' , 'units' :drift_units })
156- grid_si_velocity = model .grid .convert (model_si_velocity , is_vector = True )
157-
158- ##find obs location velocity
159- u = grid .interp (grid_si_velocity [0 ,...], obs_x , obs_y )
160- v = grid .interp (grid_si_velocity [1 ,...], obs_x , obs_y )
150+ u = np .full (obs_x .shape , np .nan )
151+ v = np .full (obs_x .shape , np .nan )
152+ for t in np .unique (obs_t ):
153+ obs_mask = (obs_t == t )
154+ try :
155+ ##try to obtain seaice velocity from iced files
156+ model_si_velocity = model .read_var (** {** kwargs , 'time' :t , 'name' :'seaice_velocity' , 'units' :drift_units })
157+ except FileNotFoundError :
158+ ##if not available, try to get from iceh files
159+ model_si_velocity = model .read_var (** {** kwargs , 'time' :t , 'name' :'seaice_velocity_daily' , 'units' :drift_units })
160+ grid_si_velocity = model .grid .convert (model_si_velocity , is_vector = True )
161+ ##find obs location velocity
162+ u [obs_mask ] = grid .interp (grid_si_velocity [0 ,...], obs_x [obs_mask ], obs_y [obs_mask ])
163+ v [obs_mask ] = grid .interp (grid_si_velocity [1 ,...], obs_x [obs_mask ], obs_y [obs_mask ])
161164 obs_seq = np .array ([u , v ])
162165
163166 ##TODO: alternatively, one can run a trajectory to get more accurate drift vectors
0 commit comments