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

Last change on this file since 456 was 442, checked in by lmdzadmin, 22 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
RevLine 
[353]1c
2c $Header$
3c
[433]4      SUBROUTINE phyetat0 (fichnom,dtime,co2_ppm_etat0,solaire_etat0,
[442]5     .            rlat,rlon, pctsrf, tsol,tsoil,deltat,qsurf,qsol,snow,
[98]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)
[433]27      REAL co2_ppm_etat0
28      REAL solaire_etat0
[2]29      REAL tsol(klon,nbsrf)
30      REAL tsoil(klon,nsoilmx,nbsrf)
31      REAL deltat(klon)
[442]32      REAL qsurf(klon,nbsrf)
33      REAL qsol(klon)
[2]34      REAL snow(klon,nbsrf)
[98]35      REAL albe(klon,nbsrf)
36      REAL evap(klon,nbsrf)
[2]37      REAL radsol(klon)
[98]38      REAL rain_fall(klon)
39      REAL snow_fall(klon)
40      REAL sollw(klon)
41      real solsw(klon)
[151]42      real fder(klon)
[112]43      REAL frugs(klon,nbsrf)
[353]44      REAL agesno(klon,nbsrf)
[2]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)
[98]53      REAL pctsrf(klon, nbsrf)
54      REAL fractint(klon)
[2]55
[45]56      REAL t_ancien(klon,klev), q_ancien(klon,klev)
[373]57      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)
[45]58      LOGICAL ancien_ok
59
[2]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
[98]76      print*,'fichnom',fichnom
[2]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)
[433]148         co2_ppm_etat0      = tab_cntrl(3)
149         solaire_etat0      = tab_cntrl(4)
[2]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
[353]169
170      itau_phy = tab_cntrl(15)
171
[2]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
[98]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
[2]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
[442]439c Lecture de l'humidite de l'air juste au dessus du sol:
[2]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
[442]457           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsurf(1,nsrf))
[2]458#else
[442]459           ierr = NF_GET_VAR_REAL(nid, nvarid, qsurf(1,nsrf))
[2]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
[442]468              xmin = MIN(qsurf(i,nsrf),xmin)
469              xmax = MAX(qsurf(i,nsrf),xmax)
[2]470           ENDDO
[442]471           PRINT*,'Humidite pres du sol QS**:', nsrf, xmin, xmax
[2]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
[442]477         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsurf(1,1))
[2]478#else
[442]479         ierr = NF_GET_VAR_REAL(nid, nvarid, qsurf(1,1))
[2]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
[442]488            xmin = MIN(qsurf(i,1),xmin)
489            xmax = MAX(qsurf(i,1),xmax)
[2]490         ENDDO
[442]491         PRINT*,'Humidite pres du sol <QS>', xmin, xmax
[2]492         DO nsrf = 2, nbsrf
493         DO i = 1, klon
[442]494            qsurf(i,nsrf) = qsurf(i,1)
[2]495         ENDDO
496         ENDDO
497      ENDIF
[442]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
[2]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
[98]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
[123]615              xmin = MIN(albe(i,nsrf),xmin)
616              xmax = MAX(albe(i,nsrf),xmax)
[98]617           ENDDO
[123]618           PRINT*,'Albedo du sol ALBE**:', nsrf, xmin, xmax
[98]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
[112]679           PRINT*,'evap du sol EVAP**:', nsrf, xmin, xmax
[98]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
[112]699         PRINT*,'Evap du sol <EVAP>', xmin, xmax
[98]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
[151]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
[2]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
[112]859c Lecture de la longueur de rugosite
[2]860c
[112]861c
862      ierr = NF_INQ_VARID (nid, "RUG", nvarid)
[2]863      IF (ierr.NE.NF_NOERR) THEN
[112]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
[2]877#ifdef NC_DOUBLE
[112]878           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, frugs(1,nsrf))
[2]879#else
[112]880           ierr = NF_GET_VAR_REAL(nid, nvarid, frugs(1,nsrf))
[2]881#endif
[112]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
[151]892           PRINT*,'rugosite du sol RUG**:', nsrf, xmin, xmax
[112]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
[353]912         PRINT*,'rugosite <RUG>', xmin, xmax
[112]913         DO nsrf = 2, nbsrf
914         DO i = 1, klon
915            frugs(i,nsrf) = frugs(i,1)
916         ENDDO
917         ENDDO
[2]918      ENDIF
[112]919
[2]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'
[353]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
[2]954         ENDDO
955      ELSE
[353]956         PRINT*, 'phyetat0: Le champ <AGESNO> est present'
957         PRINT*, '          J ignore donc les autres AGESNO**'
[2]958#ifdef NC_DOUBLE
[353]959         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, agesno(1,1))
[2]960#else
[353]961         ierr = NF_GET_VAR_REAL(nid, nvarid, agesno(1,1))
[2]962#endif
963         IF (ierr.NE.NF_NOERR) THEN
[353]964            PRINT*, "phyetat0: Lecture echouee pour <AGESNO>"
[2]965            CALL abort
966         ENDIF
967         xmin = 1.0E+20
968         xmax = -1.0E+20
969         DO i = 1, klon
[353]970            xmin = MIN(agesno(i,1),xmin)
971            xmax = MAX(agesno(i,1),xmax)
[2]972         ENDDO
[353]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
[2]979      ENDIF
[353]980
[2]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
[45]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
[373]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
[2]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.