Changeset 14 for trunk/condmag_on_orca.pro
- Timestamp:
- 12/13/06 15:58:23 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/condmag_on_orca.pro
r10 r14 21 21 ; to specify on which grid we do the interpolation T, U, V 22 22 ; must belong to T, U or V 23 ; 24 ; @keyword DRAKKAR_EXP {type=string} 25 ; code for Drakkar experiment 26 ; only used when orcares = ORC025 27 ; must be G42 ++ G70 23 28 ; 24 29 ; @restrictions … … 40 45 ; for ORCA2 filename is meshmask_bab.nc 41 46 ; ++ au pif entre mesh_hgr, mesh_zgr et mask 42 ; for ORCA0252 filename is ORCA025-G42_mesh_hgr.nc 47 ; for ORCA0252 filename is ORCA025-G42_mesh_hgr.nc 43 48 ; 44 49 ; @post … … 52 57 ; 53 58 ; @history 59 ; reee522 2006-12-13T13:50:32Z rhodes (IRIX64) 60 ; add optional keyword drakkar_exp 61 ; reee522 2006-12-13T12:09:05Z rhodes (IRIX64) 62 ; externalisation of netcdf writing 54 63 ; reee522 2006-11-23T13:34:31Z rhodes (IRIX64) 55 64 ; add ORCA025 (beginning) … … 63 72 ; ++ not very beautifuly implemented 64 73 ; fplod 2006-11-22T10:38:51Z aedon.locean-ipsl.upmc.fr (Darwin) 65 ; always use msg = 'iii : ...' or msg = 'eee : ...' 74 ; always use msg = 'iii : ...' or msg = 'eee : ...' 66 75 ; information on open io 67 76 ; fplod 2006-11-20T10:32:02Z aedon.locean-ipsl.upmc.fr (Darwin) … … 82 91 ; 83 92 ;- 84 PRO condmag_on_orca, orcares, method, gridtype 93 PRO condmag_on_orca, orcares, method, gridtype, DRAKKAR_EXP = drakkar_exp 85 94 ; 86 95 compile_opt idl2, strictarrsubs … … 94 103 CASE orcares OF 95 104 'ORCA2': BEGIN 96 msg = 'iii : valid orcares parameter = ' + 105 msg = 'iii : valid orcares parameter = ' + orcares 97 106 PRINT, msg 98 107 filename_oce = 'meshmask_bab.nc' 108 IF keyword_set(DRAKKAR_EXP) THEN BEGIN 109 msg = 'www : unused DRAKKAR_EXP keyword = ' + drakkar_exp 110 PRINT, msg 111 END 99 112 END 100 113 'ORCA025': BEGIN 101 msg = 'iii : valid orcares parameter = ' + 114 msg = 'iii : valid orcares parameter = ' + orcares 102 115 PRINT, msg 103 filename_oce = orcares + '-G42_mesh_hgr.nc' 116 IF keyword_set(DRAKKAR_EXP) THEN BEGIN 117 msg = 'iii : DRAKKAR_EXP keyword set' 118 PRINT, msg 119 msg = 'iii : DRAKKAR_EXP = ' + drakkar_exp 120 PRINT, msg 121 CASE drakkar_exp OF 122 'G42' : BEGIN 123 msg = 'iii : valid DRAKKAR_EXP keyword = ' + drakkar_exp 124 PRINT, msg 125 END 126 'G70' : BEGIN 127 msg = 'iii : valid DRAKKAR_EXP keyword = ' + drakkar_exp 128 PRINT, msg 129 END 130 ELSE : BEGIN 131 msg = 'eee : invalid DRAKKAR_EXP keyword = ' + drakkar_exp 132 PRINT, msg 133 RETURN 134 END 135 ENDCASE 136 filename_oce = orcares + '-' + drakkar_exp + '_mesh_hgr.nc' 137 END 104 138 END 105 139 ELSE : BEGIN … … 123 157 END 124 158 ELSE : BEGIN 125 msg = 'eee : invalid method parameter = ' + method 159 msg = 'eee : invalid method parameter = ' + method 126 160 PRINT, msg 127 161 msg = 'eee : method must be bilinear or imoms3' … … 147 181 END 148 182 ELSE: BEGIN 149 msg = 'eee : invalid gridtype parameter = ' + gridtype 183 msg = 'eee : invalid gridtype parameter = ' + gridtype 150 184 PRINT, msg 151 185 msg = 'eee : gridtype must be T, U or V' … … 168 202 msg = 'iii : ${GEOMAG_ID} is ' + geomag_id_env 169 203 PRINT, msg 170 END 204 END 171 205 ENDCASE 172 206 ; … … 200 234 ; mesh mask 201 235 ; check if this file exists 202 fullfilename_oce = isafile(iodirin + filename_oce, NEW=0,/MUST_EXIST, RECURSIVE=0) 236 fullfilename_oce = isafile(iodirin + filename_oce, NEW=0, /MUST_EXIST, $ 237 RECURSIVE=0) 203 238 IF fullfilename_oce[0] EQ '' THEN BEGIN 204 239 msg = 'eee : the file ' + fullfilename_oce + ' was not found.' … … 225 260 msg = 'iii : ${GEOMAG_OD} is ' + geomag_od_env 226 261 PRINT, msg 227 END 262 END 228 263 ENDCASE 229 264 ; … … 238 273 ENDIF 239 274 ; 240 ; build output filenames241 filename_cond_sed = 'cond_sed' + '_' + orcares +'.nc'242 fullfilename_cond_sed = iodirout + filename_cond_sed243 ;244 ; in order to avoid unexpected overwritten245 IF (FILE_TEST(fullfilename_cond_sed) EQ 1) THEN BEGIN246 msg = 'eee : the file ' + fullfilename_cond_sed + ' already exists.'247 PRINT, msg248 RETURN249 ENDIF250 ;251 filename_br = 'Br' + '_' + orcares +'.nc'252 fullfilename_br = iodirout + filename_br253 ;254 ; in order to avoid unexpected overwritten255 IF (FILE_TEST(fullfilename_br) EQ 1) THEN BEGIN256 msg = 'eee : the file ' + fullfilename_br + ' already exists.'257 PRINT, msg258 RETURN259 ENDIF260 ;261 275 ; d'après ncdump -h /usr/work/sur/fvi/OPA/geomag/condmag.nc 262 276 condmaglonname = 'lo' 263 277 condmaglatname = 'la' 264 varname_cond_sed = 'cond_sed'265 varname_br = 'Br'266 278 ; 267 279 ;---- … … 300 312 msg = 'iii : ' + fullfilename_condmag[0] + ' opened for read' 301 313 PRINT, msg 302 314 ; 315 varname_cond_sed = 'cond_sed' 316 varname_br = 'Br' 317 ; 303 318 varinq_cond_sed = NCDF_VARINQ(netcdf_id_condmag, varname_cond_sed) 319 NCDF_VARGET, netcdf_id_condmag, varname_cond_sed, varin_cond_sed 320 ; 304 321 varinq_br = NCDF_VARINQ(netcdf_id_condmag, varname_br) 322 NCDF_VARGET, netcdf_id_condmag, varname_br, varin_br 323 ; 324 NCDF_CLOSE, netcdf_id_condmag 305 325 ; 306 326 ;--------------------------- 307 ; Creation of the NetCdf file for cond_sed and Br308 ;---------------------------309 ;310 netcdf_id_cond_sed = NCDF_CREATE(fullfilename_cond_sed, /clobber)311 NCDF_CONTROL, netcdf_id_cond_sed, /NOFILL312 netcdf_id_br = NCDF_CREATE(fullfilename_br, /clobber)313 NCDF_CONTROL, netcdf_id_br, /NOFILL314 ;315 ; dimension316 dimidx = NCDF_DIMDEF(netcdf_id_cond_sed, 'x' , jpio)317 dimidy = NCDF_DIMDEF(netcdf_id_cond_sed, 'y' , jpjo)318 dimidt = NCDF_DIMDEF(netcdf_id_cond_sed, 'lo', /UNLIMITED)319 dimidx = NCDF_DIMDEF(netcdf_id_br, 'x' , jpio)320 dimidy = NCDF_DIMDEF(netcdf_id_br, 'y' , jpjo)321 dimidt = NCDF_DIMDEF(netcdf_id_br, 'lo', /UNLIMITED)322 ;323 ; global attributes324 NCDF_ATTPUT, netcdf_id_cond_sed, 'Conventions', 'GDT 1.2', /GLOBAL ; ++ conformité325 NCDF_ATTPUT, netcdf_id_cond_sed, 'file_name' , filename_cond_sed, /GLOBAL326 NCDF_ATTPUT, netcdf_id_cond_sed, 'Title' , 'Conductance', /GLOBAL327 NCDF_ATTPUT, netcdf_id_br, 'Conventions', 'GDT 1.2', /GLOBAL ; ++ conformité328 NCDF_ATTPUT, netcdf_id_br, 'file_name' , filename_Br, /GLOBAL329 NCDF_ATTPUT, netcdf_id_br, 'Title' , 'Magnetic field', /GLOBAL330 ;331 ; declaration of variables332 ; 4 common variables for the two files to produce333 varid = lonarr(3)334 ;335 varid[0] = NCDF_VARDEF(netcdf_id_cond_sed, 'nav_lon' , [dimidx, dimidy], /FLOAT)336 NCDF_ATTPUT, netcdf_id_cond_sed, varid[0], 'units' , 'degrees_east'337 NCDF_ATTPUT, netcdf_id_cond_sed, varid[0], 'valid_min', min(olon, max = omax),/FLOAT338 NCDF_ATTPUT, netcdf_id_cond_sed, varid[0], 'valid_max', omax,/FLOAT339 NCDF_ATTPUT, netcdf_id_cond_sed, varid[0], 'long_name', 'Longitude at t-point'340 varid[0] = NCDF_VARDEF(netcdf_id_br, 'nav_lon' , [dimidx, dimidy], /FLOAT)341 NCDF_ATTPUT, netcdf_id_br, varid[0], 'units' , 'degrees_east'342 NCDF_ATTPUT, netcdf_id_br, varid[0], 'valid_min', min(olon, max = omax),/FLOAT343 NCDF_ATTPUT, netcdf_id_br, varid[0], 'valid_max', omax,/FLOAT344 NCDF_ATTPUT, netcdf_id_br, varid[0], 'long_name', 'Longitude at t-point'345 ;346 varid[1] = NCDF_VARDEF(netcdf_id_cond_sed, 'nav_lat' , [dimidx, dimidy], /FLOAT)347 NCDF_ATTPUT, netcdf_id_cond_sed, varid[1], 'units' , 'degrees_north'348 NCDF_ATTPUT, netcdf_id_cond_sed, varid[1], 'valid_min', min(olat, max = omax),/FLOAT349 NCDF_ATTPUT, netcdf_id_cond_sed, varid[1], 'valid_max', omax,/FLOAT350 NCDF_ATTPUT, netcdf_id_cond_sed, varid[1], 'long_name', 'Latitude at t-point'351 varid[1] = NCDF_VARDEF(netcdf_id_br, 'nav_lat' , [dimidx, dimidy], /FLOAT)352 NCDF_ATTPUT, netcdf_id_br, varid[1], 'units' , 'degrees_north'353 NCDF_ATTPUT, netcdf_id_br, varid[1], 'valid_min', min(olat, max = omax),/FLOAT354 NCDF_ATTPUT, netcdf_id_br, varid[1], 'valid_max', omax,/FLOAT355 NCDF_ATTPUT, netcdf_id_br, varid[1], 'long_name', 'Latitude at t-point'356 ;357 varid[2] = NCDF_VARDEF(netcdf_id_cond_sed, 'time' , [dimidt], /FLOAT)358 varid[2] = NCDF_VARDEF(netcdf_id_br, 'time' , [dimidt], /FLOAT)359 ;360 ; each of the two files to produce contains a specific variable361 ;362 varid_cond_sed = lonarr(1)363 varid_cond_sed[0] = NCDF_VARDEF(netcdf_id_cond_sed, varname_cond_sed, [dimidx, dimidy, dimidt], /FLOAT)364 ;365 ; variable 3366 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'long_name', 'Conductance' ; ++ non cf367 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'units', 'siemens' ; ++ récupérer l'unite de cond_sed dans condmag.nc368 ; pour min et max, il faut avoir lu la variable ... cf. plus bas ++369 ; donc pour l'instant on les met à valeur manquante370 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_min', !VALUES.F_NAN ,/FLOAT371 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_max', !VALUES.F_NAN ,/FLOAT372 ;373 varid_br = lonarr(1)374 varid_br[0] = NCDF_VARDEF(netcdf_id_br, varname_br, [dimidx, dimidy, dimidt], /FLOAT)375 ;376 ; variable 3377 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'long_name', 'magnetic field' ; ++ non cf378 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'units', 'tesla' ; ++ récupérer l'unité de Br dans condmag.nc379 ; pour min et max, il faut avoir lu la variable ... cf. plus bas ++380 ; donc pour l'instant on les met à valeur manquante381 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'valid_min', !VALUES.F_NAN ,/FLOAT382 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_max', !VALUES.F_NAN ,/FLOAT383 ;384 ;---------------------------385 ; end of header definition, writing of the NetCdf files386 ;---------------------------387 NCDF_CONTROL, netcdf_id_cond_sed, /ENDEF388 NCDF_CONTROL, netcdf_id_br, /ENDEF389 NCDF_CLOSE, netcdf_id_condmag ; ++ si le close n'est pas ici ça merde mais je ne sais pas pourquoi390 ;391 ; grid392 NCDF_VARPUT, netcdf_id_cond_sed, 'nav_lon', olon393 NCDF_VARPUT, netcdf_id_cond_sed, 'nav_lat', olat394 NCDF_VARPUT, netcdf_id_cond_sed, varid[2], FLOAT(0.5) ; ++ c'est quoi cette valeur395 NCDF_VARPUT, netcdf_id_br, 'nav_lon', olon396 NCDF_VARPUT, netcdf_id_br, 'nav_lat', olat397 NCDF_VARPUT, netcdf_id_br, varid[2], FLOAT(0.5) ; ++ c'est quoi cette valeur398 399 ;---------------------------400 ; réouverture du fichier ... mais pourquoi on le relit !!++401 netcdf_id_condmag = NCDF_OPEN(fullfilename_condmag[0],/NOWRITE)402 msg = 'iii : ' + fullfilename_condmag[0] + ' reopened for read'403 PRINT, msg404 ;405 NCDF_VARGET, netcdf_id_condmag, varname_cond_sed, varin_cond_sed ; , COUNT = [jpia, jpja, 1], OFFSET = [0, 0, 0]406 NCDF_VARGET, netcdf_id_condmag, varname_br, varin_br ; , COUNT = [jpia, jpja, 1], OFFSET = [0, 0, 0]407 ;408 327 ; do the interpolation 409 328 varin_cond_sed = TOTAL(weig*varin_cond_sed[addr], 1) … … 412 331 varin_br = REFORM(varin_br, jpio, jpjo, /OVER) 413 332 ; 414 NCDF_CLOSE, netcdf_id_condmag415 333 varout_cond_sed = TEMPORARY(varin_cond_sed) 416 334 varout_br = TEMPORARY(varin_br) 417 ; compute min max418 minarr_cond_sed = min(varout_cond_sed, max = maxarr_cond_sed)419 minarr_br = min(varout_br, max = maxarr_br)420 335 ; 421 336 ; put back the masked value … … 423 338 ;++ IF bad[0] NE -1 THEN varout_br[TEMPORARY(bad)] = 32767 424 339 ; 425 ; write the data 426 NCDF_VARPUT, netcdf_id_cond_sed, varname_cond_sed, varout_cond_sed, COUNT = [jpio, jpjo, 1], OFFSET = [0, 0, 0] 427 NCDF_VARPUT, netcdf_id_br, varname_br, varout_br, COUNT = [jpio, jpjo, 1], OFFSET = [0, 0, 0] 428 ; 429 ; update min max attributes 430 NCDF_CONTROL, netcdf_id_cond_sed, /REDEF 431 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_min', minarr_cond_sed,/FLOAT 432 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_max', maxarr_cond_sed,/FLOAT 433 NCDF_CONTROL, netcdf_id_cond_sed, /ENDEF 434 NCDF_CONTROL, netcdf_id_br, /REDEF 435 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'valid_min', minarr_br,/FLOAT 436 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'valid_max', maxarr_br,/FLOAT 437 NCDF_CONTROL, netcdf_id_br, /ENDEF 438 ; 439 ;--------------------------- 440 ; close the netcdf files 441 NCDF_CLOSE, netcdf_id_cond_sed 442 NCDF_CLOSE, netcdf_id_br 443 ; 444 msg = 'iii : ' + fullfilename_cond_sed + ' created' 445 PRINT, msg 446 msg = 'iii : ' + fullfilename_br + ' created' 447 PRINT, msg 340 ; 341 ; produce outputs 342 condmag_output, orcares, $ 343 varinq_cond_sed, 'Conductance', 'Conductance', 'siemens', $ 344 jpio, jpjo, olon, olat, $ 345 varout_cond_sed 346 condmag_output, orcares, $ 347 varinq_br, 'Magnetic field', 'magnetic field', 'tesla', $ 348 jpio, jpjo, olon, olat, $ 349 varout_br 448 350 ; 449 351 END
Note: See TracChangeset
for help on using the changeset viewer.