Changeset 451 for trunk/SRC/Grid/smallmeshmask.pro
- Timestamp:
- 03/22/11 10:33:45 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SRC/Grid/smallmeshmask.pro
r371 r451 108 108 zgr_varlist = ncdf_listvars(cdfid) 109 109 zgr_varlist = strtrim(strlowcase(zgr_varlist), 2) 110 ;------------------------------------------------------ 110 ; is e3t a real 3D array? 111 IF (where(zgr_varlist EQ 'e3t'))[0] NE -1 THEN BEGIN 112 varinq = ncdf_varinq(cdfid, 'e3t') 113 if varinq.ndims GE 3 THEN BEGIN 114 ncdf_diminq, cdfid, varinq.dim[0], name, iii 115 ncdf_diminq, cdfid, varinq.dim[1], name, jjj 116 ncdf_diminq, cdfid, varinq.dim[2], name, kkk 117 IF iii EQ jpi AND jjj EQ jpj AND kkk EQ jpk THEN key_e3_3d = 1 118 ENDIF 119 ENDIF 120 ; is gdept a real 3D array? 121 IF (where(zgr_varlist EQ 'gdept'))[0] NE -1 THEN BEGIN 122 varinq = ncdf_varinq(cdfid, 'gdept') 123 if varinq.ndims GE 3 THEN BEGIN 124 ncdf_diminq, cdfid, varinq.dim[0], name, iii 125 ncdf_diminq, cdfid, varinq.dim[1], name, jjj 126 ncdf_diminq, cdfid, varinq.dim[2], name, kkk 127 IF iii EQ jpi AND jjj EQ jpj AND kkk EQ jpk THEN key_gdep_3d = 1 128 ENDIF 129 ENDIF 111 130 ;------------------------------------------------------ 112 131 ; … … 139 158 varid[16+z] = ncdf_vardef(cdfidout, zgrlist[z], [dimidz], /float) 140 159 ; variables related to the partial steps 141 IF (where(zgr_varlist EQ 'hdept'))[0] NE -1 THEN $ 160 with_partial = keyword_set(key_e3_3d) OR (where(zgr_varlist EQ 'hdept'))[0] NE -1 $ 161 OR (where(zgr_varlist EQ 'e3tp'))[0] NE -1 $ 162 OR (where(zgr_varlist EQ 'e3t_ps'))[0] NE -1 163 IF with_partial THEN BEGIN 142 164 varid = [varid, ncdf_vardef(cdfidout, 'hdept', [dimidx, dimidy], /float)] 143 IF (where(zgr_varlist EQ 'hdepw'))[0] NE -1 THEN $144 165 varid = [varid, ncdf_vardef(cdfidout, 'hdepw', [dimidx, dimidy], /float)] 145 ; old variable name. keep for compatibility with old run. Change e3tp to e3t_ps146 IF (where(zgr_varlist EQ 'e3tp'))[0] NE -1 THEN $147 166 varid = [varid, ncdf_vardef(cdfidout, 'e3t_ps', [dimidx, dimidy], /float)] 148 ; old variable name. keep for compatibility with old run. Change e3wp to e3w_ps149 IF (where(zgr_varlist EQ 'e3wp'))[0] NE -1 THEN $150 167 varid = [varid, ncdf_vardef(cdfidout, 'e3w_ps', [dimidx, dimidy], /float)] 151 ; 152 IF (where(zgr_varlist EQ 'e3t_ps'))[0] NE -1 THEN $ 153 varid = [varid, ncdf_vardef(cdfidout, 'e3t_ps', [dimidx, dimidy], /float)] 154 IF (where(zgr_varlist EQ 'e3w_ps'))[0] NE -1 THEN $ 155 varid = [varid, ncdf_vardef(cdfidout, 'e3w_ps', [dimidx, dimidy], /float)] 156 ; IF (where(zgr_varlist EQ 'e3u_ps'))[0] NE -1 THEN $ 157 ; varid = [varid, ncdf_vardef(cdfidout, 'e3u_ps', [dimidx, dimidy], /float)] 158 ; IF (where(zgr_varlist EQ 'e3v_ps'))[0] NE -1 THEN $ 159 ; varid = [varid, ncdf_vardef(cdfidout, 'e3v_ps', [dimidx, dimidy], /float)] 168 ENDIF 169 ; 160 170 IF (where(zgr_varlist EQ 'mbathy'))[0] NE -1 THEN $ 161 171 varid = [varid, ncdf_vardef(cdfidout, 'mbathy', [dimidx, dimidy], /short)] … … 163 173 msklist = ['tmask', 'umask', 'vmask', 'fmask'] 164 174 FOR m = 0, n_elements(msklist)-1 DO $ 165 varid = [varid, ncdf_vardef(cdfidout, msklist[m] $ 166 , [dimidx, dimidy, dimidz], /byte)] 175 varid = [varid, ncdf_vardef(cdfidout, msklist[m], [dimidx, dimidy, dimidz], /byte)] 167 176 ;------------------------------------------------------ 168 177 ;------------------------------------------------------ … … 189 198 inzgrlist = zgrlist 190 199 IF (where(zgr_varlist EQ 'gdept_0'))[0] NE -1 THEN inzgrlist = inzgrlist+'_0' 191 FOR z = 0, n_elements(zgrlist)-1 DO $ 192 ncdf_transfer, cdfid, cdfidout, inzgrlist[z], zgrlist[z] 200 FOR z = 0, n_elements(zgrlist)-1 DO ncdf_transfer, cdfid, cdfidout, inzgrlist[z], zgrlist[z] 193 201 ; partial step variables 194 IF (where(zgr_varlist EQ 'hdept'))[0] NE -1 THEN $ 195 ncdf_transfer, cdfid, cdfidout, 'hdept' 196 IF (where(zgr_varlist EQ 'hdepw'))[0] NE -1 THEN $ 197 ncdf_transfer, cdfid, cdfidout, 'hdepw' 198 IF (where(zgr_varlist EQ 'e3tp'))[0] NE -1 THEN $ 199 ncdf_transfer, cdfid, cdfidout, 'e3tp', 'e3t_ps' 200 IF (where(zgr_varlist EQ 'e3wp'))[0] NE -1 THEN $ 201 ncdf_transfer, cdfid, cdfidout, 'e3wp', 'e3w_ps' 202 IF (where(zgr_varlist EQ 'e3t_ps'))[0] NE -1 THEN $ 203 ncdf_transfer, cdfid, cdfidout, 'e3t_ps' 204 IF (where(zgr_varlist EQ 'e3w_ps'))[0] NE -1 THEN $ 205 ncdf_transfer, cdfid, cdfidout, 'e3w_ps' 206 ; IF (where(zgr_varlist EQ 'e3u_ps'))[0] NE -1 THEN $ 207 ; ncdf_transfer, cdfid, cdfidout, 'e3u_ps' 208 ; IF (where(zgr_varlist EQ 'e3v_ps'))[0] NE -1 THEN $ 209 ; ncdf_transfer, cdfid, cdfidout, 'e3v_ps' 210 IF (where(zgr_varlist EQ 'mbathy'))[0] NE -1 THEN $ 211 ncdf_transfer, cdfid, cdfidout, 'mbathy' 202 IF (where(zgr_varlist EQ 'hdept' ))[0] NE -1 THEN ncdf_transfer, cdfid, cdfidout, 'hdept' 203 IF (where(zgr_varlist EQ 'hdepw' ))[0] NE -1 THEN ncdf_transfer, cdfid, cdfidout, 'hdepw' 204 IF (where(zgr_varlist EQ 'e3tp' ))[0] NE -1 THEN ncdf_transfer, cdfid, cdfidout, 'e3tp', 'e3t_ps' 205 IF (where(zgr_varlist EQ 'e3wp' ))[0] NE -1 THEN ncdf_transfer, cdfid, cdfidout, 'e3wp', 'e3w_ps' 206 IF (where(zgr_varlist EQ 'e3t_ps'))[0] NE -1 THEN ncdf_transfer, cdfid, cdfidout, 'e3t_ps' 207 IF (where(zgr_varlist EQ 'e3w_ps'))[0] NE -1 THEN ncdf_transfer, cdfid, cdfidout, 'e3w_ps' 208 IF (where(zgr_varlist EQ 'mbathy'))[0] NE -1 THEN ncdf_transfer, cdfid, cdfidout, 'mbathy' 209 ; 210 IF keyword_set(key_e3_3d) THEN BEGIN 211 ; get the bottom 212 CASE (ncdf_varinq(cdfid, 'mbathy')).ndims OF 213 2:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj] 214 3:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj, 1] 215 4:ncdf_varget, cdfid, 'mbathy', bat, count = [jpi, jpj, 1, 1] 216 ENDCASE 217 bottom = 0L > ( long(bat) - 1L ) 218 bottom = lindgen(jpi, jpj) + jpi*jpj*temporary(bottom) 219 ; 220 CASE (ncdf_varinq(cdfid, 'e3t')).ndims OF 221 3:ncdf_varget, cdfid, 'e3t', res, count = [jpi, jpj, jpk] 222 4:ncdf_varget, cdfid, 'e3t', res, count = [jpi, jpj, jpk, 1] 223 ENDCASE 224 ncdf_varput, cdfidout, 'e3t_ps', (temporary(res))[bottom] * (bat NE 0L) 225 ; 226 CASE (ncdf_varinq(cdfid, 'e3w')).ndims OF 227 3:ncdf_varget, cdfid, 'e3w', res, count = [jpi, jpj, jpk] 228 4:ncdf_varget, cdfid, 'e3w', res, count = [jpi, jpj, jpk, 1] 229 ENDCASE 230 ncdf_varput, cdfidout, 'e3w_ps', (temporary(res))[bottom] * (bat NE 0L) 231 ENDIF 232 ; 233 IF keyword_set(key_gdep_3d) THEN BEGIN 234 ; 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 240 bottom = 0L > ( long(bat) - 1L ) 241 bottom = lindgen(jpi, jpj) + jpi*jpj*temporary(bottom) 242 ; 243 CASE (ncdf_varinq(cdfid, 'gdept')).ndims OF 244 3:ncdf_varget, cdfid, 'gdept', res, count = [jpi, jpj, jpk] 245 4:ncdf_varget, cdfid, 'gdept', res, count = [jpi, jpj, jpk, 1] 246 ENDCASE 247 ncdf_varput, cdfidout, 'hdept', (temporary(res))[bottom] * (bat NE 0L) 248 ; 249 bottom = jpi*jpj + temporary(bottom) 250 CASE (ncdf_varinq(cdfid, 'gdepw')).ndims OF 251 3:ncdf_varget, cdfid, 'gdepw', res, count = [jpi, jpj, jpk] 252 4:ncdf_varget, cdfid, 'gdepw', res, count = [jpi, jpj, jpk, 1] 253 ENDCASE 254 ncdf_varput, cdfidout, 'hdepw', (temporary(res))[bottom] * (bat NE 0L) 255 ENDIF 212 256 ; 213 257 ; mask … … 221 265 FOR m = 0, 3 DO BEGIN 222 266 CASE (ncdf_varinq(cdfid, msklist[m])).ndims OF 223 3:ncdf_varget, cdfid, msklist[m], zzz, offset = [0, 0, k] $ 224 , count = [jpi, jpj, 1] 225 4:ncdf_varget, cdfid, msklist[m], zzz, offset = [0, 0, k, 0] $ 226 , count = [jpi, jpj, 1, 1] 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] 227 269 ENDCASE 228 ncdf_varput, cdfidout, msklist[m], byte(temporary(zzz)) $ 229 , offset = [0, 0, k], count = [jpi, jpj, 1] 270 ncdf_varput, cdfidout, msklist[m], byte(temporary(zzz)), offset = [0, 0, k], count = [jpi, jpj, 1] 230 271 ENDFOR 231 272 ENDFOR
Note: See TracChangeset
for help on using the changeset viewer.