/[lmdze]/trunk/dyn3d/conf_dat3d.f
ViewVC logotype

Diff of /trunk/dyn3d/conf_dat3d.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/dyn3d/conf_dat3d.f90 revision 13 by guez, Fri Jul 25 19:59:34 2008 UTC trunk/Sources/dyn3d/conf_dat3d.f revision 134 by guez, Wed Apr 29 15:47:56 2015 UTC
# Line 14  contains Line 14  contains
14      ! que la longitude varie de - pi à pi, la latitude de pi/2 à      ! que la longitude varie de - pi à pi, la latitude de pi/2 à
15      ! - pi/2 et pour que la coordonnée pression soit décroissante.      ! - pi/2 et pour que la coordonnée pression soit décroissante.
16    
17      use comconst, only: pi      use nr_util, only: assert_eq, pi
     use numer_rec, only: assert_eq  
18    
19      REAL, intent(in):: xd(:), yd(:) ! longitudes et latitudes initiales      REAL, intent(in):: xd(:), yd(:) ! longitudes et latitudes initiales, en rad
20      REAL, intent(in):: zd(:) ! pressure levels, in Pa or hPa      REAL, intent(in):: zd(:) ! pressure levels, in Pa or hPa
21    
22      REAL, intent(out):: xf(:) ! longitude, in rad, - pi to pi      REAL, intent(out):: xf(:) ! longitude, in rad, - pi to pi
# Line 28  contains Line 27  contains
27      ! Variables locales :      ! Variables locales :
28    
29      INTEGER lons, lats, levs      INTEGER lons, lats, levs
30      LOGICAL radianlon, invlon , radianlat      LOGICAL invlon
31      REAL rlatmin, rlatmax, oldxd1      REAL rlatmin, rlatmax, oldxd1
32      INTEGER i      INTEGER i
33    
# Line 39  contains Line 38  contains
38      levs = assert_eq(size(zd), size(zf), size(champd, 3), "conf_dat3d levs")      levs = assert_eq(size(zd), size(zf), size(champd, 3), "conf_dat3d levs")
39    
40      IF (xd(1) >= - pi - 0.5 .AND. xd(lons) <=  pi + 0.5) THEN      IF (xd(1) >= - pi - 0.5 .AND. xd(lons) <=  pi + 0.5) THEN
        radianlon = .TRUE.  
41         invlon    = .FALSE.         invlon    = .FALSE.
42      ELSE IF (xd(1) >= -0.5 .AND. xd(lons) <= 2 * pi+0.5) THEN      ELSE IF (xd(1) >= -0.5 .AND. xd(lons) <= 2 * pi+0.5) THEN
        radianlon = .TRUE.  
        invlon    = .TRUE.  
     ELSE IF (xd(1) >= -180.5 .AND. xd(lons) <= 180.5) THEN  
        radianlon = .FALSE.  
        invlon    = .FALSE.  
     ELSE IF (xd(1) >= -0.5 .AND. xd(lons) <= 360.5) THEN  
        radianlon = .FALSE.  
43         invlon    = .TRUE.         invlon    = .TRUE.
44      ELSE      ELSE
45         print *, 'Problème sur les longitudes des données'         print *, 'Problème sur les longitudes des données'
# Line 58  contains Line 49  contains
49      rlatmin = MIN(yd(1), yd(lats))      rlatmin = MIN(yd(1), yd(lats))
50      rlatmax = MAX(yd(1), yd(lats))      rlatmax = MAX(yd(1), yd(lats))
51    
52      IF (rlatmin >= -pi / 2 - 0.5 .AND. rlatmax <= pi / 2 + 0.5) THEN      IF (rlatmin < -pi / 2 - 0.5 .or. rlatmax > pi / 2 + 0.5) THEN
        radianlat = .TRUE.  
     ELSE IF (rlatmin >= - 90. - 0.5 .AND. rlatmax <= 90. + 0.5) THEN  
        radianlat = .FALSE.  
     ELSE  
53         print *, ' Problème sur les latitudes des données'         print *, ' Problème sur les latitudes des données'
54         stop 1         stop 1
55      ENDIF      ENDIF
56    
57      IF (radianlon) THEN      xf(:) = xd(:)
58         xf(:) = xd(:)      yf(:) = yd(:)
     else  
        xf(:) = xd(:) * pi / 180.  
     ENDIF  
   
     IF (radianlat) THEN  
        yf(:) = yd(:)  
     else  
        yf(:) = yd(:) * pi / 180.  
     ENDIF  
59    
60      IF (invlon) THEN      IF (invlon) THEN
61         ! On tourne les longitudes pour avoir - pi  à pi         ! On tourne les longitudes pour avoir - pi  à pi

Legend:
Removed from v.13  
changed lines
  Added in v.134

  ViewVC Help
Powered by ViewVC 1.1.21