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

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

Rajout qsol JLD
IM/LF

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