source: LMDZ.3.3/branches/LF/libf/phylmd/phyetat0.F @ 3007

Last change on this file since 3007 was 2, checked in by lmdz, 25 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 19.5 KB
Line 
1      SUBROUTINE phyetat0 (fichnom,dtime,co2_ppm,solaire,
2     .            rlat,rlon,tsol,tsoil,deltat,qsol,snow,
3     .           radsol,rugmer,agesno,clesphy0,
4     .           zmea,zstd,zsig,zgam,zthe,zpic,zval,rugsrel,tabcntr0)
5      IMPLICIT none
6c======================================================================
7c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
8c Objet: Lecture de l'etat initial pour la physique
9c======================================================================
10#include "dimensions.h"
11#include "dimphy.h"
12#include "netcdf.inc"
13#include "indicesol.h"
14#include "dimsoil.h"
15#include "clesphys.h"
16c======================================================================
17      CHARACTER*(*) fichnom
18      REAL dtime
19      INTEGER radpas
20      REAL rlat(klon), rlon(klon)
21      REAL co2_ppm
22      REAL solaire
23      REAL tsol(klon,nbsrf)
24      REAL tsoil(klon,nsoilmx,nbsrf)
25      REAL deltat(klon)
26      REAL qsol(klon,nbsrf)
27      REAL snow(klon,nbsrf)
28      REAL radsol(klon)
29      REAL rugmer(klon)
30      REAL agesno(klon)
31      REAL zmea(klon)
32      REAL zstd(klon)
33      REAL zsig(klon)
34      REAL zgam(klon)
35      REAL zthe(klon)
36      REAL zpic(klon)
37      REAL zval(klon)
38      REAL rugsrel(klon)
39
40      INTEGER        longcles
41      PARAMETER    ( longcles = 20 )
42      REAL clesphy0( longcles )
43c
44      REAL xmin, xmax
45c
46      INTEGER nid, nvarid
47      INTEGER ierr, i, nsrf, isoil
48      INTEGER length
49      PARAMETER (length=100)
50      REAL tab_cntrl(length), tabcntr0(length)
51      CHARACTER*7 str7
52      CHARACTER*2 str2
53c
54c Ouvrir le fichier contenant l'etat initial:
55c
56      ierr = NF_OPEN (fichnom, NF_NOWRITE,nid)
57      IF (ierr.NE.NF_NOERR) THEN
58        write(6,*)' Pb d''ouverture du fichier '//fichnom
59        write(6,*)' ierr = ', ierr
60        CALL ABORT
61      ENDIF
62c
63c Lecture des parametres de controle:
64c
65      ierr = NF_INQ_VARID (nid, "controle", nvarid)
66      IF (ierr.NE.NF_NOERR) THEN
67         PRINT*, 'phyetat0: Le champ <controle> est absent'
68         CALL abort
69      ENDIF
70#ifdef NC_DOUBLE
71      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tab_cntrl)
72#else
73      ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl)
74#endif
75      IF (ierr.NE.NF_NOERR) THEN
76         PRINT*, 'phyetat0: Lecture echouee pour <controle>'
77         CALL abort
78      ELSE
79c
80         DO i = 1, length
81           tabcntr0( i ) = tab_cntrl( i )
82         ENDDO
83c
84         cycle_diurne   = .FALSE.
85         soil_model     = .FALSE.
86         new_oliq       = .FALSE.
87         ok_orodr       = .FALSE.
88         ok_orolf       = .FALSE.
89         ok_limitvrai   = .FALSE.
90
91
92         IF( clesphy0(1).NE.tab_cntrl( 5 ) )  THEN
93             tab_cntrl( 5 ) = clesphy0(1)
94         ENDIF
95
96         IF( clesphy0(2).NE.tab_cntrl( 6 ) )  THEN
97             tab_cntrl( 6 ) = clesphy0(2)
98         ENDIF
99
100         IF( clesphy0(3).NE.tab_cntrl( 7 ) )  THEN
101             tab_cntrl( 7 ) = clesphy0(3)
102         ENDIF
103
104         IF( clesphy0(4).NE.tab_cntrl( 8 ) )  THEN
105             tab_cntrl( 8 ) = clesphy0(4)
106         ENDIF
107
108         IF( clesphy0(5).NE.tab_cntrl( 9 ) )  THEN
109             tab_cntrl( 9 ) = clesphy0( 5 )
110         ENDIF
111
112         IF( clesphy0(6).NE.tab_cntrl( 10 ) )  THEN
113             tab_cntrl( 10 ) = clesphy0( 6 )
114         ENDIF
115
116         IF( clesphy0(7).NE.tab_cntrl( 11 ) )  THEN
117             tab_cntrl( 11 ) = clesphy0( 7 )
118         ENDIF
119
120         IF( clesphy0(8).NE.tab_cntrl( 12 ) )  THEN
121             tab_cntrl( 12 ) = clesphy0( 8 )
122         ENDIF
123
124
125         dtime        = tab_cntrl(1)
126         radpas       = tab_cntrl(2)
127         co2_ppm      = tab_cntrl(3)
128         solaire      = tab_cntrl(4)
129         iflag_con    = tab_cntrl(5)
130         nbapp_rad    = tab_cntrl(6)
131
132
133         cycle_diurne    = .FALSE.
134         soil_model      = .FALSE.
135         new_oliq        = .FALSE.
136         ok_orodr        = .FALSE.
137         ok_orolf        = .FALSE.
138         ok_limitvrai    = .FALSE.
139
140         IF( tab_cntrl( 7) .EQ. 1. )    cycle_diurne  = .TRUE.
141         IF( tab_cntrl( 8) .EQ. 1. )       soil_model = .TRUE.
142         IF( tab_cntrl( 9) .EQ. 1. )         new_oliq = .TRUE.
143         IF( tab_cntrl(10) .EQ. 1. )         ok_orodr = .TRUE.
144         IF( tab_cntrl(11) .EQ. 1. )         ok_orolf = .TRUE.
145         IF( tab_cntrl(12) .EQ. 1. )     ok_limitvrai = .TRUE.
146
147      ENDIF
148c
149c Lecture des latitudes (coordonnees):
150c
151      ierr = NF_INQ_VARID (nid, "latitude", nvarid)
152      IF (ierr.NE.NF_NOERR) THEN
153         PRINT*, 'phyetat0: Le champ <latitude> est absent'
154         CALL abort
155      ENDIF
156#ifdef NC_DOUBLE
157      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlat)
158#else
159      ierr = NF_GET_VAR_REAL(nid, nvarid, rlat)
160#endif
161      IF (ierr.NE.NF_NOERR) THEN
162         PRINT*, 'phyetat0: Lecture echouee pour <latitude>'
163         CALL abort
164      ENDIF
165c
166c Lecture des longitudes (coordonnees):
167c
168      ierr = NF_INQ_VARID (nid, "longitude", nvarid)
169      IF (ierr.NE.NF_NOERR) THEN
170         PRINT*, 'phyetat0: Le champ <longitude> est absent'
171         CALL abort
172      ENDIF
173#ifdef NC_DOUBLE
174      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlon)
175#else
176      ierr = NF_GET_VAR_REAL(nid, nvarid, rlon)
177#endif
178      IF (ierr.NE.NF_NOERR) THEN
179         PRINT*, 'phyetat0: Lecture echouee pour <latitude>'
180         CALL abort
181      ENDIF
182c
183c Lecture des temperatures du sol:
184c
185      ierr = NF_INQ_VARID (nid, "TS", nvarid)
186      IF (ierr.NE.NF_NOERR) THEN
187         PRINT*, 'phyetat0: Le champ <TS> est absent'
188         PRINT*, '          Mais je vais essayer de lire TS**'
189         DO nsrf = 1, nbsrf
190           IF (nsrf.GT.99) THEN
191             PRINT*, "Trop de sous-mailles"
192             CALL abort
193           ENDIF
194           WRITE(str2,'(i2.2)') nsrf
195           ierr = NF_INQ_VARID (nid, "TS"//str2, nvarid)
196           IF (ierr.NE.NF_NOERR) THEN
197              PRINT*, "phyetat0: Le champ <TS"//str2//"> est absent"
198              CALL abort
199           ENDIF
200#ifdef NC_DOUBLE
201           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tsol(1,nsrf))
202#else
203           ierr = NF_GET_VAR_REAL(nid, nvarid, tsol(1,nsrf))
204#endif
205           IF (ierr.NE.NF_NOERR) THEN
206             PRINT*, "phyetat0: Lecture echouee pour <TS"//str2//">"
207             CALL abort
208           ENDIF
209           xmin = 1.0E+20
210           xmax = -1.0E+20
211           DO i = 1, klon
212              xmin = MIN(tsol(i,nsrf),xmin)
213              xmax = MAX(tsol(i,nsrf),xmax)
214           ENDDO
215           PRINT*,'Temperature du sol TS**:', nsrf, xmin, xmax
216         ENDDO
217      ELSE
218         PRINT*, 'phyetat0: Le champ <TS> est present'
219         PRINT*, '          J ignore donc les autres temperatures TS**'
220#ifdef NC_DOUBLE
221         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tsol(1,1))
222#else
223         ierr = NF_GET_VAR_REAL(nid, nvarid, tsol(1,1))
224#endif
225         IF (ierr.NE.NF_NOERR) THEN
226            PRINT*, "phyetat0: Lecture echouee pour <TS>"
227            CALL abort
228         ENDIF
229         xmin = 1.0E+20
230         xmax = -1.0E+20
231         DO i = 1, klon
232            xmin = MIN(tsol(i,1),xmin)
233            xmax = MAX(tsol(i,1),xmax)
234         ENDDO
235         PRINT*,'Temperature du sol <TS>', xmin, xmax
236         DO nsrf = 2, nbsrf
237         DO i = 1, klon
238            tsol(i,nsrf) = tsol(i,1)
239         ENDDO
240         ENDDO
241      ENDIF
242c
243c Lecture des temperatures du sol profond:
244c
245      DO nsrf = 1, nbsrf
246      DO isoil=1, nsoilmx
247      IF (isoil.GT.99 .AND. nsrf.GT.99) THEN
248         PRINT*, "Trop de couches ou sous-mailles"
249         CALL abort
250      ENDIF
251      WRITE(str7,'(i2.2,"srf",i2.2)') isoil, nsrf
252      ierr = NF_INQ_VARID (nid, 'Tsoil'//str7, nvarid)
253      IF (ierr.NE.NF_NOERR) THEN
254         PRINT*, "phyetat0: Le champ <Tsoil"//str7//"> est absent"
255         PRINT*, "          Il prend donc la valeur de surface"
256         DO i=1, klon
257             tsoil(i,isoil,nsrf)=tsol(i,nsrf)
258         ENDDO
259      ELSE
260#ifdef NC_DOUBLE
261         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tsoil(1,isoil,nsrf))
262#else
263         ierr = NF_GET_VAR_REAL(nid, nvarid, tsoil(1,isoil,nsrf))
264#endif
265         IF (ierr.NE.NF_NOERR) THEN
266            PRINT*, "Lecture echouee pour <Tsoil"//str7//">"
267            CALL abort
268         ENDIF
269      ENDIF
270      ENDDO
271      ENDDO
272c
273c Lecture de deltat (pour slab ocean seulement):
274c
275      ierr = NF_INQ_VARID (nid, "DELTAT", nvarid)
276      IF (ierr.NE.NF_NOERR) THEN
277         PRINT*, "phyetat0: Le champ <DELTAT> est absent"
278         CALL abort
279      ENDIF
280#ifdef NC_DOUBLE
281      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, deltat)
282#else
283      ierr = NF_GET_VAR_REAL(nid, nvarid, deltat)
284#endif
285      IF (ierr.NE.NF_NOERR) THEN
286         PRINT*, "phyetat0: Lecture echouee pour <DELTAT>"
287         CALL abort
288      ENDIF
289      xmin = 1.0E+20
290      xmax = -1.0E+20
291      DO i = 1, klon
292         xmin = MIN(deltat(i),xmin)
293         xmax = MAX(deltat(i),xmax)
294      ENDDO
295      PRINT*,'Ecart de la SST deltat:', xmin, xmax
296c
297c Lecture de l'humidite du sol:
298c
299      ierr = NF_INQ_VARID (nid, "QS", nvarid)
300      IF (ierr.NE.NF_NOERR) THEN
301         PRINT*, 'phyetat0: Le champ <QS> est absent'
302         PRINT*, '          Mais je vais essayer de lire QS**'
303         DO nsrf = 1, nbsrf
304           IF (nsrf.GT.99) THEN
305             PRINT*, "Trop de sous-mailles"
306             CALL abort
307           ENDIF
308           WRITE(str2,'(i2.2)') nsrf
309           ierr = NF_INQ_VARID (nid, "QS"//str2, nvarid)
310           IF (ierr.NE.NF_NOERR) THEN
311              PRINT*, "phyetat0: Le champ <QS"//str2//"> est absent"
312              CALL abort
313           ENDIF
314#ifdef NC_DOUBLE
315           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsol(1,nsrf))
316#else
317           ierr = NF_GET_VAR_REAL(nid, nvarid, qsol(1,nsrf))
318#endif
319           IF (ierr.NE.NF_NOERR) THEN
320             PRINT*, "phyetat0: Lecture echouee pour <QS"//str2//">"
321             CALL abort
322           ENDIF
323           xmin = 1.0E+20
324           xmax = -1.0E+20
325           DO i = 1, klon
326              xmin = MIN(qsol(i,nsrf),xmin)
327              xmax = MAX(qsol(i,nsrf),xmax)
328           ENDDO
329           PRINT*,'Humidite du sol QS**:', nsrf, xmin, xmax
330         ENDDO
331      ELSE
332         PRINT*, 'phyetat0: Le champ <QS> est present'
333         PRINT*, '          J ignore donc les autres humidites QS**'
334#ifdef NC_DOUBLE
335         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsol(1,1))
336#else
337         ierr = NF_GET_VAR_REAL(nid, nvarid, qsol(1,1))
338#endif
339         IF (ierr.NE.NF_NOERR) THEN
340            PRINT*, "phyetat0: Lecture echouee pour <QS>"
341            CALL abort
342         ENDIF
343         xmin = 1.0E+20
344         xmax = -1.0E+20
345         DO i = 1, klon
346            xmin = MIN(qsol(i,1),xmin)
347            xmax = MAX(qsol(i,1),xmax)
348         ENDDO
349         PRINT*,'Humidite du sol <QS>', xmin, xmax
350         DO nsrf = 2, nbsrf
351         DO i = 1, klon
352            qsol(i,nsrf) = qsol(i,1)
353         ENDDO
354         ENDDO
355      ENDIF
356c
357c Lecture de neige au sol:
358c
359      ierr = NF_INQ_VARID (nid, "SNOW", nvarid)
360      IF (ierr.NE.NF_NOERR) THEN
361         PRINT*, 'phyetat0: Le champ <SNOW> est absent'
362         PRINT*, '          Mais je vais essayer de lire SNOW**'
363         DO nsrf = 1, nbsrf
364           IF (nsrf.GT.99) THEN
365             PRINT*, "Trop de sous-mailles"
366             CALL abort
367           ENDIF
368           WRITE(str2,'(i2.2)') nsrf
369           ierr = NF_INQ_VARID (nid, "SNOW"//str2, nvarid)
370           IF (ierr.NE.NF_NOERR) THEN
371              PRINT*, "phyetat0: Le champ <SNOW"//str2//"> est absent"
372              CALL abort
373           ENDIF
374#ifdef NC_DOUBLE
375           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, snow(1,nsrf))
376#else
377           ierr = NF_GET_VAR_REAL(nid, nvarid, snow(1,nsrf))
378#endif
379           IF (ierr.NE.NF_NOERR) THEN
380             PRINT*, "phyetat0: Lecture echouee pour <SNOW"//str2//">"
381             CALL abort
382           ENDIF
383           xmin = 1.0E+20
384           xmax = -1.0E+20
385           DO i = 1, klon
386              xmin = MIN(snow(i,nsrf),xmin)
387              xmax = MAX(snow(i,nsrf),xmax)
388           ENDDO
389           PRINT*,'Neige du sol SNOW**:', nsrf, xmin, xmax
390         ENDDO
391      ELSE
392         PRINT*, 'phyetat0: Le champ <SNOW> est present'
393         PRINT*, '          J ignore donc les autres neiges SNOW**'
394#ifdef NC_DOUBLE
395         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, snow(1,1))
396#else
397         ierr = NF_GET_VAR_REAL(nid, nvarid, snow(1,1))
398#endif
399         IF (ierr.NE.NF_NOERR) THEN
400            PRINT*, "phyetat0: Lecture echouee pour <SNOW>"
401            CALL abort
402         ENDIF
403         xmin = 1.0E+20
404         xmax = -1.0E+20
405         DO i = 1, klon
406            xmin = MIN(snow(i,1),xmin)
407            xmax = MAX(snow(i,1),xmax)
408         ENDDO
409         PRINT*,'Neige du sol <SNOW>', xmin, xmax
410         DO nsrf = 2, nbsrf
411         DO i = 1, klon
412            snow(i,nsrf) = snow(i,1)
413         ENDDO
414         ENDDO
415      ENDIF
416c
417c Lecture du rayonnement net au sol:
418c
419      ierr = NF_INQ_VARID (nid, "RADS", nvarid)
420      IF (ierr.NE.NF_NOERR) THEN
421         PRINT*, 'phyetat0: Le champ <RADS> est absent'
422         CALL abort
423      ENDIF
424#ifdef NC_DOUBLE
425      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, radsol)
426#else
427      ierr = NF_GET_VAR_REAL(nid, nvarid, radsol)
428#endif
429      IF (ierr.NE.NF_NOERR) THEN
430         PRINT*, 'phyetat0: Lecture echouee pour <RADS>'
431         CALL abort
432      ENDIF
433      xmin = 1.0E+20
434      xmax = -1.0E+20
435      DO i = 1, klon
436         xmin = MIN(radsol(i),xmin)
437         xmax = MAX(radsol(i),xmax)
438      ENDDO
439      PRINT*,'Rayonnement net au sol radsol:', xmin, xmax
440c
441c Lecture de la longueur de rugosite en mer:
442c
443      ierr = NF_INQ_VARID (nid, "RUGMER", nvarid)
444      IF (ierr.NE.NF_NOERR) THEN
445         PRINT*, 'phyetat0: Le champ <RUGMER> est absent'
446         CALL abort
447      ENDIF
448#ifdef NC_DOUBLE
449      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rugmer)
450#else
451      ierr = NF_GET_VAR_REAL(nid, nvarid, rugmer)
452#endif
453      IF (ierr.NE.NF_NOERR) THEN
454         PRINT*, 'phyetat0: Lecture echouee pour <RUGMER>'
455         CALL abort
456      ENDIF
457      xmin = 1.0E+20
458      xmax = -1.0E+20
459      DO i = 1, klon
460         xmin = MIN(rugmer(i),xmin)
461         xmax = MAX(rugmer(i),xmax)
462      ENDDO
463      PRINT*,'Rugosite sur la mer rugmer:', xmin, xmax
464c
465c Lecture de l'age de la neige:
466c
467      ierr = NF_INQ_VARID (nid, "AGESNO", nvarid)
468      IF (ierr.NE.NF_NOERR) THEN
469         PRINT*, 'phyetat0: Le champ <AGESNO> est absent'
470         PRINT*, "          Valeur par default: 50"
471         DO i = 1, klon
472            agesno(i) = 50.0
473         ENDDO
474      ELSE
475#ifdef NC_DOUBLE
476         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, agesno)
477#else
478         ierr = NF_GET_VAR_REAL(nid, nvarid, agesno)
479#endif
480         IF (ierr.NE.NF_NOERR) THEN
481            PRINT*, 'phyetat0: Lecture echouee pour <AGESNO>'
482            CALL abort
483         ENDIF
484         xmin = 1.0E+20
485         xmax = -1.0E+20
486         DO i = 1, klon
487            xmin = MIN(agesno(i),xmin)
488            xmax = MAX(agesno(i),xmax)
489         ENDDO
490         PRINT*,'Age de la neige agesno:', xmin, xmax
491      ENDIF
492c
493c
494      ierr = NF_INQ_VARID (nid, "ZMEA", nvarid)
495      IF (ierr.NE.NF_NOERR) THEN
496         PRINT*, 'phyetat0: Le champ <ZMEA> est absent'
497         CALL abort
498      ENDIF
499#ifdef NC_DOUBLE
500      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zmea)
501#else
502      ierr = NF_GET_VAR_REAL(nid, nvarid, zmea)
503#endif
504      IF (ierr.NE.NF_NOERR) THEN
505         PRINT*, 'phyetat0: Lecture echouee pour <ZMEA>'
506         CALL abort
507      ENDIF
508      xmin = 1.0E+20
509      xmax = -1.0E+20
510      DO i = 1, klon
511         xmin = MIN(zmea(i),xmin)
512         xmax = MAX(zmea(i),xmax)
513      ENDDO
514      PRINT*,'OROGRAPHIE SOUS-MAILLE zmea:', xmin, xmax
515c
516c
517      ierr = NF_INQ_VARID (nid, "ZSTD", nvarid)
518      IF (ierr.NE.NF_NOERR) THEN
519         PRINT*, 'phyetat0: Le champ <ZSTD> est absent'
520         CALL abort
521      ENDIF
522#ifdef NC_DOUBLE
523      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zstd)
524#else
525      ierr = NF_GET_VAR_REAL(nid, nvarid, zstd)
526#endif
527      IF (ierr.NE.NF_NOERR) THEN
528         PRINT*, 'phyetat0: Lecture echouee pour <ZSTD>'
529         CALL abort
530      ENDIF
531      xmin = 1.0E+20
532      xmax = -1.0E+20
533      DO i = 1, klon
534         xmin = MIN(zstd(i),xmin)
535         xmax = MAX(zstd(i),xmax)
536      ENDDO
537      PRINT*,'OROGRAPHIE SOUS-MAILLE zstd:', xmin, xmax
538c
539c
540      ierr = NF_INQ_VARID (nid, "ZSIG", nvarid)
541      IF (ierr.NE.NF_NOERR) THEN
542         PRINT*, 'phyetat0: Le champ <ZSIG> est absent'
543         CALL abort
544      ENDIF
545#ifdef NC_DOUBLE
546      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zsig)
547#else
548      ierr = NF_GET_VAR_REAL(nid, nvarid, zsig)
549#endif
550      IF (ierr.NE.NF_NOERR) THEN
551         PRINT*, 'phyetat0: Lecture echouee pour <ZSIG>'
552         CALL abort
553      ENDIF
554      xmin = 1.0E+20
555      xmax = -1.0E+20
556      DO i = 1, klon
557         xmin = MIN(zsig(i),xmin)
558         xmax = MAX(zsig(i),xmax)
559      ENDDO
560      PRINT*,'OROGRAPHIE SOUS-MAILLE zsig:', xmin, xmax
561c
562c
563      ierr = NF_INQ_VARID (nid, "ZGAM", nvarid)
564      IF (ierr.NE.NF_NOERR) THEN
565         PRINT*, 'phyetat0: Le champ <ZGAM> est absent'
566         CALL abort
567      ENDIF
568#ifdef NC_DOUBLE
569      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zgam)
570#else
571      ierr = NF_GET_VAR_REAL(nid, nvarid, zgam)
572#endif
573      IF (ierr.NE.NF_NOERR) THEN
574         PRINT*, 'phyetat0: Lecture echouee pour <ZGAM>'
575         CALL abort
576      ENDIF
577      xmin = 1.0E+20
578      xmax = -1.0E+20
579      DO i = 1, klon
580         xmin = MIN(zgam(i),xmin)
581         xmax = MAX(zgam(i),xmax)
582      ENDDO
583      PRINT*,'OROGRAPHIE SOUS-MAILLE zgam:', xmin, xmax
584c
585c
586      ierr = NF_INQ_VARID (nid, "ZTHE", nvarid)
587      IF (ierr.NE.NF_NOERR) THEN
588         PRINT*, 'phyetat0: Le champ <ZTHE> est absent'
589         CALL abort
590      ENDIF
591#ifdef NC_DOUBLE
592      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zthe)
593#else
594      ierr = NF_GET_VAR_REAL(nid, nvarid, zthe)
595#endif
596      IF (ierr.NE.NF_NOERR) THEN
597         PRINT*, 'phyetat0: Lecture echouee pour <ZTHE>'
598         CALL abort
599      ENDIF
600      xmin = 1.0E+20
601      xmax = -1.0E+20
602      DO i = 1, klon
603         xmin = MIN(zthe(i),xmin)
604         xmax = MAX(zthe(i),xmax)
605      ENDDO
606      PRINT*,'OROGRAPHIE SOUS-MAILLE zthe:', xmin, xmax
607c
608c
609      ierr = NF_INQ_VARID (nid, "ZPIC", nvarid)
610      IF (ierr.NE.NF_NOERR) THEN
611         PRINT*, 'phyetat0: Le champ <ZPIC> est absent'
612         CALL abort
613      ENDIF
614#ifdef NC_DOUBLE
615      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zpic)
616#else
617      ierr = NF_GET_VAR_REAL(nid, nvarid, zpic)
618#endif
619      IF (ierr.NE.NF_NOERR) THEN
620         PRINT*, 'phyetat0: Lecture echouee pour <ZPIC>'
621         CALL abort
622      ENDIF
623      xmin = 1.0E+20
624      xmax = -1.0E+20
625      DO i = 1, klon
626         xmin = MIN(zpic(i),xmin)
627         xmax = MAX(zpic(i),xmax)
628      ENDDO
629      PRINT*,'OROGRAPHIE SOUS-MAILLE zpic:', xmin, xmax
630c
631      ierr = NF_INQ_VARID (nid, "ZVAL", nvarid)
632      IF (ierr.NE.NF_NOERR) THEN
633         PRINT*, 'phyetat0: Le champ <ZVAL> est absent'
634         CALL abort
635      ENDIF
636#ifdef NC_DOUBLE
637      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zval)
638#else
639      ierr = NF_GET_VAR_REAL(nid, nvarid, zval)
640#endif
641      IF (ierr.NE.NF_NOERR) THEN
642         PRINT*, 'phyetat0: Lecture echouee pour <ZVAL>'
643         CALL abort
644      ENDIF
645      xmin = 1.0E+20
646      xmax = -1.0E+20
647      DO i = 1, klon
648         xmin = MIN(zval(i),xmin)
649         xmax = MAX(zval(i),xmax)
650      ENDDO
651      PRINT*,'OROGRAPHIE SOUS-MAILLE zval:', xmin, xmax
652c
653c
654      ierr = NF_INQ_VARID (nid, "RUGSREL", nvarid)
655      IF (ierr.NE.NF_NOERR) THEN
656         PRINT*, 'phyetat0: Le champ <RUGSREL> est absent'
657         CALL abort
658      ENDIF
659#ifdef NC_DOUBLE
660      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rugsrel)
661#else
662      ierr = NF_GET_VAR_REAL(nid, nvarid, rugsrel)
663#endif
664      IF (ierr.NE.NF_NOERR) THEN
665         PRINT*, 'phyetat0: Lecture echouee pour <RUGSREL>'
666         CALL abort
667      ENDIF
668      xmin = 1.0E+20
669      xmax = -1.0E+20
670      DO i = 1, klon
671         xmin = MIN(rugsrel(i),xmin)
672         xmax = MAX(rugsrel(i),xmax)
673      ENDDO
674      PRINT*,'Rugosite relief (ecart-type) rugsrel:', xmin, xmax
675c
676c Fermer le fichier:
677c
678      ierr = NF_CLOSE(nid)
679c
680      RETURN
681      END
Note: See TracBrowser for help on using the repository browser.