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

Last change on this file since 360 was 353, checked in by lmdzadmin, 23 years ago

2 changements pour les fichiers histoire:

  • utilisation de l'entree "rectilineaire" de IOIPSL pour ne plus avoir

a

lancer ncregular a chaque fois

  • le calendrier des fichiers histoire est maintenant base sur la date d'initialisation de la simulation plutot que sur la date de depart du

job

en cours

LF

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