Changeset 14
- Timestamp:
- 12/13/06 15:58:23 (17 years ago)
- Location:
- trunk
- Files:
-
- 1 edited
- 1 copied
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 -
trunk/condmag_output.pro
r10 r14 2 2 ; 3 3 ; @file_comments 4 ; interpolate condmag.nc file (sediment and magnetic fields) on ORCA grid5 ; and produce cond_sed_<orcares>.nc and Br_<orcares>.nc4 ; produce cond_sed_<orcares>.nc or Br_<orcares>.nc 5 ; dependent on orcares and variable parameters 6 6 ; 7 7 ; @categories 8 ; interpolation, orca grid8 ; output, netcdf 9 9 ; 10 10 ; @param orcares {in}{required}{type=string} … … 12 12 ; must be 'ORCA2' or 'ORCA025' 13 13 ; 14 ; @param method {in}{required}{type=string} 15 ; code for interpolation method 16 ; must be 'bilinear' or 'imoms3' 17 ; in fact bilinear is used in this geomag project 18 ; ++ est-ce que ce sera tjs vrai ? 19 ; 20 ; @param gridtype {in}{required}{type=string} 21 ; to specify on which grid we do the interpolation T, U, V 22 ; must belong to T, U or V 14 ; @param variable {in}{required}{type=structure return by NCDF_VARINQ} 15 ; { NAME:"", DATATYPE:"", NDIMS:0L, NATTS:0L, DIM:LONARR(NDIMS) } 16 ; variable of condmag.nc to be written 17 ; variable.NAME must be 'cond_sed' or 'Br' 18 ; 19 ; @param title {in}{required}{type=string} 20 ; title must belong_name 'Conductance' or 'Magnetic_field' ++ 21 ; 22 ; @param long_name {in}{required}{type=string} 23 ; long_name must be 'Conductance' or 'magnetic_field' ++ 24 ; 25 ; @param units {in}{required}{type=string} 26 ; units must be 'siemens' or 'tesla' 27 ; 28 ; @param jpio {in}{required}{type=integer} 29 ; x dimension of the 3d array to be written 30 ; must be greater than 1 31 ; 32 ; @param jpjo {in}{required}{type=integer} 33 ; y dimension of the 3d array to be written 34 ; must be greater than 1 35 ; 36 ; @param olon {in}{required}{type=1d array of floats} 37 ; x++ longitude values 38 ; must be ++ 39 ; 40 ; @param olat {in}{required}{type=1d array of floats} 41 ; x++ latitude values 42 ; must be ++ 43 ; 44 ; @parameter values {in}{required}{type=nd array of variable.DATATYPE} 45 ; values of the variable to be written 46 ; ++ must be 23 47 ; 24 48 ; @restrictions 25 49 ; - Requires SAXO tools 26 ; - must have condmag.nc in ${GEOMAG_ID}/27 ; - must have meshmask for ORCA2 or ORCA025 in ${GEOMAG_ID}/28 ; - must not have cond_sed_*.nc in ${GEOMAG_OD}/29 ; - must not have Br_*.nc in ${GEOMAG_OD}/30 50 ; 31 51 ; @todo 32 ; provide tools to plot output files33 52 ; produce a NetCDF GDT or CF compliant 53 ; check if jpio and jpjo are not present in some "common" after getgridparam 54 ; in order to remove them from parameters 34 55 ; 35 56 ; @pre 36 ; be sure to have datafile condmag.nc in the directory defined in 37 ; ${GEOMAG_ID}/ see geomag_env.sh 38 ; be sure to have meshmask of ORCA grid you choose in the directory defined in 39 ; ${GEOMAG_ID}/ 40 ; for ORCA2 filename is meshmask_bab.nc 41 ; ++ au pif entre mesh_hgr, mesh_zgr et mask 42 ; for ORCA0252 filename is ORCA025-G42_mesh_hgr.nc 57 ; reading of condmag.nc 58 ; see condmag_on_orca.pro 43 59 ; 44 60 ; @post 45 61 ; cond_sed_<I>orcasres</I>.nc is now present in ${GEOMAG_OD}/ 62 ; or 46 63 ; Br_<I>orcasres</I>.nc is now present in ${GEOMAG_OD}/ 47 64 ; see geomag_env.sh … … 49 66 ; @examples 50 67 ; IDL> .run condmag_on_orca 51 ; IDL> condmag_o n_orca, 'ORCA2', 'bilinear','T'68 ; IDL> condmag_output, 'ORCA2', 'cond_sed','Conductance','Conductance','siemens',jpio,jpjo,olon,olat, values 52 69 ; 53 70 ; @history 54 ; reee522 2006-11-23T13:34:31Z rhodes (IRIX64) 55 ; add ORCA025 (beginning) 56 ; reee522 2006-11-23T13:28:07Z rhodes (IRIX64) 57 ; information about the opening of meshmask file was missing ... because 58 ; the open is hidden in the call of get_gridparam 59 ; fplod 2006-11-23T08:57:10Z aedon.locean-ipsl.upmc.fr (Darwin) 60 ; rename to condmag_on_orca.pro 61 ; fplod 2006-11-22T15:10:31Z aedon.locean-ipsl.upmc.fr (Darwin) 62 ; add creation of Br_<I>orcasres</I>.nc 63 ; ++ not very beautifuly implemented 64 ; fplod 2006-11-22T10:38:51Z aedon.locean-ipsl.upmc.fr (Darwin) 65 ; always use msg = 'iii : ...' or msg = 'eee : ...' 66 ; information on open io 67 ; fplod 2006-11-20T10:32:02Z aedon.locean-ipsl.upmc.fr (Darwin) 68 ; cleaning before introduction into svn repository 69 ; fplod 2006-03-23T13:05:39Z aedon.lodyc.jussieu.fr (Darwin) 70 ; cond_sed_ORCA2 presque ok manque attributes min/max de cond_sed 71 ; fplod 2006-03-22T09:35:42Z aedon.lodyc.jussieu.fr (Darwin) 72 ; created from 73 ; /Users/fplod/incas/seb/DORAEMON/wind/idl/quikscat_to_orca_scalar.pro written 74 ; by Sebastien Masson 75 ; to reproduce /usr/work/sur/fvi/OPA/geomag/cond_sed_ORCA2.nc 76 ; main differences : no yyyy parameter, no time loop , no mask and no missing 77 ; values (++ to be checked ) in data input (condmag.nc), no scale factor, 78 ; no OFFSET, no save of weight and addresses 71 ; reee522 2006-12-13T11:44:19Z rhodes (IRIX64) 72 ; add attributes in parameters list 73 ; reee522 2006-11-28T14:07:32Z rhodes (IRIX64) 74 ; written from current release of condmag_on_orca.pro 79 75 ; 80 76 ; @version … … 82 78 ; 83 79 ;- 84 PRO condmag_o n_orca, orcares, method, gridtype80 PRO condmag_output, orcares, variable, title, long_name, units, jpio, jpjo, olon,olat,values 85 81 ; 86 82 compile_opt idl2, strictarrsubs … … 96 92 msg = 'iii : valid orcares parameter = ' + orcares 97 93 PRINT, msg 98 filename_oce = 'meshmask_bab.nc'99 94 END 100 95 'ORCA025': BEGIN 101 96 msg = 'iii : valid orcares parameter = ' + orcares 102 97 PRINT, msg 103 filename_oce = orcares + '-G42_mesh_hgr.nc'104 98 END 105 99 ELSE : BEGIN … … 112 106 ENDCASE 113 107 ; 114 ; check method definition 115 CASE method OF 116 'bilinear': BEGIN 117 msg = 'iii : valid method parameter = ' + method 108 ; check variable definition 109 ; ++ dimension etc. 110 CASE variable.NAME OF 111 'cond_sed': BEGIN 112 msg = 'iii : valid variable.NAME parameter = ' + variable.NAME 118 113 PRINT, msg 114 CASE title OF 115 'Conductance': BEGIN 116 msg = 'iii : valid title parameter = ' + title 117 PRINT, msg 118 END 119 ELSE : BEGIN 120 msg = 'eee : invalid title parameter = ' + title 121 PRINT, msg 122 msg = 'eee : title must be Conductance' 123 PRINT, msg 124 RETURN 125 END 126 ENDCASE 127 CASE long_name OF 128 'Conductance': BEGIN 129 msg = 'iii : valid long_name parameter = ' + long_name 130 PRINT, msg 131 END 132 ELSE : BEGIN 133 msg = 'eee : invalid long_name parameter = ' + long_name 134 PRINT, msg 135 msg = 'eee : long_name must be Conductance' 136 PRINT, msg 137 RETURN 138 END 139 ENDCASE 140 CASE units OF 141 'siemens': BEGIN 142 msg = 'iii : valid units parameter = ' + units 143 PRINT, msg 144 END 145 ELSE : BEGIN 146 msg = 'eee : invalid units parameter = ' + units 147 PRINT, msg 148 msg = 'eee : units must be siemens' 149 PRINT, msg 150 RETURN 151 END 152 ENDCASE 119 153 END 120 ' imoms3' : BEGIN121 msg = 'iii : valid method parameter = ' + method154 'Br' : BEGIN 155 msg = 'iii : valid variable.NAME parameter = ' + variable.NAME 122 156 PRINT, msg 157 CASE title OF 158 'Magnetic field': BEGIN 159 msg = 'iii : valid title parameter = ' + title 160 PRINT, msg 161 END 162 ELSE : BEGIN 163 msg = 'eee : invalid title parameter = ' + title 164 PRINT, msg 165 msg = 'eee : title must be Magnetic field' 166 PRINT, msg 167 RETURN 168 END 169 ENDCASE 170 CASE long_name OF 171 'magnetic field': BEGIN 172 msg = 'iii : valid long_name parameter = ' + long_name 173 PRINT, msg 174 END 175 ELSE : BEGIN 176 msg = 'eee : invalid long_name parameter = ' + long_name 177 PRINT, msg 178 msg = 'eee : long_name must be magnetic field' 179 PRINT, msg 180 RETURN 181 END 182 ENDCASE 183 CASE units OF 184 'tesla': BEGIN 185 msg = 'iii : valid units parameter = ' + units 186 PRINT, msg 187 END 188 ELSE : BEGIN 189 msg = 'eee : invalid units parameter = ' + units 190 PRINT, msg 191 msg = 'eee : units must be tesla' 192 PRINT, msg 193 RETURN 194 END 195 ENDCASE 123 196 END 124 197 ELSE : BEGIN 125 msg = 'eee : invalid method parameter = ' + method198 msg = 'eee : invalid variable.NAME parameter = ' + variable.NAME 126 199 PRINT, msg 127 msg = 'eee : method must be bilinear or imoms3'200 msg = 'eee : variable.NAME must be cond_sed or Br' 128 201 PRINT, msg 129 202 RETURN … … 131 204 ENDCASE 132 205 ; 133 ; check gridtype definition 134 gridtype = strupcase(gridtype) 135 CASE gridtype OF 136 'T' : BEGIN 137 msg = 'iii : valid gridtype parameter = ' + gridtype 138 PRINT, msg 139 END 140 'U' : BEGIN 141 msg = 'iii : valid gridtype parameter = ' + gridtype 142 PRINT, msg 143 END 144 'V' : BEGIN 145 msg = 'iii : valid gridtype parameter = ' + gridtype 146 PRINT, msg 147 END 148 ELSE: BEGIN 149 msg = 'eee : invalid gridtype parameter = ' + gridtype 150 PRINT, msg 151 msg = 'eee : gridtype must be T, U or V' 152 PRINT, msg 153 RETURN 154 END 155 ENDCASE 156 ; 157 ; check for input files 158 ; 159 ; test if ${GEOMAG_ID} defined 160 geomag_id_env=GETENV('GEOMAG_ID') 161 CASE geomag_id_env OF 162 '' : BEGIN 163 msg = 'eee : ${GEOMAG_ID} is not defined' 164 PRINT, msg 165 RETURN 166 END 167 ELSE: BEGIN 168 msg = 'iii : ${GEOMAG_ID} is ' + geomag_id_env 169 PRINT, msg 170 END 171 ENDCASE 172 ; 173 iodirin = isadirectory(geomag_id_env) 174 ; 175 ; existence and protection of ${GEOMAG_ID} 176 IF (FILE_TEST(iodirin, /DIRECTORY,/EXECUTABLE , /READ) EQ 0) THEN BEGIN 177 msg = 'eee : the directory' + iodirin + ' is not accessible.' 178 PRINT, msg 179 RETURN 180 ENDIF 181 ; 182 ; conductivity and magnetic field 183 filename_condmag = 'condmag.nc' 184 ; 185 ; check if this file exists 186 fullfilename_condmag = isafile(iodirin + filename_condmag, NEW=0,/MUST_EXIST) 187 IF fullfilename_condmag[0] EQ '' THEN BEGIN 188 msg = 'eee : the file ' + fullfilename_condmag + ' was not found.' 189 PRINT, msg 190 RETURN 191 ENDIF 192 ; 193 ; protection 194 IF (FILE_TEST(fullfilename_condmag[0], /READ) EQ 0) THEN BEGIN 195 msg = 'eee : the file ' + fullfilename_condmag[0] + ' is not readable.' 196 PRINT, msg 197 RETURN 198 ENDIF 199 ; 200 ; mesh mask 201 ; check if this file exists 202 fullfilename_oce = isafile(iodirin + filename_oce, NEW=0,/MUST_EXIST, RECURSIVE=0) 203 IF fullfilename_oce[0] EQ '' THEN BEGIN 204 msg = 'eee : the file ' + fullfilename_oce + ' was not found.' 205 PRINT, msg 206 RETURN 207 ENDIF 208 ; 209 ; protection 210 IF (FILE_TEST(fullfilename_oce[0], /READ) EQ 0) THEN BEGIN 211 msg = 'eee : the file ' + fullfileoce_condmag[0] + ' is not readable.' 212 PRINT, msg 213 RETURN 214 ENDIF 215 ; 206 ; check jpio 207 IF jpio LT 1 THEN BEGIN 208 msg = ' eee : invalid jpio parameter = ' + STRING(jpio) 209 PRINT, msg 210 msg = ' eee : jpio must be greater or equal to 1' 211 PRINT, msg 212 RETURN 213 ENDIF ELSE BEGIN 214 msg = 'iii : valid jpio parameter = ' + STRING(jpio) 215 PRINT, msg 216 ENDELSE 217 218 ; 219 ; check jpjo 220 IF jpjo LT 1 THEN BEGIN 221 msg = ' eee : invalid jpjo parameter = ' + STRING(jpjo) 222 PRINT, msg 223 msg = ' eee : jpjo must be greater or equal to 1' 224 PRINT, msg 225 RETURN 226 ENDIF ELSE BEGIN 227 msg = 'iii : valid jpjo parameter = ' + STRING(jpjo) 228 PRINT, msg 229 ENDELSE 230 ; 231 ; check olon ++ what to check 232 ; when decided reproduce with olat ++ 233 IF (N_ELEMENTS(olon) NE jpio*jpjo) THEN BEGIN 234 msg = ' eee : invalid nb of elements of olon parameter = ' + STRING(N_ELEMENTS(olon)) 235 PRINT, msg 236 msg = ' eee : nb of elements of olon must be equal to jpio*jpjo = ' + STRING(jpio*jpjo) 237 PRINT, msg 238 RETURN 239 ENDIF ELSE BEGIN 240 msg = 'iii : valid nb of elements olon parameter' 241 PRINT, msg 242 ENDELSE 243 ; 244 ; check values ++ 245 216 246 ; test if ${GEOMAG_OD} defined 217 247 geomag_od_env=GETENV('GEOMAG_OD') … … 239 269 ; 240 270 ; build output filenames 241 filename _cond_sed = 'cond_sed'+ '_' + orcares +'.nc'242 fullfilename _cond_sed = iodirout + filename_cond_sed271 filename = variable.NAME + '_' + orcares +'.nc' 272 fullfilename = iodirout + filename 243 273 ; 244 274 ; in order to avoid unexpected overwritten 245 IF (FILE_TEST(fullfilename _cond_sed) EQ 1) THEN BEGIN246 msg = 'eee : the file ' + fullfilename _cond_sed+ ' already exists.'275 IF (FILE_TEST(fullfilename) EQ 1) THEN BEGIN 276 msg = 'eee : the file ' + fullfilename + ' already exists.' 247 277 PRINT, msg 248 278 RETURN 249 279 ENDIF 250 280 ; 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 281 ; d'après ncdump -h /usr/work/sur/fvi/OPA/geomag/condmag.nc 282 ; ces lignes n'ont rien a faire la ++ ces information devrait etre en parameter 262 283 condmaglonname = 'lo' 263 284 condmaglatname = 'la' 264 varname_cond_sed = 'cond_sed' 265 varname_br = 'Br' 266 ; 267 ;---- 268 ; conductivity and magnetic field grid parameters 269 ;---- 270 ; 271 get_gridparams, fullfilename_condmag[0], $ 272 condmaglonname, condmaglatname, $ 273 condmaglon, condmaglat, jpia, jpja, 1,/DOUBLE 274 ; 275 ;---- 276 ; Oceanic grid parameters 277 ;---- 278 ; 279 olonname = 'glam' + STRLOWCASE(gridtype) 280 olatname = 'gphi' + STRLOWCASE(gridtype) 281 get_gridparams, fullfilename_oce[0], $ 282 olonname, olatname, $ 283 olon, olat, jpio, jpjo, 2,/DOUBLE 284 msg = 'iii : ' + fullfilename_oce[0] + ' opened for read' 285 PRINT, msg 286 ; 287 ;--------------- 288 ; Compute weight and address 289 ;--------------- 290 ; 291 CASE method OF 292 'bilinear': compute_fromreg_bilinear_weigaddr, $ 293 condmaglon, condmaglat, olon, olat, weig, addr 294 'imoms3' : compute_fromreg_imoms3_weigaddr, $ 295 condmaglon, condmaglat, olon, olat, weig, addr 296 ENDCASE 297 ; 298 ; reading condmag file 299 netcdf_id_condmag = NCDF_OPEN(fullfilename_condmag[0], /NOWRITE) 300 msg = 'iii : ' + fullfilename_condmag[0] + ' opened for read' 301 PRINT, msg 302 303 varinq_cond_sed = NCDF_VARINQ(netcdf_id_condmag, varname_cond_sed) 304 varinq_br = NCDF_VARINQ(netcdf_id_condmag, varname_br) 305 ; 306 ;--------------------------- 307 ; Creation of the NetCdf file for cond_sed and Br 308 ;--------------------------- 309 ; 310 netcdf_id_cond_sed = NCDF_CREATE(fullfilename_cond_sed, /clobber) 311 NCDF_CONTROL, netcdf_id_cond_sed, /NOFILL 312 netcdf_id_br = NCDF_CREATE(fullfilename_br, /clobber) 313 NCDF_CONTROL, netcdf_id_br, /NOFILL 285 varname = variable.NAME 286 ; 287 ;--------------------------- 288 ; Creation of the NetCdf output file 289 ;--------------------------- 290 ; 291 netcdf_id = NCDF_CREATE(fullfilename, /clobber) 292 NCDF_CONTROL, netcdf_id, /NOFILL 314 293 ; 315 294 ; dimension 316 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) 295 dimidx = NCDF_DIMDEF(netcdf_id, 'x' , jpio) 296 dimidy = NCDF_DIMDEF(netcdf_id, 'y' , jpjo) 297 dimidt = NCDF_DIMDEF(netcdf_id, 'lo', /UNLIMITED) 322 298 ; 323 299 ; global attributes 324 NCDF_ATTPUT, netcdf_id_cond_sed, 'Conventions', 'GDT 1.2', /GLOBAL ; ++ conformité 325 NCDF_ATTPUT, netcdf_id_cond_sed, 'file_name' , filename_cond_sed, /GLOBAL 326 NCDF_ATTPUT, netcdf_id_cond_sed, 'Title' , 'Conductance', /GLOBAL 327 NCDF_ATTPUT, netcdf_id_br, 'Conventions', 'GDT 1.2', /GLOBAL ; ++ conformité 328 NCDF_ATTPUT, netcdf_id_br, 'file_name' , filename_Br, /GLOBAL 329 NCDF_ATTPUT, netcdf_id_br, 'Title' , 'Magnetic field', /GLOBAL 300 NCDF_ATTPUT, netcdf_id, 'Conventions', 'GDT 1.2', /GLOBAL ; ++ conformite 301 NCDF_ATTPUT, netcdf_id, 'file_name' , filename, /GLOBAL 302 NCDF_ATTPUT, netcdf_id, 'Title' , title, /GLOBAL 330 303 ; 331 304 ; declaration of variables 332 305 ; 4 common variables for the two files to produce 333 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),/FLOAT 338 NCDF_ATTPUT, netcdf_id_cond_sed, varid[0], 'valid_max', omax,/FLOAT 339 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),/FLOAT 343 NCDF_ATTPUT, netcdf_id_br, varid[0], 'valid_max', omax,/FLOAT 344 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),/FLOAT 349 NCDF_ATTPUT, netcdf_id_cond_sed, varid[1], 'valid_max', omax,/FLOAT 350 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),/FLOAT 354 NCDF_ATTPUT, netcdf_id_br, varid[1], 'valid_max', omax,/FLOAT 355 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 variable 361 ; 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 3 366 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'long_name', 'Conductance' ; ++ non cf 367 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'units', 'siemens' ; ++ récupérer l'unite de cond_sed dans condmag.nc 306 varid = lonarr(4) 307 ; 308 varid[0] = NCDF_VARDEF(netcdf_id, 'nav_lon' , [dimidx, dimidy], /FLOAT) 309 NCDF_ATTPUT, netcdf_id, varid[0], 'units' , 'degrees_east' 310 NCDF_ATTPUT, netcdf_id, varid[0], 'valid_min', min(olon, max = omax),/FLOAT 311 NCDF_ATTPUT, netcdf_id, varid[0], 'valid_max', omax,/FLOAT 312 NCDF_ATTPUT, netcdf_id, varid[0], 'long_name', 'Longitude at t-point' 313 ; 314 varid[1] = NCDF_VARDEF(netcdf_id, 'nav_lat' , [dimidx, dimidy], /FLOAT) 315 NCDF_ATTPUT, netcdf_id, varid[1], 'units' , 'degrees_north' 316 NCDF_ATTPUT, netcdf_id, varid[1], 'valid_min', min(olat, max = omax),/FLOAT 317 NCDF_ATTPUT, netcdf_id, varid[1], 'valid_max', omax,/FLOAT 318 NCDF_ATTPUT, netcdf_id, varid[1], 'long_name', 'Latitude at t-point' 319 ; 320 varid[2] = NCDF_VARDEF(netcdf_id, 'time' , [dimidt], /FLOAT) 321 ; 322 varid[3] = NCDF_VARDEF(netcdf_id, varname, [dimidx, dimidy, dimidt], /FLOAT) 323 NCDF_ATTPUT, netcdf_id, varid[3], 'long_name', long_name 324 NCDF_ATTPUT, netcdf_id, varid[3], 'units', units 368 325 ; pour min et max, il faut avoir lu la variable ... cf. plus bas ++ 369 326 ; donc pour l'instant on les met à valeur manquante 370 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_min', !VALUES.F_NAN ,/FLOAT 371 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_max', !VALUES.F_NAN ,/FLOAT 372 ; 373 varid_br = lonarr(1) 374 varid_br[0] = NCDF_VARDEF(netcdf_id_br, varname_br, [dimidx, dimidy, dimidt], /FLOAT) 375 ; 376 ; variable 3 377 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'long_name', 'magnetic field' ; ++ non cf 378 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'units', 'tesla' ; ++ récupérer l'unité de Br dans condmag.nc 379 ; pour min et max, il faut avoir lu la variable ... cf. plus bas ++ 380 ; donc pour l'instant on les met à valeur manquante 381 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'valid_min', !VALUES.F_NAN ,/FLOAT 382 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_max', !VALUES.F_NAN ,/FLOAT 327 NCDF_ATTPUT, netcdf_id, varid[3], 'valid_min', !VALUES.F_NAN ,/FLOAT 328 NCDF_ATTPUT, netcdf_id, varid[3], 'valid_max', !VALUES.F_NAN ,/FLOAT 383 329 ; 384 330 ;--------------------------- 385 331 ; end of header definition, writing of the NetCdf files 386 332 ;--------------------------- 387 NCDF_CONTROL, netcdf_id_cond_sed, /ENDEF 388 NCDF_CONTROL, netcdf_id_br, /ENDEF 389 NCDF_CLOSE, netcdf_id_condmag ; ++ si le close n'est pas ici ça merde mais je ne sais pas pourquoi 390 ; 391 ; grid 392 NCDF_VARPUT, netcdf_id_cond_sed, 'nav_lon', olon 393 NCDF_VARPUT, netcdf_id_cond_sed, 'nav_lat', olat 394 NCDF_VARPUT, netcdf_id_cond_sed, varid[2], FLOAT(0.5) ; ++ c'est quoi cette valeur 395 NCDF_VARPUT, netcdf_id_br, 'nav_lon', olon 396 NCDF_VARPUT, netcdf_id_br, 'nav_lat', olat 397 NCDF_VARPUT, netcdf_id_br, varid[2], FLOAT(0.5) ; ++ c'est quoi cette valeur 333 ; 334 NCDF_CONTROL, netcdf_id, /ENDEF 335 ; 336 NCDF_VARPUT, netcdf_id, 'nav_lon', olon 337 NCDF_VARPUT, netcdf_id, 'nav_lat', olat 338 NCDF_VARPUT, netcdf_id, varid[2], FLOAT(0.5) ; ++ c'est quoi cette valeur 398 339 399 340 ;--------------------------- 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' 341 ; 342 ; compute min max 343 minarr = min(values, max = maxarr) 344 ; 345 ; put back the masked value 346 ;++ IF bad[0] NE -1 THEN values[TEMPORARY(bad)] = 32767 347 ; 348 ; write the data 349 NCDF_VARPUT, netcdf_id, varname, values, COUNT = [jpio, jpjo, 1], OFFSET = [0, 0, 0] 350 ; 351 ; update min max attributes 352 NCDF_CONTROL, netcdf_id, /REDEF 353 NCDF_ATTPUT, netcdf_id, varid[3], 'valid_min', minarr,/FLOAT 354 NCDF_ATTPUT, netcdf_id, varid[3], 'valid_max', maxarr,/FLOAT 355 NCDF_CONTROL, netcdf_id, /ENDEF 356 ; 357 ;--------------------------- 358 ; close the netcdf files 359 NCDF_CLOSE, netcdf_id 360 ; 361 msg = 'iii : ' + fullfilename + ' created' 403 362 PRINT, msg 404 363 ; 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 ; do the interpolation409 varin_cond_sed = TOTAL(weig*varin_cond_sed[addr], 1)410 varin_cond_sed = REFORM(varin_cond_sed, jpio, jpjo, /OVER)411 varin_br = TOTAL(weig*varin_br[addr], 1)412 varin_br = REFORM(varin_br, jpio, jpjo, /OVER)413 ;414 NCDF_CLOSE, netcdf_id_condmag415 varout_cond_sed = TEMPORARY(varin_cond_sed)416 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 ;421 ; put back the masked value422 ;++ IF bad[0] NE -1 THEN varout_cond_sed[TEMPORARY(bad)] = 32767423 ;++ IF bad[0] NE -1 THEN varout_br[TEMPORARY(bad)] = 32767424 ;425 ; write the data426 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 attributes430 NCDF_CONTROL, netcdf_id_cond_sed, /REDEF431 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_min', minarr_cond_sed,/FLOAT432 NCDF_ATTPUT, netcdf_id_cond_sed, varid_cond_sed[0], 'valid_max', maxarr_cond_sed,/FLOAT433 NCDF_CONTROL, netcdf_id_cond_sed, /ENDEF434 NCDF_CONTROL, netcdf_id_br, /REDEF435 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'valid_min', minarr_br,/FLOAT436 NCDF_ATTPUT, netcdf_id_br, varid_br[0], 'valid_max', maxarr_br,/FLOAT437 NCDF_CONTROL, netcdf_id_br, /ENDEF438 ;439 ;---------------------------440 ; close the netcdf files441 NCDF_CLOSE, netcdf_id_cond_sed442 NCDF_CLOSE, netcdf_id_br443 ;444 msg = 'iii : ' + fullfilename_cond_sed + ' created'445 PRINT, msg446 msg = 'iii : ' + fullfilename_br + ' created'447 PRINT, msg448 ;449 364 END
Note: See TracChangeset
for help on using the changeset viewer.