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
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, alblw, 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)
36cIM BEG alblw
37      REAL alblw(klon,nbsrf)
38cIM END alblw
39      REAL evap(klon,nbsrf)
40      REAL radsol(klon)
41      REAL rain_fall(klon)
42      REAL snow_fall(klon)
43      REAL sollw(klon)
44      real solsw(klon)
45      real fder(klon)
46      REAL frugs(klon,nbsrf)
47      REAL agesno(klon,nbsrf)
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)
56      REAL pctsrf(klon, nbsrf)
57      REAL fractint(klon)
58
59      REAL t_ancien(klon,klev), q_ancien(klon,klev)
60      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)
61      LOGICAL ancien_ok
62
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
79      print*,'fichnom',fichnom
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)
151         co2_ppm_etat0      = tab_cntrl(3)
152         solaire_etat0      = tab_cntrl(4)
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
172
173      itau_phy = tab_cntrl(15)
174
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
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
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
442c Lecture de l'humidite de l'air juste au dessus du sol:
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
460           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsurf(1,nsrf))
461#else
462           ierr = NF_GET_VAR_REAL(nid, nvarid, qsurf(1,nsrf))
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
471              xmin = MIN(qsurf(i,nsrf),xmin)
472              xmax = MAX(qsurf(i,nsrf),xmax)
473           ENDDO
474           PRINT*,'Humidite pres du sol QS**:', nsrf, xmin, xmax
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
480         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsurf(1,1))
481#else
482         ierr = NF_GET_VAR_REAL(nid, nvarid, qsurf(1,1))
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
491            xmin = MIN(qsurf(i,1),xmin)
492            xmax = MAX(qsurf(i,1),xmax)
493         ENDDO
494         PRINT*,'Humidite pres du sol <QS>', xmin, xmax
495         DO nsrf = 2, nbsrf
496         DO i = 1, klon
497            qsurf(i,nsrf) = qsurf(i,1)
498         ENDDO
499         ENDDO
500      ENDIF
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
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
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
618              xmin = MIN(albe(i,nsrf),xmin)
619              xmax = MAX(albe(i,nsrf),xmax)
620           ENDDO
621           PRINT*,'Albedo du sol ALBE**:', nsrf, xmin, xmax
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
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
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
751           PRINT*,'evap du sol EVAP**:', nsrf, xmin, xmax
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
771         PRINT*,'Evap du sol <EVAP>', xmin, xmax
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
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
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
931c Lecture de la longueur de rugosite
932c
933c
934      ierr = NF_INQ_VARID (nid, "RUG", nvarid)
935      IF (ierr.NE.NF_NOERR) THEN
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
949#ifdef NC_DOUBLE
950           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, frugs(1,nsrf))
951#else
952           ierr = NF_GET_VAR_REAL(nid, nvarid, frugs(1,nsrf))
953#endif
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
964           PRINT*,'rugosite du sol RUG**:', nsrf, xmin, xmax
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
984         PRINT*,'rugosite <RUG>', xmin, xmax
985         DO nsrf = 2, nbsrf
986         DO i = 1, klon
987            frugs(i,nsrf) = frugs(i,1)
988         ENDDO
989         ENDDO
990      ENDIF
991
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'
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
1026         ENDDO
1027      ELSE
1028         PRINT*, 'phyetat0: Le champ <AGESNO> est present'
1029         PRINT*, '          J ignore donc les autres AGESNO**'
1030#ifdef NC_DOUBLE
1031         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, agesno(1,1))
1032#else
1033         ierr = NF_GET_VAR_REAL(nid, nvarid, agesno(1,1))
1034#endif
1035         IF (ierr.NE.NF_NOERR) THEN
1036            PRINT*, "phyetat0: Lecture echouee pour <AGESNO>"
1037            CALL abort
1038         ENDIF
1039         xmin = 1.0E+20
1040         xmax = -1.0E+20
1041         DO i = 1, klon
1042            xmin = MIN(agesno(i,1),xmin)
1043            xmax = MAX(agesno(i,1),xmax)
1044         ENDDO
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
1051      ENDIF
1052
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
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
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
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.