Changeset 548
- Timestamp:
- 05/04/12 14:01:42 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/cresamsu.pro
r547 r548 1 1 ; docformat = 'rst' 2 2 ;+ 3 ; .. _cresamsu.pro:4 3 ; 5 4 ; ============ … … 7 6 ; ============ 8 7 ; 8 ; .. function: cresamsu(numch, yyyyb, mmb, ddb, yyyye, mme, dde, lonmin, lonmax, latmin, latmax, temp, rtemp, rhdeg) 9 9 ; DESCRIPTION 10 10 ; =========== … … 12 12 ; programme d'interpolation avec algorithme de Cressmann 13 13 ; 14 ;; grille de sortie en long / lat 15 ; recoit en entree les jours de l'annee jdeb et jfin 16 ;correspondant au debut et la fin du mois 17 ; 14 18 ; adaptation aux donnees Tb AMSU lues avec la nouvelle chaîne de lecture 15 ; extract_amsu ab.pro19 ; extract_amsu.pro 16 20 ; correct_nadir.pro 17 21 ; 18 22 ; but: faire des fichiers "grilles" pour analyse statistique avec 19 23 ; interpolation spatiale et temporelle 24 ; 25 ; .. only:: man 26 ; 27 ; Figure is visible on PDF and HTML documents only. 28 ; 29 ; .. only:: html or latex 30 ; 31 ; .. graphviz:: 32 ; 33 ; digraph cresamsu { 34 ; amsu_t2 [shape=ellipse, 35 ; fontname=Courier, 36 ; label="${PROJECT_ID}/yyyy/mm/numch_yyyymmdd_geomin_geomax.dat"]; 37 ; amsu_t5 [shape=ellipse, 38 ; fontname=Courier, 39 ; label="${PROJECT_OD}/AMSU/numch_temprtrtemprhrhdeg_yyyymmdd_yyyymmdd_geomin_geomax.nc"]; 40 ; cresamsu [shape=box, 41 ; fontname=Courier, 42 ; color=blue, 43 ; URL="http://forge.ipsl.jussieu.fr/varamma/browser/trunk/src/cresamsu.pro", 44 ; label="${PROJECT}/src/cresamsua.pro"]; 45 ; 46 ; {amsu_t2} -> {cresamsua} -> {amsu_t5}; 47 ; } 20 48 ; 21 49 ; EXAMPLES … … 38 66 ; rtemp=0.5 39 67 ; rhdeg=1. 40 ; cresamsu, numch, yyyyb, mmb, ddb $ 41 ; , yyyye, mme, dde $ 42 ; , lonmin, lonmax, latmin, latmax,temp,rtemp,rhdeg 68 ; result = cresamsu(numch, yyyyb, mmb, ddb $ 69 ; , yyyye, mme, dde $ 70 ; , lonmin, lonmax, latmin, latmax $ 71 ; , temp, rtemp, rhdeg); 43 72 ; 44 73 ; SEE ALSO 45 74 ; ======== 46 75 ; 76 ; Previous step :ref:`extract_amsu.pro` (:ref:`traite_amsuab.sh`) 47 77 ; :ref:`traite_amsuab.sh` 48 78 ; 49 ; :func:`file_amsu_t2_to_mem` 79 ; Use :func:`file_amsu_t2_to_mem 80 ; :func:`idl_amsu_netcdf` 50 81 ; 51 82 ; TODO 52 83 ; ==== 53 84 ; 54 ; add temp,rtemp,rhdeg in example55 85 ; 56 86 ; fix pb with fov_int2 and fov_int3 … … 60 90 ; aligner lal/lon de l'exemple sur les autres modules amsu 61 91 ; 62 ; lelod 2011/10/24 63 ; actuellement codes en dur 64 ; passer le choix du rayon de Cressmann en parametres 65 ; rayon temporel rtemp (en jour decimal) 66 ; rayon horizontal rhor (km) 67 ; et la resolution 68 ; pash (horizontale, en degres) 69 ; past (temporelle, en jour decimal) 70 ; et enfin l'heure d'interpolation heurinterp (en heures) 71 ; 92 ; 72 93 ; coding rules 73 94 ; … … 79 100 ; ========== 80 101 ; 81 ; $Id $102 ; $Id: 82 103 ; 83 104 ; $URL$ 84 105 ; 85 ; - lelod 20120410 86 ; 106 ; - fplod 20120430 107 ; 108 ; * pro -> function 109 ; * idl_amsu_netcdf is a function 110 ; * add digraph 111 ; 112 ; - lelod 20120410 puis 20120503 113 ; 114 ; * parametres de la grille dependant des rayons de cresmann 115 ; * revisite de la grille temporelle 87 116 ; * choix du rayon de Cressmann en degres et pas en km 88 117 ; * ajout d'un parametre temp (= "m" ou "e") pour choix de la plage … … 133 162 ;- 134 163 135 pro cresamsu, numch, yyyyb, mmb, ddb, yyyye,mme,dde,lonmin,lonmax,latmin,latmax,temp,rtemp,rhdeg 136 137 ; les parametres de l'interpolation 138 139 ; grille de sortie en long / lat 140 ; recoit en entree les jours de l'annee jdeb et jfin correspondant au debut et la fin du mois 141 ;============================================================================================= 164 function cresamsu $ 165 , numch $ 166 , yyyyb $ 167 , mmb $ 168 , ddb $ 169 , yyyye $ 170 , mme $ 171 , dde $ 172 , lonmin $ 173 , lonmax $ 174 , latmin $ 175 , latmax $ 176 , temp $ 177 , rtemp $ 178 , rhdeg 142 179 143 180 compile_opt idl2, strictarrsubs … … 150 187 if key_performance EQ 1 THEN BEGIN 151 188 time1 = SYSTIME(1) 189 ENDIF 190 ; 191 ; 192 ; Return to caller if errors 193 ON_ERROR, 2 194 result = -1 195 ; 196 usage = 'result = cresamsu(numch, yyyyb, mmb, ddb, yyyye, mme, dde, lonmin, lonmax, latmin, latmax, temp, rtemp, rhdeg)' 197 ; 198 nparam = N_PARAMS() 199 IF (nparam NE 14) THEN BEGIN 200 ras = report(['Incorrect number of arguments.' $ 201 + '!C' $ 202 + 'Usage : ' + usage]) 203 return, result 152 204 ENDIF 153 205 ; … … 210 262 hrdeb=jdeb*24 211 263 hrfin=jfin*24 212 print,'debut et fin', jdeb,jfin 264 msg = report(['iii : ' + routine + ' : debut et fin = ' + string(jdeb) + ' ' + string(jfin)]) 265 213 266 jmax=fix((hrfin-hrdeb)/pasthor) ; valeurs de 0 a jmax 214 267 nbjour=jmax+1 … … 233 286 lmax=fix((la2-la1)/pash) ; valeurs de 0 a lmax 234 287 nblat=lmax+1 235 print,'nb pas de temps',nbjour, ' nb lat',nblat,' nblon',nblon 236 288 msg = report(['iii : ' + routine + ' : nb pas de temps = ' + string(nbjour)]) 289 msg = report(['iii : ' + routine + ' : nb lat = ' + string(nblat)]) 290 msg = report(['iii : ' + routine + ' : nb lon = ' + string(nblon)]) 291 msg = report(['iii : ' + routine + ' : rayon temporel en heures' + string(rtemphor)]) 237 292 238 293 … … 249 304 la2=max(yylat) 250 305 hrfin=max(jjours)*24. 251 print, 'pas de temps du fichier ncdf en jours decimaux',jjours 252 print,'derniers points de la grille',max(xxlon),max(yylat),hrfin 253 ;----------------------------------- 306 msg = report(['iii : ' + routine + ' : pas de temps du fichier ncdf en jours decimaux= ' + string(jjours)]) 307 msg = report(['iii : ' + routine + ' : derniers points de la grille (lon) = ' + string(max(xxlon))]) 308 msg = report(['iii : ' + routine + ' : derniers points de la grille (lat) = ' + string(max(yylat))]) 309 msg = report(['iii : ' + routine + ' : derniers points de la grille (temps) = ' + string(max(hrfin))]);----------------------------------- 254 310 t=indgen(nbjour)*pasthor+hrdeb ; en heures 255 311 print,'t',t … … 372 428 endif 373 429 endif 374 ; fin test sur donnees valides (inutil normalement)430 ; fin test sur donnees valides (inutile normalement) 375 431 endfor 376 432 ; fin lecture donnees fichier journalier … … 394 450 if nbfile GT 0 THEN BEGIN 395 451 good=where (kont1 ge 1,nb) 396 print,'points valides',nb452 msg = report(['iii : ' + routine + ' : points valides = ' + string(nb)]) 397 453 if (nb ne 0) then tb1fin[good]=stb1[good]/z1[good] 398 454 bad=where (kont1 eq 0,nbad) … … 400 456 if (nbad ne 0) then tb1fin[bad]=!values.f_Nan 401 457 ; print,tb1fin 402 print,'extremes du compteur',min(kont1),max(kont1) 403 404 ;toto=reform(tb1fin[*,*,0]) 405 ;plt,xxlon,yylat,toto 458 msg = report(['iii : ' + routine + ' : extremes du compteur = ' + string(min(kont1)) + ' ' + string(max(kont1))]) 459 406 460 result=idl_amsu_netcdf(numch, temp,rtemp,rhdeg, tb1fin, yylat, xxlon, jjours) 461 result_type=size(result,/type) 462 IF (result_type EQ 3) THEN BEGIN 463 IF (result NE 0) THEN BEGIN 464 msg = report(['eee : ' + routine + ' : pb idl_amsu_netcdf']) 465 ;return, result 466 STOP 467 ENDIF 468 ENDIF 407 469 ENDIF ELSE BEGIN 408 print, 'www : no files at all' 409 ENDELSE 410 470 msg = report(['www : ' + routine + 'no files at all']) 471 goto, realend 472 ENDELSE 473 474 realend: 411 475 IF key_performance EQ 1 THEN BEGIN 412 PRINT, 'ppp : durée totale cresamsu', SYSTIME(1)-time1, format='(a, 1x, F12.6)' 476 msg = report(['ppp : ' + routine $ 477 + ' : durée totale = ' $ 478 + string(SYSTIME(1)-time1, format='(a, 1x, F12.6)')]) 413 479 ENDIF 414 480 415 print,'fin cresamsu' 416 481 msg = report(['iii : ' + routine + ': fin']) 482 483 result = 0 484 return, result 417 485 end
Note: See TracChangeset
for help on using the changeset viewer.