Changeset 548


Ignore:
Timestamp:
05/04/12 14:01:42 (12 years ago)
Author:
lelod
Message:

merge version 543 et mine

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/cresamsu.pro

    r547 r548  
    11; docformat = 'rst' 
    22;+ 
    3 ; .. _cresamsu.pro: 
    43; 
    54; ============ 
     
    76; ============ 
    87; 
     8; .. function: cresamsu(numch, yyyyb, mmb, ddb, yyyye, mme, dde, lonmin, lonmax, latmin, latmax, temp, rtemp, rhdeg) 
    99; DESCRIPTION 
    1010; =========== 
     
    1212; programme d'interpolation avec algorithme de Cressmann 
    1313; 
     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; 
    1418; adaptation aux donnees Tb AMSU lues avec la nouvelle chaîne de lecture 
    15 ; extract_amsuab.pro 
     19; extract_amsu.pro 
    1620; correct_nadir.pro 
    1721; 
    1822; but: faire des fichiers "grilles" pour analyse statistique avec 
    1923; 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;       } 
    2048; 
    2149; EXAMPLES 
     
    3866;    rtemp=0.5 
    3967;    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); 
    4372; 
    4473; SEE ALSO 
    4574; ======== 
    4675; 
     76;  Previous step :ref:`extract_amsu.pro` (:ref:`traite_amsuab.sh`) 
    4777; :ref:`traite_amsuab.sh` 
    4878; 
    49 ; :func:`file_amsu_t2_to_mem` 
     79; Use :func:`file_amsu_t2_to_mem 
     80; :func:`idl_amsu_netcdf` 
    5081; 
    5182; TODO 
    5283; ==== 
    5384; 
    54 ; add temp,rtemp,rhdeg in example 
    5585; 
    5686; fix pb with fov_int2 and fov_int3 
     
    6090; aligner lal/lon de l'exemple sur les autres modules amsu 
    6191; 
    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;  
    7293; coding rules 
    7394; 
     
    79100; ========== 
    80101; 
    81 ;  $Id$ 
     102;  $Id:  
    82103; 
    83104;  $URL$ 
    84105; 
    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 
    87116;   * choix du rayon de Cressmann en degres et pas en km 
    88117;   * ajout d'un parametre temp (= "m" ou "e") pour choix de la plage 
     
    133162;- 
    134163 
    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 ;============================================================================================= 
     164function 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 
    142179 
    143180compile_opt idl2, strictarrsubs 
     
    150187if key_performance EQ 1 THEN BEGIN 
    151188    time1 = SYSTIME(1) 
     189ENDIF 
     190; 
     191; 
     192; Return to caller if errors 
     193ON_ERROR, 2 
     194result = -1 
     195; 
     196usage = 'result = cresamsu(numch, yyyyb, mmb, ddb, yyyye, mme, dde, lonmin, lonmax, latmin, latmax, temp, rtemp, rhdeg)' 
     197; 
     198nparam = N_PARAMS() 
     199IF (nparam NE 14) THEN BEGIN 
     200    ras = report(['Incorrect number of arguments.' $ 
     201          + '!C' $ 
     202          + 'Usage : ' + usage]) 
     203    return, result 
    152204ENDIF 
    153205; 
     
    210262hrdeb=jdeb*24 
    211263hrfin=jfin*24 
    212 print,'debut et fin', jdeb,jfin 
     264msg = report(['iii : ' + routine + ' : debut et fin = ' + string(jdeb) + ' ' + string(jfin)]) 
     265 
    213266jmax=fix((hrfin-hrdeb)/pasthor) ; valeurs de 0 a jmax 
    214267nbjour=jmax+1 
     
    233286lmax=fix((la2-la1)/pash) ; valeurs de 0 a lmax 
    234287nblat=lmax+1 
    235 print,'nb pas de temps',nbjour, ' nb lat',nblat,' nblon',nblon 
    236  
     288msg = report(['iii : ' + routine + ' : nb pas de temps = ' + string(nbjour)]) 
     289msg = report(['iii : ' + routine + ' : nb lat = ' + string(nblat)]) 
     290msg = report(['iii : ' + routine + ' : nb lon = ' + string(nblon)]) 
     291msg = report(['iii : ' + routine + ' : rayon temporel en heures' + string(rtemphor)]) 
    237292 
    238293 
     
    249304la2=max(yylat) 
    250305hrfin=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 ;----------------------------------- 
     306msg = report(['iii : ' + routine + ' : pas de temps du fichier ncdf en jours decimaux= ' + string(jjours)]) 
     307msg = report(['iii : ' + routine + ' : derniers points de la grille (lon) = ' + string(max(xxlon))]) 
     308msg = report(['iii : ' + routine + ' : derniers points de la grille (lat) = ' + string(max(yylat))]) 
     309msg = report(['iii : ' + routine + ' : derniers points de la grille (temps) = ' + string(max(hrfin))]);----------------------------------- 
    254310t=indgen(nbjour)*pasthor+hrdeb ; en heures 
    255311print,'t',t 
     
    372428               endif 
    373429            endif 
    374             ; fin test sur donnees valides (inutil normalement) 
     430            ; fin test sur donnees valides (inutile normalement) 
    375431         endfor 
    376432         ; fin lecture donnees fichier journalier 
     
    394450if nbfile GT 0 THEN BEGIN 
    395451    good=where (kont1 ge 1,nb) 
    396     print,'points valides',nb 
     452    msg = report(['iii : ' + routine + ' : points valides = ' + string(nb)]) 
    397453    if (nb ne 0) then tb1fin[good]=stb1[good]/z1[good] 
    398454    bad=where (kont1 eq 0,nbad) 
     
    400456    if (nbad ne 0) then tb1fin[bad]=!values.f_Nan 
    401457                                    ; 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 
    406460    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 
    407469ENDIF  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 
     474realend: 
    411475IF 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)')]) 
    413479ENDIF 
    414480 
    415 print,'fin cresamsu' 
    416  
     481msg = report(['iii : ' + routine + ': fin']) 
     482         
     483result = 0 
     484return, result   
    417485end 
Note: See TracChangeset for help on using the changeset viewer.