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

Last change on this file since 395 was 373, checked in by lmdzadmin, 22 years ago

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