Skip to content

Commit 09d0c2d

Browse files
authored
Merge pull request #1618 from knutfrode/dev
[run-ex] Added fix for CROCO files, from Diego Rodriguiez
2 parents 950aeec + 6b736aa commit 09d0c2d

File tree

1 file changed

+15
-38
lines changed

1 file changed

+15
-38
lines changed

opendrift/readers/reader_ROMS_native.py

Lines changed: 15 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -139,43 +139,11 @@ def __init__(self, filename=None, name=None, gridfile=None, standard_name_mappin
139139

140140
self.name = name or 'roms native'
141141

142-
# TODO: the below section is to be removed after some period with
143-
# testing of new common opener method: open_dataset_opendrift
144-
#if isinstance(filename, xr.Dataset):
145-
# self.Dataset = filename
146-
#else:
147-
148-
# filestr = str(filename)
149-
150-
# try:
151-
# # Open file, check that everything is ok
152-
# logger.info('Opening dataset: ' + filestr)
153-
# if ('*' in filestr) or ('?' in filestr) or ('[' in filestr):
154-
# logger.info('Opening files with MFDataset')
155-
# def drop_non_essential_vars_pop(ds):
156-
# dropvars = [v for v in ds.variables if v not in
157-
# list(self.ROMS_variable_mapping.keys()) + gls_param +
158-
# ['ocean_time', 'time', 'bulk_time', 's_rho',
159-
# 'Cs_r', 'hc', 'angle', 'Vtransform']
160-
# and v[0:3] not in ['lon', 'lat', 'mas']]
161-
# logger.debug('Dropping variables: %s' % dropvars)
162-
# ds = ds.drop_vars(dropvars)
163-
# return ds
164-
# self.Dataset = xr.open_mfdataset(filename,
165-
# chunks={'ocean_time': 1}, compat='override', decode_times=False,
166-
# preprocess=drop_non_essential_vars_pop,
167-
# data_vars='minimal', coords='minimal')
168-
# else:
169-
# logger.info('Opening file with Dataset')
170-
# self.Dataset = xr.open_dataset(filename, decode_times=False)
171-
# except Exception as e:
172-
# raise ValueError(e)
173-
174142
def drop_non_essential_vars_pop(ds):
175143
dropvars = [v for v in ds.variables if v not in
176144
list(self.ROMS_variable_mapping.keys()) + gls_param +
177145
['ocean_time', 'time', 'bulk_time', 's_rho',
178-
'Cs_r', 'hc', 'angle', 'Vtransform']
146+
'Cs_r', 'Cs_rho', 'hc', 'angle', 'Vtransform']
179147
and v[0:3] not in ['lon', 'lat', 'mas']]
180148
logger.debug('Dropping variables: %s' % dropvars)
181149
ds = ds.drop_vars(dropvars)
@@ -217,11 +185,20 @@ def drop_non_essential_vars_pop(ds):
217185
self.sigma = (np.arange(num_sigma)+.5-num_sigma)/num_sigma
218186

219187
# Read sigma-coordinate transform parameters
220-
try:
221-
self.Dataset.variables['Cs_r'].set_auto_mask(False)
222-
except:
223-
pass
224-
self.Cs_r = self.Dataset.variables['Cs_r'][:]
188+
if 'Cs_r' in self.Dataset.variables:
189+
csr = 'Cs_r' # ROMS
190+
elif 'Cs_rho' in self.Dataset.variables:
191+
csr = 'Cs_rho' # CROCO
192+
else:
193+
csr = None
194+
195+
if csr is not None:
196+
try:
197+
self.Dataset.variables[csr].set_auto_mask(False)
198+
except:
199+
pass
200+
self.Cs_r = self.Dataset.variables[csr][:]
201+
225202
try:
226203
self.hc = self.Dataset.variables['hc'][:]
227204
except:

0 commit comments

Comments
 (0)