Changeset 95


Ignore:
Timestamp:
Mar 16, 2011, 5:46:35 PM (14 years ago)
Author:
aslmd
Message:

LMD_MM_MARS: corrections bugs API et map_uvt pour graphiques

Location:
trunk/mesoscale
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/mesoscale/LMD_MM_MARS/SRC/POSTPROC/api.F90

    r87 r95  
    4848      ! MARS CONSTANTS
    4949      !
    50       REAL, PARAMETER :: Rd  = 192.     ! gas constant m2 s-2 K-1
    51       REAL, PARAMETER :: Cp  = 844.6    ! r= 8.314511E+0*1000.E+0/mugaz
    52       !REAL, PARAMETER :: Rd  = 191.0
    53       !REAL, PARAMETER :: Cp  = 744.5
     50      !REAL, PARAMETER :: Rd  = 192.     ! gas constant m2 s-2 K-1
     51      !REAL, PARAMETER :: Cp  = 844.6    ! r= 8.314511E+0*1000.E+0/mugaz
     52      REAL, PARAMETER :: Rd  = 191.0
     53      REAL, PARAMETER :: Cp  = 744.5
    5454      REAL, PARAMETER :: RCP = Rd/Cp
    5555      REAL, PARAMETER :: p0  = 610.
     
    377377              dvalj(j) = num_metgrid_levels
    378378        ELSE IF ( LINLOG .eq. 3 ) THEN
    379               dnamej(j) = 'altitude'
     379              dnamej(j) = 'bottom_top' !'altitude'
    380380              dvalj(j) = num_metgrid_levels
    381381        ELSE
    382               dnamej(j) = 'altitude_abg'
     382              dnamej(j) = 'bottom_top' !'altitude_abg'
    383383              dvalj(j) = num_metgrid_levels
    384384        ENDIF
     
    752752                 IF ( test_dim_name == 'bottom_top_stag' ) fix_meta_stag = .TRUE.
    753753                 IF (LINLOG .le. 2) test_dim_name = 'pressure'
    754                  IF (LINLOG .eq. 3) test_dim_name = 'altitude'
    755                  IF (LINLOG .eq. 4) test_dim_name = 'altitude_abg'
     754                 IF (LINLOG .eq. 3) test_dim_name = 'bottom_top' !'altitude'
     755                 IF (LINLOG .eq. 4) test_dim_name = 'bottom_top' !'altitude_abg'
    756756                 interpolate = .TRUE.
    757757            ENDIF
     
    929929                                        IF ( ii == 2 ) test_dim_name = 'south_north'
    930930                                        IF (( ii == 3 ) .and. (LINLOG .le. 2))  test_dim_name = 'pressure'
    931                                         IF (( ii == 3 ) .and. (LINLOG .eq. 3))  test_dim_name = 'altitude'
    932                                         IF (( ii == 3 ) .and. (LINLOG .eq. 4))  test_dim_name = 'altitude_abg'
     931                                        IF (( ii == 3 ) .and. (LINLOG .eq. 3))  test_dim_name = 'bottom_top' !'altitude'
     932                                        IF (( ii == 3 ) .and. (LINLOG .eq. 4))  test_dim_name = 'bottom_top' !'altitude_abg'
    933933                                        IF ( ii == 4 ) test_dim_name = 'Time'
    934934                                        DO jj = 1,j
  • trunk/mesoscale/PLOT/SPEC/MAP/map_uvt.pro

    r91 r95  
    99SPAWN, '\rm param_plot.idl ; cp map_uvt_inc.pro param_plot.idl ; cp -f map_uvt_inc.pro '+save_ps+'.map_uvt_inc.pro'
    1010if (n_elements(coord2d) eq 0) then coord2d='false'
     11if (n_elements(overvector_x) eq 0) then overvector_x = 1  ;; initialisation (!! map_uvt_inc.pro utilise dans map_uvt et map_latlon)
    1112;
    1213;
     
    1415if (n_elements(field1) ne 0) then getcdf, file=filename, charvar=field1, invar=cfield1
    1516if (n_elements(field2) ne 0) then getcdf, file=filename, charvar=field2, invar=cfield2
    16 if ( (n_elements(overvector_x) ne 0) or (n_elements(field1) eq 0) ) then begin
    17    u = getget(filename, 'Um', count=[0,0,1,1], offset=[0,0,nlevel,0])
    18    v = getget(filename, 'Vm', count=[0,0,1,1], offset=[0,0,nlevel,0])
     17if ( ( overvector_x ne 0 ) or ( n_elements(field1) eq 0 ) ) then begin
     18   u = getget(filename, 'Um', count=[0,0,1,0], offset=[0,0,nlevel,0])
     19   v = getget(filename, 'Vm', count=[0,0,1,0], offset=[0,0,nlevel,0])
     20   help, u
    1921endif
    2022getcdf, file=filename, charvar='XLONG', invar=longi
     
    3335        if (no3d ne 'true') then cfield2 = cfield2 (sp:nx-sp-1,sp:ny-sp-1,*,*) else cfield2 = cfield2 (sp:nx-sp-1,sp:ny-sp-1,*)
    3436endif
    35 if ( (n_elements(overvector_x) ne 0) or (n_elements(field1) eq 0) ) then begin
    36   u             = u             (sp:nx-sp-1,sp:ny-sp-1,*)
    37   v             = v             (sp:nx-sp-1,sp:ny-sp-1,*)
     37if ( ( overvector_x ne 0 ) or ( n_elements(field1) eq 0 ) ) then begin
     38  u             = reform (u             (sp:nx-sp-1,sp:ny-sp-1,0,*) )
     39  v             = reform (v             (sp:nx-sp-1,sp:ny-sp-1,0,*) )
    3840endif
    3941longi           = longi         (sp:nx-sp-1,sp:ny-sp-1,*)
     
    4345ny = n_elements(longi(0,*,0))
    4446nt = n_elements(longi(0,0,*))
    45 if ( n_elements( overvector_x ) ne 0 ) then begin 
     47if ( overvector_x ne 0 ) then begin 
    4648  overvector_x = u
    4749  overvector_y = v
     
    5860                endelse
    5961                for ntime = ntstart,ntend do begin
     62help, u
    6063;
    6164;
     
    8083endif else begin
    8184        if (no3d ne 'true') then what_I_plot = reform(cfield1(*,*,nlevel,ntime)) else what_I_plot = reform(cfield1(*,*,ntime))
    82         if (n_elements(u) ne 0) then overvector_x = reform(overvector_x(*,*,ntime))   ;; ne pas utiliser test overvector_x a cause de la boucle temps
    83         if (n_elements(v) ne 0) then overvector_y = reform(overvector_y(*,*,ntime))   ;; ne pas utiliser test overvector_y a cause de la boucle temps
     85        if (n_elements(u) ne 0) then overvector_x = reform(u(*,*,ntime))   ;; ne pas utiliser test overvector_x a cause de la boucle temps
     86        if (n_elements(v) ne 0) then overvector_y = reform(v(*,*,ntime))   ;; ne pas utiliser test overvector_y a cause de la boucle temps
    8487endelse
    8588if (n_elements(field2) eq 0) then begin
     
    106109  minlat=min(lat) & maxlat=max(lat) & minlon=min(lon) & maxlon=max(lon)
    107110  if (coord2d eq 'true') then begin
    108         npoints=n_elements(lon(*,0)) + n_elements(lon(0,*))  ;; trop de points, mais au moins on ne perd rien
    109         TRIANGULATE, lon, lat, tr
    110         what_I_plot  = GRIDDATA( lon, lat, what_I_plot,  /LINEAR, triangles=tr, dimension=npoints, MISSING=!VALUES.F_NAN )
    111         if (n_elements(overvector_x) ne 0) then begin
    112           overvector_x = GRIDDATA( lon, lat, overvector_x, /LINEAR, triangles=tr, dimension=npoints, MISSING=!VALUES.F_NAN )
    113           overvector_y = GRIDDATA( lon, lat, overvector_y, /LINEAR, triangles=tr, dimension=npoints, MISSING=!VALUES.F_NAN )
    114         endif
    115         overcontour  = GRIDDATA( lon, lat, overcontour,  /LINEAR, triangles=tr, dimension=npoints, MISSING=!VALUES.F_NAN )
    116                         if (n_elements(overvector_x) ne 0) then begin
    117                           ; sale sale sale
    118                           if (minlat lt min(lat(*,0))) then overvector_y=-overvector_y
    119                           if (minlon lt min(lon(0,*))) then overvector_x=-overvector_x
    120                         endif
    121         lon =  minlon + (maxlon - minlon)*findgen(npoints)/float(npoints-1)
    122         lat =  minlat + (maxlat - minlat)*findgen(npoints)/float(npoints-1)
     111        ;;;; CECI EST DESORMAIS FAIT DANS MAP_LATLON 
     112        ;;npoints=n_elements(lon(*,0)) + n_elements(lon(0,*))  ;; trop de points, mais au moins on ne perd rien
     113        ;;TRIANGULATE, lon, lat, tr
     114        ;;what_I_plot  = GRIDDATA( lon, lat, what_I_plot,  /LINEAR, triangles=tr, dimension=npoints, MISSING=!VALUES.F_NAN )
     115        ;;if ( overvector_x ne 0 ) then begin
     116        ;;  overvector_x = GRIDDATA( lon, lat, overvector_x, /LINEAR, triangles=tr, dimension=npoints, MISSING=!VALUES.F_NAN )
     117        ;;  overvector_y = GRIDDATA( lon, lat, overvector_y, /LINEAR, triangles=tr, dimension=npoints, MISSING=!VALUES.F_NAN )
     118        ;;endif
     119        ;;overcontour  = GRIDDATA( lon, lat, overcontour,  /LINEAR, triangles=tr, dimension=npoints, MISSING=!VALUES.F_NAN )
     120        ;;                if ( overvector_x ne 0 ) then begin
     121        ;;                ; sale sale sale
     122        ;;                if (minlat lt min(lat(*,0))) then overvector_y=-overvector_y
     123        ;;                if (minlon lt min(lon(0,*))) then overvector_x=-overvector_x
     124        ;;                endif
     125        ;;lon =  minlon + (maxlon - minlon)*findgen(npoints)/float(npoints-1)
     126        ;;lat =  minlat + (maxlat - minlat)*findgen(npoints)/float(npoints-1)
    123127  endif else begin
    124128        lon = reform(lon(*,0))
    125129        lat = reform(lat(0,*))
    126         ;npoints=n_elements(lon(*,0)) + n_elements(lon(0,*))
    127         ;what_I_plot = REBIN( what_I_plot, npoints, npoints )
    128         ;overvector_x = REBIN( overvector_x, npoints, npoints )
    129         ;overvector_y = REBIN( overvector_y, npoints, npoints )
    130         ;overcontour = REBIN( overcontour, npoints, npoints )
    131         ;lon =  minlon + (maxlon - minlon)*findgen(npoints)/float(npoints-1)
    132         ;lat =  minlat + (maxlat - minlat)*findgen(npoints)/float(npoints-1)
     130        ;;npoints=n_elements(lon(*,0)) + n_elements(lon(0,*))
     131        ;;what_I_plot = REBIN( what_I_plot, npoints, npoints )
     132        ;;overvector_x = REBIN( overvector_x, npoints, npoints )
     133        ;;overvector_y = REBIN( overvector_y, npoints, npoints )
     134        ;;overcontour = REBIN( overcontour, npoints, npoints )
     135        ;;lon =  minlon + (maxlon - minlon)*findgen(npoints)/float(npoints-1)
     136        ;;lat =  minlat + (maxlat - minlat)*findgen(npoints)/float(npoints-1)
     137                ;lon = findgen( n_elements(what_I_plot(*,0)) )
     138                ;lat = findgen( n_elements(what_I_plot(0,*)) )
     139                ;print, 'ATTENTION!!!! NOUS SOMMES BIEN D ACCORD QUE VOUS NE CHARGEZ PAS UMET et VMET ??'
    133140  endelse
     141                        ;;;;; trouve dans polar_uv.pro
     142                        ;;if (coord2d eq 'regular') then begin ;; carte avec mercator
     143                        ;;      lon = reform(lon(*,0))
     144                        ;;      lat = reform(lat(0,*))
     145                        ;;endif
    134146endelse
    135147help, what_I_plot, lon, lat
     
    138150print, min(overcontour)
    139151print, max(overcontour)
     152print, min(overvector_x)
     153print, min(overvector_y)
    140154;
    141155;
Note: See TracChangeset for help on using the changeset viewer.