Skip to content

Commit 85aa383

Browse files
committed
osisaf.ice_drift: add different time steps in obs_t
1 parent 009ca93 commit 85aa383

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

NEDAS/datasets/osisaf/ice_drift/ice_drift_obs.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)