source: LMDZ.3.3/branches/rel-LF/libf/phylmd/phyetat0.F @ 467

Last change on this file since 467 was 467, checked in by lmdzadmin, 21 years ago

Modifs sur les seuils (cdrag etc...), inclusion des diagnostics ISCCP par Ionela
LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 39.9 KB
RevLine 
[353]1c
2c $Header$
3c
[433]4      SUBROUTINE phyetat0 (fichnom,dtime,co2_ppm_etat0,solaire_etat0,
[442]5     .            rlat,rlon, pctsrf, tsol,tsoil,deltat,qsurf,qsol,snow,
[467]6     .           albe, alblw, evap, rain_fall, snow_fall, solsw, sollw,
[151]7     .           fder,radsol,frugs,agesno,clesphy0,
[45]8     .           zmea,zstd,zsig,zgam,zthe,zpic,zval,rugsrel,tabcntr0,
[373]9     .           t_ancien,q_ancien,ancien_ok, rnebcon, ratqs,clwcon)
[2]10      IMPLICIT none
11c======================================================================
12c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
13c Objet: Lecture de l'etat initial pour la physique
14c======================================================================
15#include "dimensions.h"
16#include "dimphy.h"
17#include "netcdf.inc"
18#include "indicesol.h"
19#include "dimsoil.h"
20#include "clesphys.h"
[353]21#include "temps.h"
[2]22c======================================================================
23      CHARACTER*(*) fichnom
24      REAL dtime
25      INTEGER radpas
26      REAL rlat(klon), rlon(klon)
[433]27      REAL co2_ppm_etat0
28      REAL solaire_etat0
[2]29      REAL tsol(klon,nbsrf)
30      REAL tsoil(klon,nsoilmx,nbsrf)
31      REAL deltat(klon)
[442]32      REAL qsurf(klon,nbsrf)
33      REAL qsol(klon)
[2]34      REAL snow(klon,nbsrf)
[98]35      REAL albe(klon,nbsrf)
[467]36cIM BEG alblw
37      REAL alblw(klon,nbsrf)
38cIM END alblw
[98]39      REAL evap(klon,nbsrf)
[2]40      REAL radsol(klon)
[98]41      REAL rain_fall(klon)
42      REAL snow_fall(klon)
43      REAL sollw(klon)
44      real solsw(klon)
[151]45      real fder(klon)
[112]46      REAL frugs(klon,nbsrf)
[353]47      REAL agesno(klon,nbsrf)
[2]48      REAL zmea(klon)
49      REAL zstd(klon)
50      REAL zsig(klon)
51      REAL zgam(klon)
52      REAL zthe(klon)
53      REAL zpic(klon)
54      REAL zval(klon)
55      REAL rugsrel(klon)
[98]56      REAL pctsrf(klon, nbsrf)
57      REAL fractint(klon)
[2]58
[45]59      REAL t_ancien(klon,klev), q_ancien(klon,klev)
[373]60      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)
[45]61      LOGICAL ancien_ok
62
[2]63      INTEGER        longcles
64      PARAMETER    ( longcles = 20 )
65      REAL clesphy0( longcles )
66c
67      REAL xmin, xmax
68c
69      INTEGER nid, nvarid
70      INTEGER ierr, i, nsrf, isoil
71      INTEGER length
72      PARAMETER (length=100)
73      REAL tab_cntrl(length), tabcntr0(length)
74      CHARACTER*7 str7
75      CHARACTER*2 str2
76c
77c Ouvrir le fichier contenant l'etat initial:
78c
[98]79      print*,'fichnom',fichnom
[2]80      ierr = NF_OPEN (fichnom, NF_NOWRITE,nid)
81      IF (ierr.NE.NF_NOERR) THEN
82        write(6,*)' Pb d''ouverture du fichier '//fichnom
83        write(6,*)' ierr = ', ierr
84        CALL ABORT
85      ENDIF
86c
87c Lecture des parametres de controle:
88c
89      ierr = NF_INQ_VARID (nid, "controle", nvarid)
90      IF (ierr.NE.NF_NOERR) THEN
91         PRINT*, 'phyetat0: Le champ <controle> est absent'
92         CALL abort
93      ENDIF
94#ifdef NC_DOUBLE
95      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tab_cntrl)
96#else
97      ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl)
98#endif
99      IF (ierr.NE.NF_NOERR) THEN
100         PRINT*, 'phyetat0: Lecture echouee pour <controle>'
101         CALL abort
102      ELSE
103c
104         DO i = 1, length
105           tabcntr0( i ) = tab_cntrl( i )
106         ENDDO
107c
108         cycle_diurne   = .FALSE.
109         soil_model     = .FALSE.
110         new_oliq       = .FALSE.
111         ok_orodr       = .FALSE.
112         ok_orolf       = .FALSE.
113         ok_limitvrai   = .FALSE.
114
115
116         IF( clesphy0(1).NE.tab_cntrl( 5 ) )  THEN
117             tab_cntrl( 5 ) = clesphy0(1)
118         ENDIF
119
120         IF( clesphy0(2).NE.tab_cntrl( 6 ) )  THEN
121             tab_cntrl( 6 ) = clesphy0(2)
122         ENDIF
123
124         IF( clesphy0(3).NE.tab_cntrl( 7 ) )  THEN
125             tab_cntrl( 7 ) = clesphy0(3)
126         ENDIF
127
128         IF( clesphy0(4).NE.tab_cntrl( 8 ) )  THEN
129             tab_cntrl( 8 ) = clesphy0(4)
130         ENDIF
131
132         IF( clesphy0(5).NE.tab_cntrl( 9 ) )  THEN
133             tab_cntrl( 9 ) = clesphy0( 5 )
134         ENDIF
135
136         IF( clesphy0(6).NE.tab_cntrl( 10 ) )  THEN
137             tab_cntrl( 10 ) = clesphy0( 6 )
138         ENDIF
139
140         IF( clesphy0(7).NE.tab_cntrl( 11 ) )  THEN
141             tab_cntrl( 11 ) = clesphy0( 7 )
142         ENDIF
143
144         IF( clesphy0(8).NE.tab_cntrl( 12 ) )  THEN
145             tab_cntrl( 12 ) = clesphy0( 8 )
146         ENDIF
147
148
149         dtime        = tab_cntrl(1)
150         radpas       = tab_cntrl(2)
[433]151         co2_ppm_etat0      = tab_cntrl(3)
152         solaire_etat0      = tab_cntrl(4)
[2]153         iflag_con    = tab_cntrl(5)
154         nbapp_rad    = tab_cntrl(6)
155
156
157         cycle_diurne    = .FALSE.
158         soil_model      = .FALSE.
159         new_oliq        = .FALSE.
160         ok_orodr        = .FALSE.
161         ok_orolf        = .FALSE.
162         ok_limitvrai    = .FALSE.
163
164         IF( tab_cntrl( 7) .EQ. 1. )    cycle_diurne  = .TRUE.
165         IF( tab_cntrl( 8) .EQ. 1. )       soil_model = .TRUE.
166         IF( tab_cntrl( 9) .EQ. 1. )         new_oliq = .TRUE.
167         IF( tab_cntrl(10) .EQ. 1. )         ok_orodr = .TRUE.
168         IF( tab_cntrl(11) .EQ. 1. )         ok_orolf = .TRUE.
169         IF( tab_cntrl(12) .EQ. 1. )     ok_limitvrai = .TRUE.
170
171      ENDIF
[353]172
173      itau_phy = tab_cntrl(15)
174
[2]175c
176c Lecture des latitudes (coordonnees):
177c
178      ierr = NF_INQ_VARID (nid, "latitude", nvarid)
179      IF (ierr.NE.NF_NOERR) THEN
180         PRINT*, 'phyetat0: Le champ <latitude> est absent'
181         CALL abort
182      ENDIF
183#ifdef NC_DOUBLE
184      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlat)
185#else
186      ierr = NF_GET_VAR_REAL(nid, nvarid, rlat)
187#endif
188      IF (ierr.NE.NF_NOERR) THEN
189         PRINT*, 'phyetat0: Lecture echouee pour <latitude>'
190         CALL abort
191      ENDIF
192c
193c Lecture des longitudes (coordonnees):
194c
195      ierr = NF_INQ_VARID (nid, "longitude", nvarid)
196      IF (ierr.NE.NF_NOERR) THEN
197         PRINT*, 'phyetat0: Le champ <longitude> est absent'
198         CALL abort
199      ENDIF
200#ifdef NC_DOUBLE
201      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlon)
202#else
203      ierr = NF_GET_VAR_REAL(nid, nvarid, rlon)
204#endif
205      IF (ierr.NE.NF_NOERR) THEN
206         PRINT*, 'phyetat0: Lecture echouee pour <latitude>'
207         CALL abort
208      ENDIF
[98]209C
210C
211C Lecture du masque terre mer
212C
213      ierr = NF_INQ_VARID (nid, "masque", nvarid)
214      IF (ierr .EQ.  NF_NOERR) THEN
215#ifdef NC_DOUBLE
216          ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zmasq)
217#else
218          ierr = NF_GET_VAR_REAL(nid, nvarid, zmasq)
219#endif
220          IF (ierr.NE.NF_NOERR) THEN
221              PRINT*, 'phyetat0: Lecture echouee pour <masque>'
222              CALL abort
223          ENDIF
224      else
225          PRINT*, 'phyetat0: Le champ <masque> est absent'
226          PRINT*, 'fichier startphy non compatible avec phyetat0'
227C      CALL abort
228      ENDIF
229C Lecture des fractions pour chaque sous-surface
230C
231C initialisation des sous-surfaces
232C
233      pctsrf = 0.
234C
235C fraction de terre
236C
237      ierr = NF_INQ_VARID (nid, "FTER", nvarid)
238      IF (ierr .EQ.  NF_NOERR) THEN
239#ifdef NC_DOUBLE
240          ierr = NF_GET_VAR_DOUBLE(nid, nvarid, pctsrf(1 : klon,is_ter))
241#else
242          ierr = NF_GET_VAR_REAL(nid, nvarid, pctsrf(1 : klon,is_ter))
243#endif
244          IF (ierr.NE.NF_NOERR) THEN
245              PRINT*, 'phyetat0: Lecture echouee pour <FTER>'
246              CALL abort
247          ENDIF
248      else
249          PRINT*, 'phyetat0: Le champ <FTER> est absent'
250c$$$         CALL abort
251      ENDIF
252C
253C fraction de glace de terre
254C
255      ierr = NF_INQ_VARID (nid, "FLIC", nvarid)
256      IF (ierr .EQ.  NF_NOERR) THEN
257#ifdef NC_DOUBLE
258          ierr = NF_GET_VAR_DOUBLE(nid, nvarid, pctsrf(1 : klon,is_lic))
259#else
260          ierr = NF_GET_VAR_REAL(nid, nvarid, pctsrf(1 : klon,is_lic))
261#endif
262          IF (ierr.NE.NF_NOERR) THEN
263              PRINT*, 'phyetat0: Lecture echouee pour <FLIC>'
264              CALL abort
265          ENDIF
266      else
267          PRINT*, 'phyetat0: Le champ <FLIC> est absent'
268c$$$         CALL abort
269      ENDIF
270C
271C fraction d'ocean
272C
273      ierr = NF_INQ_VARID (nid, "FOCE", nvarid)
274      IF (ierr .EQ.  NF_NOERR) THEN
275#ifdef NC_DOUBLE
276          ierr = NF_GET_VAR_DOUBLE(nid, nvarid, pctsrf(1 : klon,is_oce))
277#else
278          ierr = NF_GET_VAR_REAL(nid, nvarid, pctsrf(1 : klon,is_oce))
279#endif
280          IF (ierr.NE.NF_NOERR) THEN
281              PRINT*, 'phyetat0: Lecture echouee pour <FOCE>'
282              CALL abort
283          ENDIF
284      else
285          PRINT*, 'phyetat0: Le champ <FOCE> est absent'
286c$$$         CALL abort
287      ENDIF
288C
289C fraction glace de mer
290C
291      ierr = NF_INQ_VARID (nid, "FSIC", nvarid)
292      IF (ierr .EQ.  NF_NOERR) THEN
293#ifdef NC_DOUBLE
294          ierr = NF_GET_VAR_DOUBLE(nid, nvarid, pctsrf(1 : klon,is_sic))
295#else
296          ierr = NF_GET_VAR_REAL(nid, nvarid, pctsrf(1 : klon, is_sic))
297#endif
298          IF (ierr.NE.NF_NOERR) THEN
299              PRINT*, 'phyetat0: Lecture echouee pour <FSIC>'
300              CALL abort
301          ENDIF
302      else
303          PRINT*, 'phyetat0: Le champ <FSIC> est absent'
304c$$$         CALL abort
305      ENDIF
306C
307C  Verification de l'adequation entre le masque et les sous-surfaces
308C
309      fractint( 1 : klon) = pctsrf(1 : klon, is_ter)
310     $    + pctsrf(1 : klon, is_lic)
311      DO i = 1 , klon
312        IF ( abs(fractint(i) - zmasq(i) ) .GT. EPSFRA ) THEN
313            WRITE(*,*) 'phyetat0: attention fraction terre pas ',
314     $          'coherente ', i, zmasq(i), pctsrf(i, is_ter)
315     $          ,pctsrf(i, is_lic)
316        ENDIF
317      END DO
318      fractint (1 : klon) =  pctsrf(1 : klon, is_oce)
319     $    + pctsrf(1 : klon, is_sic)
320      DO i = 1 , klon
321        IF ( abs( fractint(i) - (1. - zmasq(i))) .GT. EPSFRA ) THEN
322            WRITE(*,*) 'phyetat0 attention fraction ocean pas ',
323     $          'coherente ', i, zmasq(i) , pctsrf(i, is_oce)
324     $          ,pctsrf(i, is_sic)
325        ENDIF
326      END DO
327C
[2]328c Lecture des temperatures du sol:
329c
330      ierr = NF_INQ_VARID (nid, "TS", nvarid)
331      IF (ierr.NE.NF_NOERR) THEN
332         PRINT*, 'phyetat0: Le champ <TS> est absent'
333         PRINT*, '          Mais je vais essayer de lire TS**'
334         DO nsrf = 1, nbsrf
335           IF (nsrf.GT.99) THEN
336             PRINT*, "Trop de sous-mailles"
337             CALL abort
338           ENDIF
339           WRITE(str2,'(i2.2)') nsrf
340           ierr = NF_INQ_VARID (nid, "TS"//str2, nvarid)
341           IF (ierr.NE.NF_NOERR) THEN
342              PRINT*, "phyetat0: Le champ <TS"//str2//"> est absent"
343              CALL abort
344           ENDIF
345#ifdef NC_DOUBLE
346           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tsol(1,nsrf))
347#else
348           ierr = NF_GET_VAR_REAL(nid, nvarid, tsol(1,nsrf))
349#endif
350           IF (ierr.NE.NF_NOERR) THEN
351             PRINT*, "phyetat0: Lecture echouee pour <TS"//str2//">"
352             CALL abort
353           ENDIF
354           xmin = 1.0E+20
355           xmax = -1.0E+20
356           DO i = 1, klon
357              xmin = MIN(tsol(i,nsrf),xmin)
358              xmax = MAX(tsol(i,nsrf),xmax)
359           ENDDO
360           PRINT*,'Temperature du sol TS**:', nsrf, xmin, xmax
361         ENDDO
362      ELSE
363         PRINT*, 'phyetat0: Le champ <TS> est present'
364         PRINT*, '          J ignore donc les autres temperatures TS**'
365#ifdef NC_DOUBLE
366         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tsol(1,1))
367#else
368         ierr = NF_GET_VAR_REAL(nid, nvarid, tsol(1,1))
369#endif
370         IF (ierr.NE.NF_NOERR) THEN
371            PRINT*, "phyetat0: Lecture echouee pour <TS>"
372            CALL abort
373         ENDIF
374         xmin = 1.0E+20
375         xmax = -1.0E+20
376         DO i = 1, klon
377            xmin = MIN(tsol(i,1),xmin)
378            xmax = MAX(tsol(i,1),xmax)
379         ENDDO
380         PRINT*,'Temperature du sol <TS>', xmin, xmax
381         DO nsrf = 2, nbsrf
382         DO i = 1, klon
383            tsol(i,nsrf) = tsol(i,1)
384         ENDDO
385         ENDDO
386      ENDIF
387c
388c Lecture des temperatures du sol profond:
389c
390      DO nsrf = 1, nbsrf
391      DO isoil=1, nsoilmx
392      IF (isoil.GT.99 .AND. nsrf.GT.99) THEN
393         PRINT*, "Trop de couches ou sous-mailles"
394         CALL abort
395      ENDIF
396      WRITE(str7,'(i2.2,"srf",i2.2)') isoil, nsrf
397      ierr = NF_INQ_VARID (nid, 'Tsoil'//str7, nvarid)
398      IF (ierr.NE.NF_NOERR) THEN
399         PRINT*, "phyetat0: Le champ <Tsoil"//str7//"> est absent"
400         PRINT*, "          Il prend donc la valeur de surface"
401         DO i=1, klon
402             tsoil(i,isoil,nsrf)=tsol(i,nsrf)
403         ENDDO
404      ELSE
405#ifdef NC_DOUBLE
406         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tsoil(1,isoil,nsrf))
407#else
408         ierr = NF_GET_VAR_REAL(nid, nvarid, tsoil(1,isoil,nsrf))
409#endif
410         IF (ierr.NE.NF_NOERR) THEN
411            PRINT*, "Lecture echouee pour <Tsoil"//str7//">"
412            CALL abort
413         ENDIF
414      ENDIF
415      ENDDO
416      ENDDO
417c
418c Lecture de deltat (pour slab ocean seulement):
419c
420      ierr = NF_INQ_VARID (nid, "DELTAT", nvarid)
421      IF (ierr.NE.NF_NOERR) THEN
422         PRINT*, "phyetat0: Le champ <DELTAT> est absent"
423         CALL abort
424      ENDIF
425#ifdef NC_DOUBLE
426      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, deltat)
427#else
428      ierr = NF_GET_VAR_REAL(nid, nvarid, deltat)
429#endif
430      IF (ierr.NE.NF_NOERR) THEN
431         PRINT*, "phyetat0: Lecture echouee pour <DELTAT>"
432         CALL abort
433      ENDIF
434      xmin = 1.0E+20
435      xmax = -1.0E+20
436      DO i = 1, klon
437         xmin = MIN(deltat(i),xmin)
438         xmax = MAX(deltat(i),xmax)
439      ENDDO
440      PRINT*,'Ecart de la SST deltat:', xmin, xmax
441c
[442]442c Lecture de l'humidite de l'air juste au dessus du sol:
[2]443c
444      ierr = NF_INQ_VARID (nid, "QS", nvarid)
445      IF (ierr.NE.NF_NOERR) THEN
446         PRINT*, 'phyetat0: Le champ <QS> est absent'
447         PRINT*, '          Mais je vais essayer de lire QS**'
448         DO nsrf = 1, nbsrf
449           IF (nsrf.GT.99) THEN
450             PRINT*, "Trop de sous-mailles"
451             CALL abort
452           ENDIF
453           WRITE(str2,'(i2.2)') nsrf
454           ierr = NF_INQ_VARID (nid, "QS"//str2, nvarid)
455           IF (ierr.NE.NF_NOERR) THEN
456              PRINT*, "phyetat0: Le champ <QS"//str2//"> est absent"
457              CALL abort
458           ENDIF
459#ifdef NC_DOUBLE
[442]460           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsurf(1,nsrf))
[2]461#else
[442]462           ierr = NF_GET_VAR_REAL(nid, nvarid, qsurf(1,nsrf))
[2]463#endif
464           IF (ierr.NE.NF_NOERR) THEN
465             PRINT*, "phyetat0: Lecture echouee pour <QS"//str2//">"
466             CALL abort
467           ENDIF
468           xmin = 1.0E+20
469           xmax = -1.0E+20
470           DO i = 1, klon
[442]471              xmin = MIN(qsurf(i,nsrf),xmin)
472              xmax = MAX(qsurf(i,nsrf),xmax)
[2]473           ENDDO
[442]474           PRINT*,'Humidite pres du sol QS**:', nsrf, xmin, xmax
[2]475         ENDDO
476      ELSE
477         PRINT*, 'phyetat0: Le champ <QS> est present'
478         PRINT*, '          J ignore donc les autres humidites QS**'
479#ifdef NC_DOUBLE
[442]480         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsurf(1,1))
[2]481#else
[442]482         ierr = NF_GET_VAR_REAL(nid, nvarid, qsurf(1,1))
[2]483#endif
484         IF (ierr.NE.NF_NOERR) THEN
485            PRINT*, "phyetat0: Lecture echouee pour <QS>"
486            CALL abort
487         ENDIF
488         xmin = 1.0E+20
489         xmax = -1.0E+20
490         DO i = 1, klon
[442]491            xmin = MIN(qsurf(i,1),xmin)
492            xmax = MAX(qsurf(i,1),xmax)
[2]493         ENDDO
[442]494         PRINT*,'Humidite pres du sol <QS>', xmin, xmax
[2]495         DO nsrf = 2, nbsrf
496         DO i = 1, klon
[442]497            qsurf(i,nsrf) = qsurf(i,1)
[2]498         ENDDO
499         ENDDO
500      ENDIF
[442]501C
502C Eau dans le sol (pour le modele de sol "bucket")
503C
504      ierr = NF_INQ_VARID (nid, "QSOL", nvarid)
505      IF (ierr .EQ.  NF_NOERR) THEN
506#ifdef NC_DOUBLE
507          ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsol)
508#else
509          ierr = NF_GET_VAR_REAL(nid, nvarid, qsol)
510#endif
511          IF (ierr.NE.NF_NOERR) THEN
512              PRINT*, 'phyetat0: Lecture echouee pour <QSOL>'
513              CALL abort
514          ENDIF
515      else
516          PRINT*, 'phyetat0: Le champ <QSOL> est absent'
517          PRINT*, '          Valeur par defaut nulle'
518          qsol(:)=0.
519c$$$         CALL abort
520      ENDIF
521      xmin = 1.0E+20
522      xmax = -1.0E+20
523      DO i = 1, klon
524        xmin = MIN(qsol(i),xmin)
525        xmax = MAX(qsol(i),xmax)
526      ENDDO
527      PRINT*,'Eau dans le sol (mm) <QSOL>', xmin, xmax
[2]528c
529c Lecture de neige au sol:
530c
531      ierr = NF_INQ_VARID (nid, "SNOW", nvarid)
532      IF (ierr.NE.NF_NOERR) THEN
533         PRINT*, 'phyetat0: Le champ <SNOW> est absent'
534         PRINT*, '          Mais je vais essayer de lire SNOW**'
535         DO nsrf = 1, nbsrf
536           IF (nsrf.GT.99) THEN
537             PRINT*, "Trop de sous-mailles"
538             CALL abort
539           ENDIF
540           WRITE(str2,'(i2.2)') nsrf
541           ierr = NF_INQ_VARID (nid, "SNOW"//str2, nvarid)
542           IF (ierr.NE.NF_NOERR) THEN
543              PRINT*, "phyetat0: Le champ <SNOW"//str2//"> est absent"
544              CALL abort
545           ENDIF
546#ifdef NC_DOUBLE
547           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, snow(1,nsrf))
548#else
549           ierr = NF_GET_VAR_REAL(nid, nvarid, snow(1,nsrf))
550#endif
551           IF (ierr.NE.NF_NOERR) THEN
552             PRINT*, "phyetat0: Lecture echouee pour <SNOW"//str2//">"
553             CALL abort
554           ENDIF
555           xmin = 1.0E+20
556           xmax = -1.0E+20
557           DO i = 1, klon
558              xmin = MIN(snow(i,nsrf),xmin)
559              xmax = MAX(snow(i,nsrf),xmax)
560           ENDDO
561           PRINT*,'Neige du sol SNOW**:', nsrf, xmin, xmax
562         ENDDO
563      ELSE
564         PRINT*, 'phyetat0: Le champ <SNOW> est present'
565         PRINT*, '          J ignore donc les autres neiges SNOW**'
566#ifdef NC_DOUBLE
567         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, snow(1,1))
568#else
569         ierr = NF_GET_VAR_REAL(nid, nvarid, snow(1,1))
570#endif
571         IF (ierr.NE.NF_NOERR) THEN
572            PRINT*, "phyetat0: Lecture echouee pour <SNOW>"
573            CALL abort
574         ENDIF
575         xmin = 1.0E+20
576         xmax = -1.0E+20
577         DO i = 1, klon
578            xmin = MIN(snow(i,1),xmin)
579            xmax = MAX(snow(i,1),xmax)
580         ENDDO
581         PRINT*,'Neige du sol <SNOW>', xmin, xmax
582         DO nsrf = 2, nbsrf
583         DO i = 1, klon
584            snow(i,nsrf) = snow(i,1)
585         ENDDO
586         ENDDO
587      ENDIF
588c
[98]589c Lecture de albedo au sol:
590c
591      ierr = NF_INQ_VARID (nid, "ALBE", nvarid)
592      IF (ierr.NE.NF_NOERR) THEN
593         PRINT*, 'phyetat0: Le champ <ALBE> est absent'
594         PRINT*, '          Mais je vais essayer de lire ALBE**'
595         DO nsrf = 1, nbsrf
596           IF (nsrf.GT.99) THEN
597             PRINT*, "Trop de sous-mailles"
598             CALL abort
599           ENDIF
600           WRITE(str2,'(i2.2)') nsrf
601           ierr = NF_INQ_VARID (nid, "ALBE"//str2, nvarid)
602           IF (ierr.NE.NF_NOERR) THEN
603              PRINT*, "phyetat0: Le champ <ALBE"//str2//"> est absent"
604              CALL abort
605           ENDIF
606#ifdef NC_DOUBLE
607           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, albe(1,nsrf))
608#else
609           ierr = NF_GET_VAR_REAL(nid, nvarid, albe(1,nsrf))
610#endif
611           IF (ierr.NE.NF_NOERR) THEN
612             PRINT*, "phyetat0: Lecture echouee pour <ALBE"//str2//">"
613             CALL abort
614           ENDIF
615           xmin = 1.0E+20
616           xmax = -1.0E+20
617           DO i = 1, klon
[123]618              xmin = MIN(albe(i,nsrf),xmin)
619              xmax = MAX(albe(i,nsrf),xmax)
[98]620           ENDDO
[123]621           PRINT*,'Albedo du sol ALBE**:', nsrf, xmin, xmax
[98]622         ENDDO
623      ELSE
624         PRINT*, 'phyetat0: Le champ <ALBE> est present'
625         PRINT*, '          J ignore donc les autres ALBE**'
626#ifdef NC_DOUBLE
627         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, albe(1,1))
628#else
629         ierr = NF_GET_VAR_REAL(nid, nvarid, albe(1,1))
630#endif
631         IF (ierr.NE.NF_NOERR) THEN
632            PRINT*, "phyetat0: Lecture echouee pour <ALBE>"
633            CALL abort
634         ENDIF
635         xmin = 1.0E+20
636         xmax = -1.0E+20
637         DO i = 1, klon
638            xmin = MIN(albe(i,1),xmin)
639            xmax = MAX(albe(i,1),xmax)
640         ENDDO
641         PRINT*,'Neige du sol <ALBE>', xmin, xmax
642         DO nsrf = 2, nbsrf
643         DO i = 1, klon
644            albe(i,nsrf) = albe(i,1)
645         ENDDO
646         ENDDO
647      ENDIF
648
649c
[467]650cIM BEG alblw
651c Lecture de albedo au sol LW:
652c
653      ierr = NF_INQ_VARID (nid, "ALBLW", nvarid)
654      IF (ierr.NE.NF_NOERR) THEN
655         PRINT*, 'phyetat0: Le champ <ALBLW> est absent'
656c        PRINT*, '          Mais je vais essayer de lire ALBLW**'
657         PRINT*, '          Mais je vais prendre ALBE**'
658         DO nsrf = 1, nbsrf
659           DO i = 1, klon
660             alblw(i,nsrf) = albe(i,nsrf)
661           ENDDO
662         ENDDO
663c          IF (nsrf.GT.99) THEN
664c            PRINT*, "Trop de sous-mailles"
665c            CALL abort
666c          ENDIF
667c          WRITE(str2,'(i2.2)') nsrf
668c          ierr = NF_INQ_VARID (nid, "ALBLW"//str2, nvarid)
669c           IF (ierr.NE.NF_NOERR) THEN
670c             PRINT*, "phyetat0: Le champ <ALBLW"//str2//"> est absent"
671c             CALL abort
672c          ENDIF
673c#ifdef NC_DOUBLE
674c           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, alblw(1,nsrf))
675c#else
676c           ierr = NF_GET_VAR_REAL(nid, nvarid, alblw(1,nsrf))
677c#endif
678c          IF (ierr.NE.NF_NOERR) THEN
679c            PRINT*, "phyetat0: Lecture echouee pour <ALBLW"//str2//">"
680c            CALL abort
681c          ENDIF
682c          xmin = 1.0E+20
683c          xmax = -1.0E+20
684c          DO i = 1, klon
685c             xmin = MIN(alblw(i,nsrf),xmin)
686c             xmax = MAX(alblw(i,nsrf),xmax)
687c          ENDDO
688c          PRINT*,'Albedo du sol ALBLW**:', nsrf, xmin, xmax
689c        ENDDO
690      ELSE
691         PRINT*, 'phyetat0: Le champ <ALBLW> est present'
692         PRINT*, '          J ignore donc les autres ALBLW**'
693#ifdef NC_DOUBLE
694         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, alblw(1,1))
695#else
696         ierr = NF_GET_VAR_REAL(nid, nvarid, alblw(1,1))
697#endif
698         IF (ierr.NE.NF_NOERR) THEN
699            PRINT*, "phyetat0: Lecture echouee pour <ALBLW>"
700            CALL abort
701         ENDIF
702         xmin = 1.0E+20
703         xmax = -1.0E+20
704         DO i = 1, klon
705            xmin = MIN(alblw(i,1),xmin)
706            xmax = MAX(alblw(i,1),xmax)
707         ENDDO
708         PRINT*,'Neige du sol <ALBLW>', xmin, xmax
709         DO nsrf = 2, nbsrf
710         DO i = 1, klon
711            alblw(i,nsrf) = alblw(i,1)
712         ENDDO
713         ENDDO
714      ENDIF
715
716cIM END alblw
717
718c
[98]719c Lecture de evaporation: 
720c
721      ierr = NF_INQ_VARID (nid, "EVAP", nvarid)
722      IF (ierr.NE.NF_NOERR) THEN
723         PRINT*, 'phyetat0: Le champ <EVAP> est absent'
724         PRINT*, '          Mais je vais essayer de lire EVAP**'
725         DO nsrf = 1, nbsrf
726           IF (nsrf.GT.99) THEN
727             PRINT*, "Trop de sous-mailles"
728             CALL abort
729           ENDIF
730           WRITE(str2,'(i2.2)') nsrf
731           ierr = NF_INQ_VARID (nid, "EVAP"//str2, nvarid)
732           IF (ierr.NE.NF_NOERR) THEN
733              PRINT*, "phyetat0: Le champ <EVAP"//str2//"> est absent"
734              CALL abort
735           ENDIF
736#ifdef NC_DOUBLE
737           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, evap(1,nsrf))
738#else
739           ierr = NF_GET_VAR_REAL(nid, nvarid, evap(1,nsrf))
740#endif
741           IF (ierr.NE.NF_NOERR) THEN
742             PRINT*, "phyetat0: Lecture echouee pour <EVAP"//str2//">"
743             CALL abort
744           ENDIF
745           xmin = 1.0E+20
746           xmax = -1.0E+20
747           DO i = 1, klon
748              xmin = MIN(evap(i,nsrf),xmin)
749              xmax = MAX(evap(i,nsrf),xmax)
750           ENDDO
[112]751           PRINT*,'evap du sol EVAP**:', nsrf, xmin, xmax
[98]752         ENDDO
753      ELSE
754         PRINT*, 'phyetat0: Le champ <EVAP> est present'
755         PRINT*, '          J ignore donc les autres EVAP**'
756#ifdef NC_DOUBLE
757         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, evap(1,1))
758#else
759         ierr = NF_GET_VAR_REAL(nid, nvarid, evap(1,1))
760#endif
761         IF (ierr.NE.NF_NOERR) THEN
762            PRINT*, "phyetat0: Lecture echouee pour <EVAP>"
763            CALL abort
764         ENDIF
765         xmin = 1.0E+20
766         xmax = -1.0E+20
767         DO i = 1, klon
768            xmin = MIN(evap(i,1),xmin)
769            xmax = MAX(evap(i,1),xmax)
770         ENDDO
[112]771         PRINT*,'Evap du sol <EVAP>', xmin, xmax
[98]772         DO nsrf = 2, nbsrf
773         DO i = 1, klon
774            evap(i,nsrf) = evap(i,1)
775         ENDDO
776         ENDDO
777      ENDIF
778c
779c Lecture precipitation liquide:
780c
781      ierr = NF_INQ_VARID (nid, "rain_f", nvarid)
782      IF (ierr.NE.NF_NOERR) THEN
783         PRINT*, 'phyetat0: Le champ <rain_f> est absent'
784         CALL abort
785      ENDIF
786#ifdef NC_DOUBLE
787      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rain_fall)
788#else
789      ierr = NF_GET_VAR_REAL(nid, nvarid, rain_fall)
790#endif
791      IF (ierr.NE.NF_NOERR) THEN
792         PRINT*, 'phyetat0: Lecture echouee pour <rain_f>'
793         CALL abort
794      ENDIF
795      xmin = 1.0E+20
796      xmax = -1.0E+20
797      DO i = 1, klon
798         xmin = MIN(rain_fall(i),xmin)
799         xmax = MAX(rain_fall(i),xmax)
800      ENDDO
801      PRINT*,'Precipitation liquide rain_f:', xmin, xmax
802c
803c Lecture precipitation solide:
804c
805      ierr = NF_INQ_VARID (nid, "snow_f", nvarid)
806      IF (ierr.NE.NF_NOERR) THEN
807         PRINT*, 'phyetat0: Le champ <snow_f> est absent'
808         CALL abort
809      ENDIF
810#ifdef NC_DOUBLE
811      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, snow_fall)
812#else
813      ierr = NF_GET_VAR_REAL(nid, nvarid, snow_fall)
814#endif
815      IF (ierr.NE.NF_NOERR) THEN
816         PRINT*, 'phyetat0: Lecture echouee pour <snow_f>'
817         CALL abort
818      ENDIF
819      xmin = 1.0E+20
820      xmax = -1.0E+20
821      DO i = 1, klon
822         xmin = MIN(snow_fall(i),xmin)
823         xmax = MAX(snow_fall(i),xmax)
824      ENDDO
825      PRINT*,'Precipitation solide snow_f:', xmin, xmax
826c
827c Lecture rayonnement solaire au sol:
828c
829      ierr = NF_INQ_VARID (nid, "solsw", nvarid)
830      IF (ierr.NE.NF_NOERR) THEN
831         PRINT*, 'phyetat0: Le champ <solsw> est absent'
832         PRINT*, 'mis a zero'
833         solsw = 0.
834      ELSE
835#ifdef NC_DOUBLE
836        ierr = NF_GET_VAR_DOUBLE(nid, nvarid, solsw)
837#else
838        ierr = NF_GET_VAR_REAL(nid, nvarid, solsw)
839#endif
840        IF (ierr.NE.NF_NOERR) THEN
841          PRINT*, 'phyetat0: Lecture echouee pour <solsw>'
842          CALL abort
843        ENDIF
844      ENDIF
845      xmin = 1.0E+20
846      xmax = -1.0E+20
847      DO i = 1, klon
848         xmin = MIN(solsw(i),xmin)
849         xmax = MAX(solsw(i),xmax)
850      ENDDO
851      PRINT*,'Rayonnement solaire au sol solsw:', xmin, xmax
852c
853c Lecture rayonnement IF au sol:
854c
855      ierr = NF_INQ_VARID (nid, "sollw", nvarid)
856      IF (ierr.NE.NF_NOERR) THEN
857         PRINT*, 'phyetat0: Le champ <sollw> est absent'
858         PRINT*, 'mis a zero'
859         sollw = 0.
860      ELSE
861#ifdef NC_DOUBLE
862        ierr = NF_GET_VAR_DOUBLE(nid, nvarid, sollw)
863#else
864        ierr = NF_GET_VAR_REAL(nid, nvarid, sollw)
865#endif
866        IF (ierr.NE.NF_NOERR) THEN
867          PRINT*, 'phyetat0: Lecture echouee pour <sollw>'
868          CALL abort
869        ENDIF
870      ENDIF
871      xmin = 1.0E+20
872      xmax = -1.0E+20
873      DO i = 1, klon
874         xmin = MIN(sollw(i),xmin)
875         xmax = MAX(sollw(i),xmax)
876      ENDDO
877      PRINT*,'Rayonnement IF au sol sollw:', xmin, xmax
878
879c
[151]880c Lecture derive des flux:
881c
882      ierr = NF_INQ_VARID (nid, "fder", nvarid)
883      IF (ierr.NE.NF_NOERR) THEN
884         PRINT*, 'phyetat0: Le champ <fder> est absent'
885         PRINT*, 'mis a zero'
886         fder = 0.
887      ELSE
888#ifdef NC_DOUBLE
889        ierr = NF_GET_VAR_DOUBLE(nid, nvarid, fder)
890#else
891        ierr = NF_GET_VAR_REAL(nid, nvarid, fder)
892#endif
893        IF (ierr.NE.NF_NOERR) THEN
894          PRINT*, 'phyetat0: Lecture echouee pour <fder>'
895          CALL abort
896        ENDIF
897      ENDIF
898      xmin = 1.0E+20
899      xmax = -1.0E+20
900      DO i = 1, klon
901         xmin = MIN(fder(i),xmin)
902         xmax = MAX(fder(i),xmax)
903      ENDDO
904      PRINT*,'Derive des flux fder:', xmin, xmax
905
906c
[2]907c Lecture du rayonnement net au sol:
908c
909      ierr = NF_INQ_VARID (nid, "RADS", nvarid)
910      IF (ierr.NE.NF_NOERR) THEN
911         PRINT*, 'phyetat0: Le champ <RADS> est absent'
912         CALL abort
913      ENDIF
914#ifdef NC_DOUBLE
915      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, radsol)
916#else
917      ierr = NF_GET_VAR_REAL(nid, nvarid, radsol)
918#endif
919      IF (ierr.NE.NF_NOERR) THEN
920         PRINT*, 'phyetat0: Lecture echouee pour <RADS>'
921         CALL abort
922      ENDIF
923      xmin = 1.0E+20
924      xmax = -1.0E+20
925      DO i = 1, klon
926         xmin = MIN(radsol(i),xmin)
927         xmax = MAX(radsol(i),xmax)
928      ENDDO
929      PRINT*,'Rayonnement net au sol radsol:', xmin, xmax
930c
[112]931c Lecture de la longueur de rugosite
[2]932c
[112]933c
934      ierr = NF_INQ_VARID (nid, "RUG", nvarid)
[2]935      IF (ierr.NE.NF_NOERR) THEN
[112]936         PRINT*, 'phyetat0: Le champ <RUG> est absent'
937         PRINT*, '          Mais je vais essayer de lire RUG**'
938         DO nsrf = 1, nbsrf
939           IF (nsrf.GT.99) THEN
940             PRINT*, "Trop de sous-mailles"
941             CALL abort
942           ENDIF
943           WRITE(str2,'(i2.2)') nsrf
944           ierr = NF_INQ_VARID (nid, "RUG"//str2, nvarid)
945           IF (ierr.NE.NF_NOERR) THEN
946              PRINT*, "phyetat0: Le champ <RUG"//str2//"> est absent"
947              CALL abort
948           ENDIF
[2]949#ifdef NC_DOUBLE
[112]950           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, frugs(1,nsrf))
[2]951#else
[112]952           ierr = NF_GET_VAR_REAL(nid, nvarid, frugs(1,nsrf))
[2]953#endif
[112]954           IF (ierr.NE.NF_NOERR) THEN
955             PRINT*, "phyetat0: Lecture echouee pour <RUG"//str2//">"
956             CALL abort
957           ENDIF
958           xmin = 1.0E+20
959           xmax = -1.0E+20
960           DO i = 1, klon
961              xmin = MIN(frugs(i,nsrf),xmin)
962              xmax = MAX(frugs(i,nsrf),xmax)
963           ENDDO
[151]964           PRINT*,'rugosite du sol RUG**:', nsrf, xmin, xmax
[112]965         ENDDO
966      ELSE
967         PRINT*, 'phyetat0: Le champ <RUG> est present'
968         PRINT*, '          J ignore donc les autres RUG**'
969#ifdef NC_DOUBLE
970         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, frugs(1,1))
971#else
972         ierr = NF_GET_VAR_REAL(nid, nvarid, frugs(1,1))
973#endif
974         IF (ierr.NE.NF_NOERR) THEN
975            PRINT*, "phyetat0: Lecture echouee pour <RUG>"
976            CALL abort
977         ENDIF
978         xmin = 1.0E+20
979         xmax = -1.0E+20
980         DO i = 1, klon
981            xmin = MIN(frugs(i,1),xmin)
982            xmax = MAX(frugs(i,1),xmax)
983         ENDDO
[353]984         PRINT*,'rugosite <RUG>', xmin, xmax
[112]985         DO nsrf = 2, nbsrf
986         DO i = 1, klon
987            frugs(i,nsrf) = frugs(i,1)
988         ENDDO
989         ENDDO
[2]990      ENDIF
[112]991
[2]992c
993c Lecture de l'age de la neige:
994c
995      ierr = NF_INQ_VARID (nid, "AGESNO", nvarid)
996      IF (ierr.NE.NF_NOERR) THEN
997         PRINT*, 'phyetat0: Le champ <AGESNO> est absent'
[353]998         PRINT*, '          Mais je vais essayer de lire AGESNO**'
999         DO nsrf = 1, nbsrf
1000           IF (nsrf.GT.99) THEN
1001             PRINT*, "Trop de sous-mailles"
1002             CALL abort
1003           ENDIF
1004           WRITE(str2,'(i2.2)') nsrf
1005           ierr = NF_INQ_VARID (nid, "AGESNO"//str2, nvarid)
1006           IF (ierr.NE.NF_NOERR) THEN
1007              PRINT*, "phyetat0: Le champ <AGESNO"//str2//"> est absent"
1008              agesno = 50.0
1009           ENDIF
1010#ifdef NC_DOUBLE
1011           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, agesno(1,nsrf))
1012#else
1013           ierr = NF_GET_VAR_REAL(nid, nvarid, agesno(1,nsrf))
1014#endif
1015           IF (ierr.NE.NF_NOERR) THEN
1016             PRINT*, "phyetat0: Lecture echouee pour <AGESNO"//str2//">"
1017             CALL abort
1018           ENDIF
1019           xmin = 1.0E+20
1020           xmax = -1.0E+20
1021           DO i = 1, klon
1022              xmin = MIN(agesno(i,nsrf),xmin)
1023              xmax = MAX(agesno(i,nsrf),xmax)
1024           ENDDO
1025           PRINT*,'Age de la neige AGESNO**:', nsrf, xmin, xmax
[2]1026         ENDDO
1027      ELSE
[353]1028         PRINT*, 'phyetat0: Le champ <AGESNO> est present'
1029         PRINT*, '          J ignore donc les autres AGESNO**'
[2]1030#ifdef NC_DOUBLE
[353]1031         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, agesno(1,1))
[2]1032#else
[353]1033         ierr = NF_GET_VAR_REAL(nid, nvarid, agesno(1,1))
[2]1034#endif
1035         IF (ierr.NE.NF_NOERR) THEN
[353]1036            PRINT*, "phyetat0: Lecture echouee pour <AGESNO>"
[2]1037            CALL abort
1038         ENDIF
1039         xmin = 1.0E+20
1040         xmax = -1.0E+20
1041         DO i = 1, klon
[353]1042            xmin = MIN(agesno(i,1),xmin)
1043            xmax = MAX(agesno(i,1),xmax)
[2]1044         ENDDO
[353]1045         PRINT*,'Age de la neige <AGESNO>', xmin, xmax
1046         DO nsrf = 2, nbsrf
1047         DO i = 1, klon
1048            agesno(i,nsrf) = agesno(i,1)
1049         ENDDO
1050         ENDDO
[2]1051      ENDIF
[353]1052
[2]1053c
1054      ierr = NF_INQ_VARID (nid, "ZMEA", nvarid)
1055      IF (ierr.NE.NF_NOERR) THEN
1056         PRINT*, 'phyetat0: Le champ <ZMEA> est absent'
1057         CALL abort
1058      ENDIF
1059#ifdef NC_DOUBLE
1060      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zmea)
1061#else
1062      ierr = NF_GET_VAR_REAL(nid, nvarid, zmea)
1063#endif
1064      IF (ierr.NE.NF_NOERR) THEN
1065         PRINT*, 'phyetat0: Lecture echouee pour <ZMEA>'
1066         CALL abort
1067      ENDIF
1068      xmin = 1.0E+20
1069      xmax = -1.0E+20
1070      DO i = 1, klon
1071         xmin = MIN(zmea(i),xmin)
1072         xmax = MAX(zmea(i),xmax)
1073      ENDDO
1074      PRINT*,'OROGRAPHIE SOUS-MAILLE zmea:', xmin, xmax
1075c
1076c
1077      ierr = NF_INQ_VARID (nid, "ZSTD", nvarid)
1078      IF (ierr.NE.NF_NOERR) THEN
1079         PRINT*, 'phyetat0: Le champ <ZSTD> est absent'
1080         CALL abort
1081      ENDIF
1082#ifdef NC_DOUBLE
1083      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zstd)
1084#else
1085      ierr = NF_GET_VAR_REAL(nid, nvarid, zstd)
1086#endif
1087      IF (ierr.NE.NF_NOERR) THEN
1088         PRINT*, 'phyetat0: Lecture echouee pour <ZSTD>'
1089         CALL abort
1090      ENDIF
1091      xmin = 1.0E+20
1092      xmax = -1.0E+20
1093      DO i = 1, klon
1094         xmin = MIN(zstd(i),xmin)
1095         xmax = MAX(zstd(i),xmax)
1096      ENDDO
1097      PRINT*,'OROGRAPHIE SOUS-MAILLE zstd:', xmin, xmax
1098c
1099c
1100      ierr = NF_INQ_VARID (nid, "ZSIG", nvarid)
1101      IF (ierr.NE.NF_NOERR) THEN
1102         PRINT*, 'phyetat0: Le champ <ZSIG> est absent'
1103         CALL abort
1104      ENDIF
1105#ifdef NC_DOUBLE
1106      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zsig)
1107#else
1108      ierr = NF_GET_VAR_REAL(nid, nvarid, zsig)
1109#endif
1110      IF (ierr.NE.NF_NOERR) THEN
1111         PRINT*, 'phyetat0: Lecture echouee pour <ZSIG>'
1112         CALL abort
1113      ENDIF
1114      xmin = 1.0E+20
1115      xmax = -1.0E+20
1116      DO i = 1, klon
1117         xmin = MIN(zsig(i),xmin)
1118         xmax = MAX(zsig(i),xmax)
1119      ENDDO
1120      PRINT*,'OROGRAPHIE SOUS-MAILLE zsig:', xmin, xmax
1121c
1122c
1123      ierr = NF_INQ_VARID (nid, "ZGAM", nvarid)
1124      IF (ierr.NE.NF_NOERR) THEN
1125         PRINT*, 'phyetat0: Le champ <ZGAM> est absent'
1126         CALL abort
1127      ENDIF
1128#ifdef NC_DOUBLE
1129      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zgam)
1130#else
1131      ierr = NF_GET_VAR_REAL(nid, nvarid, zgam)
1132#endif
1133      IF (ierr.NE.NF_NOERR) THEN
1134         PRINT*, 'phyetat0: Lecture echouee pour <ZGAM>'
1135         CALL abort
1136      ENDIF
1137      xmin = 1.0E+20
1138      xmax = -1.0E+20
1139      DO i = 1, klon
1140         xmin = MIN(zgam(i),xmin)
1141         xmax = MAX(zgam(i),xmax)
1142      ENDDO
1143      PRINT*,'OROGRAPHIE SOUS-MAILLE zgam:', xmin, xmax
1144c
1145c
1146      ierr = NF_INQ_VARID (nid, "ZTHE", nvarid)
1147      IF (ierr.NE.NF_NOERR) THEN
1148         PRINT*, 'phyetat0: Le champ <ZTHE> est absent'
1149         CALL abort
1150      ENDIF
1151#ifdef NC_DOUBLE
1152      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zthe)
1153#else
1154      ierr = NF_GET_VAR_REAL(nid, nvarid, zthe)
1155#endif
1156      IF (ierr.NE.NF_NOERR) THEN
1157         PRINT*, 'phyetat0: Lecture echouee pour <ZTHE>'
1158         CALL abort
1159      ENDIF
1160      xmin = 1.0E+20
1161      xmax = -1.0E+20
1162      DO i = 1, klon
1163         xmin = MIN(zthe(i),xmin)
1164         xmax = MAX(zthe(i),xmax)
1165      ENDDO
1166      PRINT*,'OROGRAPHIE SOUS-MAILLE zthe:', xmin, xmax
1167c
1168c
1169      ierr = NF_INQ_VARID (nid, "ZPIC", nvarid)
1170      IF (ierr.NE.NF_NOERR) THEN
1171         PRINT*, 'phyetat0: Le champ <ZPIC> est absent'
1172         CALL abort
1173      ENDIF
1174#ifdef NC_DOUBLE
1175      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zpic)
1176#else
1177      ierr = NF_GET_VAR_REAL(nid, nvarid, zpic)
1178#endif
1179      IF (ierr.NE.NF_NOERR) THEN
1180         PRINT*, 'phyetat0: Lecture echouee pour <ZPIC>'
1181         CALL abort
1182      ENDIF
1183      xmin = 1.0E+20
1184      xmax = -1.0E+20
1185      DO i = 1, klon
1186         xmin = MIN(zpic(i),xmin)
1187         xmax = MAX(zpic(i),xmax)
1188      ENDDO
1189      PRINT*,'OROGRAPHIE SOUS-MAILLE zpic:', xmin, xmax
1190c
1191      ierr = NF_INQ_VARID (nid, "ZVAL", nvarid)
1192      IF (ierr.NE.NF_NOERR) THEN
1193         PRINT*, 'phyetat0: Le champ <ZVAL> est absent'
1194         CALL abort
1195      ENDIF
1196#ifdef NC_DOUBLE
1197      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zval)
1198#else
1199      ierr = NF_GET_VAR_REAL(nid, nvarid, zval)
1200#endif
1201      IF (ierr.NE.NF_NOERR) THEN
1202         PRINT*, 'phyetat0: Lecture echouee pour <ZVAL>'
1203         CALL abort
1204      ENDIF
1205      xmin = 1.0E+20
1206      xmax = -1.0E+20
1207      DO i = 1, klon
1208         xmin = MIN(zval(i),xmin)
1209         xmax = MAX(zval(i),xmax)
1210      ENDDO
1211      PRINT*,'OROGRAPHIE SOUS-MAILLE zval:', xmin, xmax
1212c
1213c
1214      ierr = NF_INQ_VARID (nid, "RUGSREL", nvarid)
1215      IF (ierr.NE.NF_NOERR) THEN
1216         PRINT*, 'phyetat0: Le champ <RUGSREL> est absent'
1217         CALL abort
1218      ENDIF
1219#ifdef NC_DOUBLE
1220      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rugsrel)
1221#else
1222      ierr = NF_GET_VAR_REAL(nid, nvarid, rugsrel)
1223#endif
1224      IF (ierr.NE.NF_NOERR) THEN
1225         PRINT*, 'phyetat0: Lecture echouee pour <RUGSREL>'
1226         CALL abort
1227      ENDIF
1228      xmin = 1.0E+20
1229      xmax = -1.0E+20
1230      DO i = 1, klon
1231         xmin = MIN(rugsrel(i),xmin)
1232         xmax = MAX(rugsrel(i),xmax)
1233      ENDDO
1234      PRINT*,'Rugosite relief (ecart-type) rugsrel:', xmin, xmax
1235c
[45]1236c
1237      ancien_ok = .TRUE.
1238c
1239      ierr = NF_INQ_VARID (nid, "TANCIEN", nvarid)
1240      IF (ierr.NE.NF_NOERR) THEN
1241         PRINT*, "phyetat0: Le champ <TANCIEN> est absent"
1242         PRINT*, "Depart legerement fausse. Mais je continue"
1243         ancien_ok = .FALSE.
1244      ELSE
1245#ifdef NC_DOUBLE
1246         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, t_ancien)
1247#else
1248         ierr = NF_GET_VAR_REAL(nid, nvarid, t_ancien)
1249#endif
1250         IF (ierr.NE.NF_NOERR) THEN
1251            PRINT*, "phyetat0: Lecture echouee pour <TANCIEN>"
1252            CALL abort
1253         ENDIF
1254      ENDIF
1255c
1256      ierr = NF_INQ_VARID (nid, "QANCIEN", nvarid)
1257      IF (ierr.NE.NF_NOERR) THEN
1258         PRINT*, "phyetat0: Le champ <QANCIEN> est absent"
1259         PRINT*, "Depart legerement fausse. Mais je continue"
1260         ancien_ok = .FALSE.
1261      ELSE
1262#ifdef NC_DOUBLE
1263         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, q_ancien)
1264#else
1265         ierr = NF_GET_VAR_REAL(nid, nvarid, q_ancien)
1266#endif
1267         IF (ierr.NE.NF_NOERR) THEN
1268            PRINT*, "phyetat0: Lecture echouee pour <QANCIEN>"
1269            CALL abort
1270         ENDIF
1271      ENDIF
1272c
[373]1273      ierr = NF_INQ_VARID (nid, "CLWCON", nvarid)
1274      IF (ierr.NE.NF_NOERR) THEN
1275         PRINT*, "phyetat0: Le champ CLWCON est absent"
1276         PRINT*, "Depart legerement fausse. Mais je continue"
1277         clwcon = 0.
1278      ELSE
1279#ifdef NC_DOUBLE
1280         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, clwcon)
1281#else
1282         ierr = NF_GET_VAR_REAL(nid, nvarid, clwcon)
1283#endif
1284         IF (ierr.NE.NF_NOERR) THEN
1285            PRINT*, "phyetat0: Lecture echouee pour <CLWCON>"
1286            CALL abort
1287         ENDIF
1288      ENDIF
1289      xmin = 1.0E+20
1290      xmax = -1.0E+20
1291      xmin = MINval(clwcon)
1292      xmax = MAXval(clwcon)
1293      PRINT*,'Eau liquide convective (ecart-type) clwcon:', xmin, xmax
1294c
1295      ierr = NF_INQ_VARID (nid, "RNEBCON", nvarid)
1296      IF (ierr.NE.NF_NOERR) THEN
1297         PRINT*, "phyetat0: Le champ RNEBCON est absent"
1298         PRINT*, "Depart legerement fausse. Mais je continue"
1299         rnebcon = 0.
1300      ELSE
1301#ifdef NC_DOUBLE
1302         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rnebcon)
1303#else
1304         ierr = NF_GET_VAR_REAL(nid, nvarid, rnebcon)
1305#endif
1306         IF (ierr.NE.NF_NOERR) THEN
1307            PRINT*, "phyetat0: Lecture echouee pour <RNEBCON>"
1308            CALL abort
1309         ENDIF
1310      ENDIF
1311      xmin = 1.0E+20
1312      xmax = -1.0E+20
1313      xmin = MINval(rnebcon)
1314      xmax = MAXval(rnebcon)
1315      PRINT*,'Nebulosite convective (ecart-type) rnebcon:', xmin, xmax
1316
1317c
1318      ierr = NF_INQ_VARID (nid, "QANCIEN", nvarid)
1319      IF (ierr.NE.NF_NOERR) THEN
1320         PRINT*, "phyetat0: Le champ <QANCIEN> est absent"
1321         PRINT*, "Depart legerement fausse. Mais je continue"
1322         ancien_ok = .FALSE.
1323      ELSE
1324#ifdef NC_DOUBLE
1325         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, q_ancien)
1326#else
1327         ierr = NF_GET_VAR_REAL(nid, nvarid, q_ancien)
1328#endif
1329         IF (ierr.NE.NF_NOERR) THEN
1330            PRINT*, "phyetat0: Lecture echouee pour <QANCIEN>"
1331            CALL abort
1332         ENDIF
1333      ENDIF
1334c
1335      ierr = NF_INQ_VARID (nid, "RATQS", nvarid)
1336      IF (ierr.NE.NF_NOERR) THEN
1337         PRINT*, "phyetat0: Le champ <RATQS> est absent"
1338         PRINT*, "Depart legerement fausse. Mais je continue"
1339         ratqs = 0.
1340      ELSE
1341#ifdef NC_DOUBLE
1342         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, ratqs)
1343#else
1344         ierr = NF_GET_VAR_REAL(nid, nvarid, ratqs)
1345#endif
1346         IF (ierr.NE.NF_NOERR) THEN
1347            PRINT*, "phyetat0: Lecture echouee pour <RATQS>"
1348            CALL abort
1349         ENDIF
1350      ENDIF
1351      xmin = 1.0E+20
1352      xmax = -1.0E+20
1353      xmin = MINval(ratqs)
1354      xmax = MAXval(ratqs)
1355      PRINT*,'(ecart-type) ratqs:', xmin, xmax
1356c
[2]1357c Fermer le fichier:
1358c
1359      ierr = NF_CLOSE(nid)
1360c
1361      RETURN
1362      END
Note: See TracBrowser for help on using the repository browser.