Changeset 504
- Timestamp:
- 01/05/17 00:34:26 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SRC/Grid/smallmeshmask.pro
r495 r504 66 66 ; 67 67 ;- 68 PRO smallmeshmask, ncfilein, ncfileout, IODIR = iodir, HGRFILE = hgrfile, ZGRFILE = zgrfile, MSKFILE = mskfile 68 PRO smallmeshmask, ncfilein, ncfileout, IODIR = iodir, HGRFILE = hgrfile, ZGRFILE = zgrfile, MSKFILE = mskfile, USEBATHY = usebathy 69 69 ; 70 70 compile_opt idl2, strictarrsubs … … 73 73 test = (file_search(filein))[0] 74 74 IF test EQ '' THEN BEGIN 75 IF keyword_set(hgrfile) THEN filein_hgr = isafile(FILE = hgrfile, IODIR = iodir) ELSE filein_hgr = (file_search(filein+'.mesh_hgr.nc'))[0] 76 IF keyword_set(zgrfile) THEN filein_zgr = isafile(FILE = zgrfile, IODIR = iodir) ELSE filein_zgr = (file_search(filein+'.mesh_zgr.nc'))[0] 77 IF keyword_set(mskfile) THEN filein_msk = isafile(FILE = mskfile, IODIR = iodir) ELSE filein_msk = (file_search(filein+'.mask.nc'))[0] 75 IF keyword_set(hgrfile) THEN filein_hgr = isafile(FILE = hgrfile, IODIR = iodir) ELSE filein_hgr = (file_search(filein+'[._]mesh_hgr.nc'))[0] 76 IF keyword_set(zgrfile) THEN filein_zgr = isafile(FILE = zgrfile, IODIR = iodir) ELSE filein_zgr = (file_search(filein+'[._]mesh_zgr.nc'))[0] 77 IF keyword_set(usebathy) THEN filein_msk = 'not used' ELSE BEGIN 78 IF keyword_set(mskfile) THEN filein_msk = isafile(FILE = mskfile, IODIR = iodir) ELSE filein_msk = (file_search(filein+'[._]mask.nc'))[0] 79 ENDELSE 78 80 IF filein_hgr EQ '' OR filein_zgr EQ '' OR filein_msk EQ '' THEN BEGIN 79 81 ras = report(['meshmask file(s) not found...', $ … … 171 173 varid = [varid, ncdf_vardef(cdfidout, 'mbathy', [dimidx, dimidy], /short)] 172 174 ; mask variable 173 msklist = ['tmask', 'umask', 'vmask', 'fmask']175 IF keyword_set(usebathy) THEN msklist = ['tmask'] ELSE msklist = ['tmask', 'umask', 'vmask', 'fmask'] 174 176 FOR m = 0, n_elements(msklist)-1 DO $ 175 177 varid = [varid, ncdf_vardef(cdfidout, msklist[m], [dimidx, dimidy, dimidz], /byte)] … … 208 210 IF (where(zgr_varlist EQ 'mbathy'))[0] NE -1 THEN ncdf_transfer, cdfid, cdfidout, 'mbathy' 209 211 ; 212 bat = -1 210 213 IF keyword_set(key_e3_3d) THEN BEGIN 211 214 ; get the bottom … … 233 236 IF keyword_set(key_gdep_3d) THEN BEGIN 234 237 ; get the bottom 235 CASE (ncdf_varinq(cdfid, 'mbathy')).ndims OF 236 2:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj] 237 3:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj, 1] 238 4:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj, 1, 1] 239 ENDCASE 238 IF bat[0] EQ -1 THEN BEGIN 239 CASE (ncdf_varinq(cdfid, 'mbathy')).ndims OF 240 2:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj] 241 3:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj, 1] 242 4:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj, 1, 1] 243 ENDCASE 244 ENDIF 240 245 bottom = 0L > ( long(bat) - 1L ) 241 246 bottom = lindgen(jpi, jpj) + jpi*jpj*temporary(bottom) … … 257 262 ; mask 258 263 ; 259 IF n_elements(filein_msk) NE 0 THEN BEGIN 260 ncdf_close, cdfid 261 cdfid = ncdf_open(filein_msk) 262 ENDIF 264 IF keyword_set(usebathy) THEN BEGIN 265 IF bat[0] EQ -1 THEN BEGIN 266 CASE (ncdf_varinq(cdfid, 'mbathy')).ndims OF 267 2:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj] 268 3:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj, 1] 269 4:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj, 1, 1] 270 ENDCASE 271 ENDIF 272 FOR k = 0, jpk-1 DO BEGIN 273 zz = bat GT k 274 ncdf_varput, cdfidout, 'tmask', temporary(zz), offset = [0, 0, k], count = [jpi, jpj, 1] 275 ENDFOR 276 ENDIF ELSE BEGIN 277 IF n_elements(filein_msk) NE 0 THEN BEGIN 278 ncdf_close, cdfid 279 cdfid = ncdf_open(filein_msk) 280 ENDIF 263 281 ; loop on the vertical levels to limit the memory use 264 FOR k = 0, jpk-1 DO BEGIN 265 FOR m = 0, 3 DO BEGIN 266 CASE (ncdf_varinq(cdfid, msklist[m])).ndims OF 267 3:ncdf_varget, cdfid, msklist[m], zzz, offset = [0, 0, k ], count = [jpi, jpj, 1] 268 4:ncdf_varget, cdfid, msklist[m], zzz, offset = [0, 0, k, 0], count = [jpi, jpj, 1, 1] 269 ENDCASE 270 ncdf_varput, cdfidout, msklist[m], byte(temporary(zzz)), offset = [0, 0, k], count = [jpi, jpj, 1] 282 FOR k = 0, jpk-1 DO BEGIN 283 FOR m = 0, n_elements(msklist)-1 DO BEGIN 284 CASE (ncdf_varinq(cdfid, msklist[m])).ndims OF 285 3:ncdf_varget, cdfid, msklist[m], zzz, offset = [0, 0, k ], count = [jpi, jpj, 1] 286 4:ncdf_varget, cdfid, msklist[m], zzz, offset = [0, 0, k, 0], count = [jpi, jpj, 1, 1] 287 ENDCASE 288 ncdf_varput, cdfidout, msklist[m], byte(temporary(zzz)), offset = [0, 0, k], count = [jpi, jpj, 1] 289 ENDFOR 271 290 ENDFOR 272 END FOR291 ENDELSE 273 292 ;------------------------------------------------------ 274 293 ;------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.