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

Last change on this file since 436 was 433, checked in by lmdzadmin, 22 years ago

Convergence avec la version de Ionela dec 2002

YOMCST.? : suppression RI0 (IM)
albedo.F : facteur 1.2 sur le nouveau calcul (IM)
clesphys.h : rajout de différentes ctes (concentration des gaz) (IM)
clmain.F : separation des flux LW, SW (JLD)

remplace qsurf par yqsol (IM)

conf_phys.F90 : rajout de différentes ctes (gaz + orbite) (IM)
convect3.F : DPINV+SIGD*0.5*(EVAP(1)+EVAP(2)) (SBL)
cv3_routines.F:
cvparam3.h : compatibilite avec conema3 TEMPORAIRE (FH)
phyetat0.F : lecture de co2_ppm et solaire pour tests de coherence
phyredem.F : co2_ppm et solaire passé en common
physiq.F : separation flux LW, SW

rajout diagnostiques (slp, w500)
suppression iflag_con = 4
clwcon0=qcondc (FH)
position dU "ENDIF ! ok_cvl"

radlwsw.F : passage des concentrations gaz dans un common (IM)

PEMIS(i) = 1.0 (JLD pour cohérence ORCHIDEE)

stdlevvar.F90 :
suphec.F : suppression init. des ctes orbitales (IM)

nouvelles E/S (ini_hist..., write_hist...)

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 36.9 KB
Line 
1c
2c $Header$
3c
4      SUBROUTINE phyetat0 (fichnom,dtime,co2_ppm_etat0,solaire_etat0,
5     .            rlat,rlon, pctsrf, tsol,tsoil,deltat,qsol,snow,
6     .           albe, evap, rain_fall, snow_fall, solsw, sollw,
7     .           fder,radsol,frugs,agesno,clesphy0,
8     .           zmea,zstd,zsig,zgam,zthe,zpic,zval,rugsrel,tabcntr0,
9     .           t_ancien,q_ancien,ancien_ok, rnebcon, ratqs,clwcon)
10      IMPLICIT none
11c======================================================================
12c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
13c Objet: Lecture de l'etat initial pour la physique
14c======================================================================
15#include "dimensions.h"
16#include "dimphy.h"
17#include "netcdf.inc"
18#include "indicesol.h"
19#include "dimsoil.h"
20#include "clesphys.h"
21#include "temps.h"
22c======================================================================
23      CHARACTER*(*) fichnom
24      REAL dtime
25      INTEGER radpas
26      REAL rlat(klon), rlon(klon)
27      REAL co2_ppm_etat0
28      REAL solaire_etat0
29      REAL tsol(klon,nbsrf)
30      REAL tsoil(klon,nsoilmx,nbsrf)
31      REAL deltat(klon)
32      REAL qsol(klon,nbsrf)
33      REAL snow(klon,nbsrf)
34      REAL albe(klon,nbsrf)
35      REAL evap(klon,nbsrf)
36      REAL radsol(klon)
37      REAL rain_fall(klon)
38      REAL snow_fall(klon)
39      REAL sollw(klon)
40      real solsw(klon)
41      real fder(klon)
42      REAL frugs(klon,nbsrf)
43      REAL agesno(klon,nbsrf)
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)
52      REAL pctsrf(klon, nbsrf)
53      REAL fractint(klon)
54
55      REAL t_ancien(klon,klev), q_ancien(klon,klev)
56      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)
57      LOGICAL ancien_ok
58
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
75      print*,'fichnom',fichnom
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_etat0      = tab_cntrl(3)
148         solaire_etat0      = 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
168
169      itau_phy = tab_cntrl(15)
170
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
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
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
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
587              xmin = MIN(albe(i,nsrf),xmin)
588              xmax = MAX(albe(i,nsrf),xmax)
589           ENDDO
590           PRINT*,'Albedo du sol ALBE**:', nsrf, xmin, xmax
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
651           PRINT*,'evap du sol EVAP**:', nsrf, xmin, xmax
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
671         PRINT*,'Evap du sol <EVAP>', xmin, xmax
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
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
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
831c Lecture de la longueur de rugosite
832c
833c
834      ierr = NF_INQ_VARID (nid, "RUG", nvarid)
835      IF (ierr.NE.NF_NOERR) THEN
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
849#ifdef NC_DOUBLE
850           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, frugs(1,nsrf))
851#else
852           ierr = NF_GET_VAR_REAL(nid, nvarid, frugs(1,nsrf))
853#endif
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
864           PRINT*,'rugosite du sol RUG**:', nsrf, xmin, xmax
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
884         PRINT*,'rugosite <RUG>', xmin, xmax
885         DO nsrf = 2, nbsrf
886         DO i = 1, klon
887            frugs(i,nsrf) = frugs(i,1)
888         ENDDO
889         ENDDO
890      ENDIF
891
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'
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
926         ENDDO
927      ELSE
928         PRINT*, 'phyetat0: Le champ <AGESNO> est present'
929         PRINT*, '          J ignore donc les autres AGESNO**'
930#ifdef NC_DOUBLE
931         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, agesno(1,1))
932#else
933         ierr = NF_GET_VAR_REAL(nid, nvarid, agesno(1,1))
934#endif
935         IF (ierr.NE.NF_NOERR) THEN
936            PRINT*, "phyetat0: Lecture echouee pour <AGESNO>"
937            CALL abort
938         ENDIF
939         xmin = 1.0E+20
940         xmax = -1.0E+20
941         DO i = 1, klon
942            xmin = MIN(agesno(i,1),xmin)
943            xmax = MAX(agesno(i,1),xmax)
944         ENDDO
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
951      ENDIF
952
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
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
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
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.