/[lmdze]/trunk/phylmd/phyetat0.f90
ViewVC logotype

Diff of /trunk/phylmd/phyetat0.f90

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

revision 155 by guez, Wed Jul 8 17:03:45 2015 UTC revision 156 by guez, Thu Jul 16 17:39:10 2015 UTC
# Line 69  contains Line 69  contains
69      REAL fractint(klon)      REAL fractint(klon)
70      REAL xmin, xmax      REAL xmin, xmax
71      INTEGER ncid, varid, ndims      INTEGER ncid, varid, ndims
72      INTEGER ierr, i, nsrf      INTEGER ierr, i
     CHARACTER(len=2) str2  
73    
74      !---------------------------------------------------------------      !---------------------------------------------------------------
75    
# Line 166  contains Line 165  contains
165         print *, "Found only one surface type for soil temperature."         print *, "Found only one surface type for soil temperature."
166         call nf95_get_var(ncid, varid, tsol(:, 1))         call nf95_get_var(ncid, varid, tsol(:, 1))
167         tsol(:, 2:nbsrf) = spread(tsol(:, 1), dim = 2, ncopies = nbsrf - 1)         tsol(:, 2:nbsrf) = spread(tsol(:, 1), dim = 2, ncopies = nbsrf - 1)
168      end if            end if
169    
170     ! Lecture des temperatures du sol profond:      ! Lecture des temperatures du sol profond:
171    
172      call NF95_INQ_VARID(ncid, 'Tsoil', varid)      call NF95_INQ_VARID(ncid, 'Tsoil', varid)
173      call NF95_GET_VAR(ncid, varid, tsoil)      call NF95_GET_VAR(ncid, varid, tsoil)
# Line 180  contains Line 179  contains
179    
180      ! Lecture de l'humidite de l'air juste au dessus du sol:      ! Lecture de l'humidite de l'air juste au dessus du sol:
181    
182      ierr = NF90_INQ_VARID(ncid, "QS", varid)      call NF95_INQ_VARID(ncid, "QS", varid)
183      IF (ierr /= NF90_NOERR) THEN      call nf95_get_var(ncid, varid, qsurf)
184         PRINT *, 'phyetat0: Le champ <QS> est absent'      xmin = 1.0E+20
185         PRINT *, ' Mais je vais essayer de lire QS**'      xmax = -1.0E+20
186         DO nsrf = 1, nbsrf      DO i = 1, klon
187            IF (nsrf > 99) THEN         xmin = MIN(qsurf(i, 1), xmin)
188               PRINT *, "Trop de sous-mailles"         xmax = MAX(qsurf(i, 1), xmax)
189               stop 1      ENDDO
190            ENDIF      PRINT *, 'Humidite pres du sol <QS>', xmin, xmax
           WRITE(str2, '(i2.2)') nsrf  
           call NF95_INQ_VARID(ncid, "QS"//str2, varid)  
           call NF95_GET_VAR(ncid, varid, qsurf(:, nsrf))  
           xmin = 1.0E+20  
           xmax = -1.0E+20  
           DO i = 1, klon  
              xmin = MIN(qsurf(i, nsrf), xmin)  
              xmax = MAX(qsurf(i, nsrf), xmax)  
           ENDDO  
           PRINT *, 'Humidite pres du sol QS**:', nsrf, xmin, xmax  
        ENDDO  
     ELSE  
        PRINT *, 'phyetat0: Le champ <QS> est present'  
        PRINT *, ' J ignore donc les autres humidites QS**'  
        call nf95_get_var(ncid, varid, qsurf(:, 1))  
        xmin = 1.0E+20  
        xmax = -1.0E+20  
        DO i = 1, klon  
           xmin = MIN(qsurf(i, 1), xmin)  
           xmax = MAX(qsurf(i, 1), xmax)  
        ENDDO  
        PRINT *, 'Humidite pres du sol <QS>', xmin, xmax  
        DO nsrf = 2, nbsrf  
           DO i = 1, klon  
              qsurf(i, nsrf) = qsurf(i, 1)  
           ENDDO  
        ENDDO  
     ENDIF  
191    
192      ! Eau dans le sol (pour le modele de sol "bucket")      ! Eau dans le sol (pour le modele de sol "bucket")
193    
# Line 231  contains Line 202  contains
202    
203      ! Lecture de neige au sol:      ! Lecture de neige au sol:
204    
205      ierr = NF90_INQ_VARID(ncid, "SNOW", varid)      call NF95_INQ_VARID(ncid, "SNOW", varid)
206      IF (ierr /= NF90_NOERR) THEN      call nf95_get_var(ncid, varid, snow)
207         PRINT *, 'phyetat0: Le champ <SNOW> est absent'      xmin = 1.0E+20
208         PRINT *, ' Mais je vais essayer de lire SNOW**'      xmax = -1.0E+20
209         DO nsrf = 1, nbsrf      DO i = 1, klon
210            IF (nsrf > 99) THEN         xmin = MIN(snow(i, 1), xmin)
211               PRINT *, "Trop de sous-mailles"         xmax = MAX(snow(i, 1), xmax)
212               stop 1      ENDDO
213            ENDIF      PRINT *, 'Neige du sol <SNOW>', xmin, xmax
           WRITE(str2, '(i2.2)') nsrf  
           call NF95_INQ_VARID(ncid, "SNOW"//str2, varid)  
           call NF95_GET_VAR(ncid, varid, snow(:, nsrf))  
           xmin = 1.0E+20  
           xmax = -1.0E+20  
           DO i = 1, klon  
              xmin = MIN(snow(i, nsrf), xmin)  
              xmax = MAX(snow(i, nsrf), xmax)  
           ENDDO  
           PRINT *, 'Neige du sol SNOW**:', nsrf, xmin, xmax  
        ENDDO  
     ELSE  
        PRINT *, 'phyetat0: Le champ <SNOW> est present'  
        PRINT *, ' J ignore donc les autres neiges SNOW**'  
        call nf95_get_var(ncid, varid, snow(:, 1))  
        xmin = 1.0E+20  
        xmax = -1.0E+20  
        DO i = 1, klon  
           xmin = MIN(snow(i, 1), xmin)  
           xmax = MAX(snow(i, 1), xmax)  
        ENDDO  
        PRINT *, 'Neige du sol <SNOW>', xmin, xmax  
        DO nsrf = 2, nbsrf  
           DO i = 1, klon  
              snow(i, nsrf) = snow(i, 1)  
           ENDDO  
        ENDDO  
     ENDIF  
214    
215      ! Lecture de albedo au sol:      ! Lecture de albedo au sol:
216    
217      ierr = NF90_INQ_VARID(ncid, "ALBE", varid)      call NF95_INQ_VARID(ncid, "ALBE", varid)
218      IF (ierr /= NF90_NOERR) THEN      call nf95_get_var(ncid, varid, albe)
219         PRINT *, 'phyetat0: Le champ <ALBE> est absent'      xmin = 1.0E+20
220         PRINT *, ' Mais je vais essayer de lire ALBE**'      xmax = -1.0E+20
221         DO nsrf = 1, nbsrf      DO i = 1, klon
222            IF (nsrf > 99) THEN         xmin = MIN(albe(i, 1), xmin)
223               PRINT *, "Trop de sous-mailles"         xmax = MAX(albe(i, 1), xmax)
224               stop 1      ENDDO
225            ENDIF      PRINT *, 'Neige du sol <ALBE>', xmin, xmax
           WRITE(str2, '(i2.2)') nsrf  
           call NF95_INQ_VARID(ncid, "ALBE"//str2, varid)  
           call NF95_GET_VAR(ncid, varid, albe(:, nsrf))  
           xmin = 1.0E+20  
           xmax = -1.0E+20  
           DO i = 1, klon  
              xmin = MIN(albe(i, nsrf), xmin)  
              xmax = MAX(albe(i, nsrf), xmax)  
           ENDDO  
           PRINT *, 'Albedo du sol ALBE**:', nsrf, xmin, xmax  
        ENDDO  
     ELSE  
        PRINT *, 'phyetat0: Le champ <ALBE> est present'  
        PRINT *, ' J ignore donc les autres ALBE**'  
        call nf95_get_var(ncid, varid, albe(:, 1))  
        xmin = 1.0E+20  
        xmax = -1.0E+20  
        DO i = 1, klon  
           xmin = MIN(albe(i, 1), xmin)  
           xmax = MAX(albe(i, 1), xmax)  
        ENDDO  
        PRINT *, 'Neige du sol <ALBE>', xmin, xmax  
        DO nsrf = 2, nbsrf  
           DO i = 1, klon  
              albe(i, nsrf) = albe(i, 1)  
           ENDDO  
        ENDDO  
     ENDIF  
226    
227      ! Lecture de evaporation:      ! Lecture de evaporation:
228    
229      ierr = NF90_INQ_VARID(ncid, "EVAP", varid)      call NF95_INQ_VARID(ncid, "EVAP", varid)
230      IF (ierr /= NF90_NOERR) THEN      call nf95_get_var(ncid, varid, evap)
231         PRINT *, 'phyetat0: Le champ <EVAP> est absent'      xmin = 1.0E+20
232         PRINT *, ' Mais je vais essayer de lire EVAP**'      xmax = -1.0E+20
233         DO nsrf = 1, nbsrf      DO i = 1, klon
234            IF (nsrf > 99) THEN         xmin = MIN(evap(i, 1), xmin)
235               PRINT *, "Trop de sous-mailles"         xmax = MAX(evap(i, 1), xmax)
236               stop 1      ENDDO
237            ENDIF      PRINT *, 'Evap du sol <EVAP>', xmin, xmax
           WRITE(str2, '(i2.2)') nsrf  
           call NF95_INQ_VARID(ncid, "EVAP"//str2, varid)  
           call NF95_GET_VAR(ncid, varid, evap(:, nsrf))  
           xmin = 1.0E+20  
           xmax = -1.0E+20  
           DO i = 1, klon  
              xmin = MIN(evap(i, nsrf), xmin)  
              xmax = MAX(evap(i, nsrf), xmax)  
           ENDDO  
           PRINT *, 'evap du sol EVAP**:', nsrf, xmin, xmax  
        ENDDO  
     ELSE  
        PRINT *, 'phyetat0: Le champ <EVAP> est present'  
        PRINT *, ' J ignore donc les autres EVAP**'  
        call nf95_get_var(ncid, varid, evap(:, 1))  
        xmin = 1.0E+20  
        xmax = -1.0E+20  
        DO i = 1, klon  
           xmin = MIN(evap(i, 1), xmin)  
           xmax = MAX(evap(i, 1), xmax)  
        ENDDO  
        PRINT *, 'Evap du sol <EVAP>', xmin, xmax  
        DO nsrf = 2, nbsrf  
           DO i = 1, klon  
              evap(i, nsrf) = evap(i, 1)  
           ENDDO  
        ENDDO  
     ENDIF  
238    
239      ! Lecture precipitation liquide:      ! Lecture precipitation liquide:
240    
# Line 428  contains Line 315  contains
315    
316      ! Lecture de la longueur de rugosite      ! Lecture de la longueur de rugosite
317    
318      ierr = NF90_INQ_VARID(ncid, "RUG", varid)      call NF95_INQ_VARID(ncid, "RUG", varid)
319      IF (ierr /= NF90_NOERR) THEN      call nf95_get_var(ncid, varid, frugs)
320         PRINT *, 'phyetat0: Le champ <RUG> est absent'      xmin = 1.0E+20
321         PRINT *, ' Mais je vais essayer de lire RUG**'      xmax = -1.0E+20
322         DO nsrf = 1, nbsrf      DO i = 1, klon
323            IF (nsrf > 99) THEN         xmin = MIN(frugs(i, 1), xmin)
324               PRINT *, "Trop de sous-mailles"         xmax = MAX(frugs(i, 1), xmax)
325               stop 1      ENDDO
326            ENDIF      PRINT *, 'rugosite <RUG>', xmin, xmax
           WRITE(str2, '(i2.2)') nsrf  
           call NF95_INQ_VARID(ncid, "RUG"//str2, varid)  
           call NF95_GET_VAR(ncid, varid, frugs(:, nsrf))  
           xmin = 1.0E+20  
           xmax = -1.0E+20  
           DO i = 1, klon  
              xmin = MIN(frugs(i, nsrf), xmin)  
              xmax = MAX(frugs(i, nsrf), xmax)  
           ENDDO  
           PRINT *, 'rugosite du sol RUG**:', nsrf, xmin, xmax  
        ENDDO  
     ELSE  
        PRINT *, 'phyetat0: Le champ <RUG> est present'  
        PRINT *, ' J ignore donc les autres RUG**'  
        call nf95_get_var(ncid, varid, frugs(:, 1))  
        xmin = 1.0E+20  
        xmax = -1.0E+20  
        DO i = 1, klon  
           xmin = MIN(frugs(i, 1), xmin)  
           xmax = MAX(frugs(i, 1), xmax)  
        ENDDO  
        PRINT *, 'rugosite <RUG>', xmin, xmax  
        DO nsrf = 2, nbsrf  
           DO i = 1, klon  
              frugs(i, nsrf) = frugs(i, 1)  
           ENDDO  
        ENDDO  
     ENDIF  
327    
328      ! Lecture de l'age de la neige:      ! Lecture de l'age de la neige:
329    
330      ierr = NF90_INQ_VARID(ncid, "AGESNO", varid)      call NF95_INQ_VARID(ncid, "AGESNO", varid)
331      IF (ierr /= NF90_NOERR) THEN      call nf95_get_var(ncid, varid, agesno)
332         PRINT *, 'phyetat0: Le champ <AGESNO> est absent'      xmin = 1.0E+20
333         PRINT *, ' Mais je vais essayer de lire AGESNO**'      xmax = -1.0E+20
334         DO nsrf = 1, nbsrf      DO i = 1, klon
335            IF (nsrf > 99) THEN         xmin = MIN(agesno(i, 1), xmin)
336               PRINT *, "Trop de sous-mailles"         xmax = MAX(agesno(i, 1), xmax)
337               stop 1      ENDDO
338            ENDIF      PRINT *, 'Age de la neige <AGESNO>', xmin, xmax
           WRITE(str2, '(i2.2)') nsrf  
           ierr = NF90_INQ_VARID(ncid, "AGESNO"//str2, varid)  
           IF (ierr /= NF90_NOERR) THEN  
              PRINT *, "phyetat0: Le champ <AGESNO"//str2//"> est absent"  
              agesno = 50.0  
           ENDIF  
           call NF95_GET_VAR(ncid, varid, agesno(:, nsrf))  
           xmin = 1.0E+20  
           xmax = -1.0E+20  
           DO i = 1, klon  
              xmin = MIN(agesno(i, nsrf), xmin)  
              xmax = MAX(agesno(i, nsrf), xmax)  
           ENDDO  
           PRINT *, 'Age de la neige AGESNO**:', nsrf, xmin, xmax  
        ENDDO  
     ELSE  
        PRINT *, 'phyetat0: Le champ <AGESNO> est present'  
        PRINT *, ' J ignore donc les autres AGESNO**'  
        call nf95_get_var(ncid, varid, agesno(:, 1))  
        xmin = 1.0E+20  
        xmax = -1.0E+20  
        DO i = 1, klon  
           xmin = MIN(agesno(i, 1), xmin)  
           xmax = MAX(agesno(i, 1), xmax)  
        ENDDO  
        PRINT *, 'Age de la neige <AGESNO>', xmin, xmax  
        DO nsrf = 2, nbsrf  
           DO i = 1, klon  
              agesno(i, nsrf) = agesno(i, 1)  
           ENDDO  
        ENDDO  
     ENDIF  
339    
340      call NF95_INQ_VARID(ncid, "ZMEA", varid)      call NF95_INQ_VARID(ncid, "ZMEA", varid)
341      call NF95_GET_VAR(ncid, varid, zmea)      call NF95_GET_VAR(ncid, varid, zmea)

Legend:
Removed from v.155  
changed lines
  Added in v.156

  ViewVC Help
Powered by ViewVC 1.1.21