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

Last change on this file since 364 was 353, checked in by lmdzadmin, 22 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
Line 
1c
2c $Header$
3c
4      SUBROUTINE phyetat0 (fichnom,dtime,co2_ppm,solaire,
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)
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
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)
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      LOGICAL ancien_ok
57
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
74      print*,'fichnom',fichnom
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
167
168      itau_phy = tab_cntrl(15)
169
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
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
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
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
586              xmin = MIN(albe(i,nsrf),xmin)
587              xmax = MAX(albe(i,nsrf),xmax)
588           ENDDO
589           PRINT*,'Albedo du sol ALBE**:', nsrf, xmin, xmax
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
650           PRINT*,'evap du sol EVAP**:', nsrf, xmin, xmax
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
670         PRINT*,'Evap du sol <EVAP>', xmin, xmax
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
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
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
830c Lecture de la longueur de rugosite
831c
832c
833      ierr = NF_INQ_VARID (nid, "RUG", nvarid)
834      IF (ierr.NE.NF_NOERR) THEN
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
848#ifdef NC_DOUBLE
849           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, frugs(1,nsrf))
850#else
851           ierr = NF_GET_VAR_REAL(nid, nvarid, frugs(1,nsrf))
852#endif
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
863           PRINT*,'rugosite du sol RUG**:', nsrf, xmin, xmax
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
883         PRINT*,'rugosite <RUG>', xmin, xmax
884         DO nsrf = 2, nbsrf
885         DO i = 1, klon
886            frugs(i,nsrf) = frugs(i,1)
887         ENDDO
888         ENDDO
889      ENDIF
890
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'
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
925         ENDDO
926      ELSE
927         PRINT*, 'phyetat0: Le champ <AGESNO> est present'
928         PRINT*, '          J ignore donc les autres AGESNO**'
929#ifdef NC_DOUBLE
930         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, agesno(1,1))
931#else
932         ierr = NF_GET_VAR_REAL(nid, nvarid, agesno(1,1))
933#endif
934         IF (ierr.NE.NF_NOERR) THEN
935            PRINT*, "phyetat0: Lecture echouee pour <AGESNO>"
936            CALL abort
937         ENDIF
938         xmin = 1.0E+20
939         xmax = -1.0E+20
940         DO i = 1, klon
941            xmin = MIN(agesno(i,1),xmin)
942            xmax = MAX(agesno(i,1),xmax)
943         ENDDO
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
950      ENDIF
951
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
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
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.