source: LMDZ4/trunk/libf/phylmd/phyetat0.F @ 996

Last change on this file since 996 was 996, checked in by lsce, 16 years ago
  • Modifications liées au calcul des nouveau sous-fractions
  • Nettoyage de ocean slab : il reste uniquement la version avec glace de mer forcé
  • Nouveaux variables pour distiguer la version et type d'ocean : type_ocean=force/slab/couple, version_ocean=opa8/nemo pour couplé ou version_ocean=sicOBS pour slab

JG

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 51.6 KB
Line 
1!
2! $Header$
3!
4c
5c
6      SUBROUTINE phyetat0 (fichnom,
7     .           clesphy0,
8     .           tabcntr0)
9
10      USE dimphy
11      USE mod_grid_phy_lmdz
12      USE mod_phys_lmdz_para
13      USE iophy
14      USE ocean_cpl_mod,    ONLY : ocean_cpl_init
15      USE fonte_neige_mod,  ONLY : fonte_neige_init
16      USE pbl_surface_mod,  ONLY : pbl_surface_init
17      USE surface_data,     ONLY : type_ocean
18      USE phys_state_var_mod
19
20      IMPLICIT none
21c======================================================================
22c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
23c Objet: Lecture de l'etat initial pour la physique
24c======================================================================
25#include "dimensions.h"
26#include "netcdf.inc"
27#include "indicesol.h"
28#include "dimsoil.h"
29#include "clesphys.h"
30#include "temps.h"
31#include "thermcell.h"
32#include "compbl.h"
33c======================================================================
34      CHARACTER*(*) fichnom
35
36c les variables globales lues dans le fichier restart
37      REAL rlat_glo(klon_glo), rlon_glo(klon_glo)
38      REAL pctsrf_glo(klon_glo, nbsrf)
39      REAL tsol_glo(klon_glo,nbsrf)
40      REAL alb1_glo(klon_glo,nbsrf)
41      REAL alb2_glo(klon_glo,nbsrf)
42      REAL rain_fall_glo(klon_glo)
43      REAL snow_fall_glo(klon_glo)
44      real solsw_glo(klon_glo)
45      real sollw_glo(klon_glo)
46      REAL radsol_glo(klon_glo)
47      REAL zmea_glo(klon_glo)
48      REAL zstd_glo(klon_glo)
49      REAL zsig_glo(klon_glo)
50      REAL zgam_glo(klon_glo)
51      REAL zthe_glo(klon_glo)
52      REAL zpic_glo(klon_glo)
53      REAL zval_glo(klon_glo)
54      REAL rugsrel_glo(klon_glo)
55      REAL t_ancien_glo(klon_glo,klev), q_ancien_glo(klon_glo,klev)
56      REAL clwcon_glo(klon_glo,klev)
57      REAL rnebcon_glo(klon_glo,klev)
58      REAL ratqs_glo(klon_glo,klev)
59      REAL pbl_tke_glo(klon_glo,klev+1,nbsrf)
60      REAL zmax0_glo(klon_glo), f0_glo(klon)
61      REAL ema_work1_glo(klon_glo, klev), ema_work2_glo(klon_glo, klev)
62      REAL wake_deltat_glo(klon_glo,klev)
63      REAL wake_deltaq_glo(klon_glo,klev)
64      REAL wake_s_glo(klon_glo), wake_cstar_glo(klon_glo)
65      REAL wake_fip_glo(klon_glo)
66      REAL tsoil_p(klon,nsoilmx,nbsrf)
67      REAL qsurf_p(klon,nbsrf)
68      REAL qsol_p(klon)
69      REAL snow_p(klon,nbsrf)
70      REAL evap_p(klon,nbsrf)
71      real fder_p(klon)
72      REAL frugs_p(klon,nbsrf)
73      REAL agesno_p(klon,nbsrf)
74      REAL run_off_lic_0_p(klon)
75     
76      LOGICAL,SAVE ::  ancien_ok_glo
77!$OMP THREADPRIVATE(ancien_ok_glo) 
78   
79      REAL zmasq_glo(klon_glo)
80      REAL tsoil(klon_glo,nsoilmx,nbsrf)
81      REAL qsurf(klon_glo,nbsrf)
82      REAL qsol(klon_glo)
83      REAL snow(klon_glo,nbsrf)
84      REAL evap(klon_glo,nbsrf)
85      real fder(klon_glo)
86      REAL frugs(klon_glo,nbsrf)
87      REAL agesno(klon_glo,nbsrf)
88      REAL fractint(klon_glo)
89      REAL run_off_lic_0(klon_glo)
90
91      CHARACTER*6 ocean_in
92      LOGICAL ok_veget_in
93
94      INTEGER        longcles
95      PARAMETER    ( longcles = 20 )
96      REAL clesphy0( longcles )
97c
98      REAL xmin, xmax
99c
100      INTEGER nid, nvarid
101      INTEGER ierr, i, nsrf, isoil ,k
102      INTEGER length
103      PARAMETER (length=100)
104      REAL tab_cntrl(length), tabcntr0(length)
105      CHARACTER*7 str7
106      CHARACTER*2 str2
107
108c FH1D
109c     real iolat(jjm+1)
110      real iolat(jjm+1-1/iim)
111c
112c Ouvrir le fichier contenant l'etat initial:
113c
114
115c$OMP MASTER
116      print *,'MASTER -x , omp_rank=',omp_rank
117c$OMP END MASTER
118
119c$OMP MASTER
120      IF (is_mpi_root) THEN
121        print*,'fichnom ',fichnom
122        ierr = NF_OPEN (fichnom, NF_NOWRITE,nid)
123        IF (ierr.NE.NF_NOERR) THEN
124          write(6,*)' Pb d''ouverture du fichier '//fichnom
125          write(6,*)' ierr = ', ierr
126          CALL ABORT
127        ENDIF
128      ENDIF
129c$OMP END MASTER
130c
131c Lecture des parametres de controle:
132c
133c$OMP MASTER
134      IF (is_mpi_root) THEN
135     
136      ierr = NF_INQ_VARID (nid, "controle", nvarid)
137      IF (ierr.NE.NF_NOERR) THEN
138         PRINT*, 'phyetat0: Le champ <controle> est absent'
139         CALL abort
140      ENDIF
141#ifdef NC_DOUBLE
142      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tab_cntrl)
143#else
144      ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl)
145#endif
146      IF (ierr.NE.NF_NOERR) THEN
147         PRINT*, 'phyetat0: Lecture echouee pour <controle>'
148         CALL abort
149      ENDIF
150      ENDIF
151
152c$OMP END MASTER
153       
154       CALL bcast(tab_cntrl)
155       
156c
157!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
158! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
159! Les constantes de la physiques sont lues dans la physique seulement.
160! Les egalites du type
161!             tab_cntrl( 5 )=clesphy0(1)
162! sont remplacees par
163!             clesphy0(1)=tab_cntrl( 5 )
164! On inverse aussi la logique.
165! On remplit les tab_cntrl avec les parametres lus dans les .def
166!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
167
168         DO i = 1, length
169           tabcntr0( i ) = tab_cntrl( i )
170         ENDDO
171c
172         tab_cntrl(1)=dtime
173         tab_cntrl(2)=radpas
174         co2_ppm_etat0      = tab_cntrl(3)
175         solaire_etat0      = tab_cntrl(4)
176         tab_cntrl(5)=iflag_con
177         tab_cntrl(6)=nbapp_rad
178
179         if (cycle_diurne) tab_cntrl( 7) =1.
180         if (soil_model) tab_cntrl( 8) =1.
181         if (new_oliq) tab_cntrl( 9) =1.
182         if (ok_orodr) tab_cntrl(10) =1.
183         if (ok_orolf) tab_cntrl(11) =1.
184         if (ok_limitvrai) tab_cntrl(12) =1.
185
186
187      itau_phy = tab_cntrl(15)
188
189       
190
191         IF( clesphy0(1).NE.tab_cntrl( 5 ) )  THEN
192             clesphy0(1)=tab_cntrl( 5 )
193         ENDIF
194
195         IF( clesphy0(2).NE.tab_cntrl( 6 ) )  THEN
196             clesphy0(2)=tab_cntrl( 6 )
197         ENDIF
198
199         IF( clesphy0(3).NE.tab_cntrl( 7 ) )  THEN
200             clesphy0(3)=tab_cntrl( 7 )
201         ENDIF
202
203         IF( clesphy0(4).NE.tab_cntrl( 8 ) )  THEN
204             clesphy0(4)=tab_cntrl( 8 )
205         ENDIF
206
207         IF( clesphy0(5).NE.tab_cntrl( 9 ) )  THEN
208             clesphy0(5)=tab_cntrl( 9 )
209         ENDIF
210
211         IF( clesphy0(6).NE.tab_cntrl( 10 ) )  THEN
212             clesphy0(6)=tab_cntrl( 10 )
213         ENDIF
214
215         IF( clesphy0(7).NE.tab_cntrl( 11 ) )  THEN
216             clesphy0(7)=tab_cntrl( 11 )
217         ENDIF
218
219         IF( clesphy0(8).NE.tab_cntrl( 12 ) )  THEN
220             clesphy0(8)=tab_cntrl( 12 )
221         ENDIF
222
223
224c
225c Lecture des latitudes (coordonnees):
226c
227      IF (is_mpi_root .AND. is_omp_root) THEN
228     
229      ierr = NF_INQ_VARID (nid, "latitude", nvarid)
230      IF (ierr.NE.NF_NOERR) THEN
231         PRINT*, 'phyetat0: Le champ <latitude> est absent'
232         CALL abort
233      ENDIF
234#ifdef NC_DOUBLE
235      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlat_glo)
236#else
237      ierr = NF_GET_VAR_REAL(nid, nvarid, rlat_glo)
238#endif
239      IF (ierr.NE.NF_NOERR) THEN
240         PRINT*, 'phyetat0: Lecture echouee pour <latitude>'
241         CALL abort
242      ENDIF
243
244c
245c Lecture des longitudes (coordonnees):
246c
247      ierr = NF_INQ_VARID (nid, "longitude", nvarid)
248      IF (ierr.NE.NF_NOERR) THEN
249         PRINT*, 'phyetat0: Le champ <longitude> est absent'
250         CALL abort
251      ENDIF
252#ifdef NC_DOUBLE
253      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlon_glo)
254#else
255      ierr = NF_GET_VAR_REAL(nid, nvarid, rlon_glo)
256#endif
257      IF (ierr.NE.NF_NOERR) THEN
258         PRINT*, 'phyetat0: Lecture echouee pour <latitude>'
259         CALL abort
260      ENDIF
261C
262C
263C Lecture du masque terre mer
264C
265
266      ierr = NF_INQ_VARID (nid, "masque", nvarid)
267      IF (ierr .EQ.  NF_NOERR) THEN
268#ifdef NC_DOUBLE
269          ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zmasq_glo)
270#else
271          ierr = NF_GET_VAR_REAL(nid, nvarid, zmasq_glo)
272#endif
273          IF (ierr.NE.NF_NOERR) THEN
274              PRINT*, 'phyetat0: Lecture echouee pour <masque>'
275              CALL abort
276          ENDIF
277      else
278          PRINT*, 'phyetat0: Le champ <masque> est absent'
279          PRINT*, 'fichier startphy non compatible avec phyetat0'
280C      CALL abort
281      ENDIF
282
283       
284C Lecture des fractions pour chaque sous-surface
285C
286C initialisation des sous-surfaces
287C
288      pctsrf = 0.
289C
290C fraction de terre
291C
292
293      ierr = NF_INQ_VARID (nid, "FTER", nvarid)
294      IF (ierr .EQ.  NF_NOERR) THEN
295#ifdef NC_DOUBLE
296          ierr = NF_GET_VAR_DOUBLE(nid, nvarid,       
297     .                             pctsrf_glo(1 : klon_glo,is_ter))
298#else
299          ierr = NF_GET_VAR_REAL(nid, nvarid,
300     .                           pctsrf_glo(1 : klon_glo,is_ter))
301#endif
302          IF (ierr.NE.NF_NOERR) THEN
303              PRINT*, 'phyetat0: Lecture echouee pour <FTER>'
304              CALL abort
305          ENDIF
306      else
307          PRINT*, 'phyetat0: Le champ <FTER> est absent'
308c@$$         CALL abort
309      ENDIF
310
311C
312C fraction de glace de terre
313C
314      ierr = NF_INQ_VARID (nid, "FLIC", nvarid)
315      IF (ierr .EQ.  NF_NOERR) THEN
316#ifdef NC_DOUBLE
317          ierr = NF_GET_VAR_DOUBLE(nid, nvarid,
318     .                             pctsrf_glo(1 : klon_glo,is_lic))
319#else
320          ierr = NF_GET_VAR_REAL(nid, nvarid,
321     .                           pctsrf_glo(1 : klon_glo,is_lic))
322#endif
323          IF (ierr.NE.NF_NOERR) THEN
324              PRINT*, 'phyetat0: Lecture echouee pour <FLIC>'
325              CALL abort
326          ENDIF
327      else
328          PRINT*, 'phyetat0: Le champ <FLIC> est absent'
329c@$$         CALL abort
330      ENDIF
331C
332C fraction d'ocean
333C
334      ierr = NF_INQ_VARID (nid, "FOCE", nvarid)
335      IF (ierr .EQ.  NF_NOERR) THEN
336#ifdef NC_DOUBLE
337          ierr = NF_GET_VAR_DOUBLE(nid, nvarid,
338     .                             pctsrf_glo(1 : klon_glo,is_oce))
339#else
340          ierr = NF_GET_VAR_REAL(nid, nvarid,
341     .                           pctsrf_glo(1 : klon_glo,is_oce))
342#endif
343          IF (ierr.NE.NF_NOERR) THEN
344              PRINT*, 'phyetat0: Lecture echouee pour <FOCE>'
345              CALL abort
346          ENDIF
347      else
348          PRINT*, 'phyetat0: Le champ <FOCE> est absent'
349c@$$         CALL abort
350      ENDIF
351
352C
353C fraction glace de mer
354C
355      ierr = NF_INQ_VARID (nid, "FSIC", nvarid)
356      IF (ierr .EQ.  NF_NOERR) THEN
357#ifdef NC_DOUBLE
358          ierr = NF_GET_VAR_DOUBLE(nid, nvarid,
359     .                             pctsrf_glo(1 : klon_glo,is_sic))
360#else
361          ierr = NF_GET_VAR_REAL(nid, nvarid,
362     .                           pctsrf_glo(1 : klon_glo, is_sic))
363#endif
364          IF (ierr.NE.NF_NOERR) THEN
365              PRINT*, 'phyetat0: Lecture echouee pour <FSIC>'
366              CALL abort
367          ENDIF
368      else
369          PRINT*, 'phyetat0: Le champ <FSIC> est absent'
370c@$$         CALL abort
371      ENDIF
372
373C
374C  Verification de l'adequation entre le masque et les sous-surfaces
375C
376      fractint( 1 : klon_glo) = pctsrf_glo(1 : klon_glo, is_ter)
377     $    + pctsrf_glo(1 : klon_glo, is_lic)
378      DO i = 1 , klon_glo
379        IF ( abs(fractint(i) - zmasq_glo(i) ) .GT. EPSFRA ) THEN
380            WRITE(*,*) 'phyetat0: attention fraction terre pas ',
381     $          'coherente ', i, zmasq_glo(i), pctsrf_glo(i, is_ter)
382     $          ,pctsrf_glo(i, is_lic)
383        ENDIF
384      END DO
385      fractint (1 : klon_glo) =  pctsrf_glo(1 : klon_glo, is_oce)
386     $    + pctsrf_glo(1 : klon_glo, is_sic)
387      DO i = 1 , klon_glo
388        IF ( abs( fractint(i) - (1. - zmasq_glo(i))) .GT. EPSFRA ) THEN
389            WRITE(*,*) 'phyetat0 attention fraction ocean pas ',
390     $          'coherente ', i, zmasq_glo(i) , pctsrf_glo(i, is_oce)
391     $          ,pctsrf_glo(i, is_sic)
392        ENDIF
393      END DO
394
395C
396c Lecture des temperatures du sol:
397c
398
399      ierr = NF_INQ_VARID (nid, "TS", nvarid)
400      IF (ierr.NE.NF_NOERR) THEN
401         PRINT*, 'phyetat0: Le champ <TS> est absent'
402         PRINT*, '          Mais je vais essayer de lire TS**'
403         DO nsrf = 1, nbsrf
404           IF (nsrf.GT.99) THEN
405             PRINT*, "Trop de sous-mailles"
406             CALL abort
407           ENDIF
408           WRITE(str2,'(i2.2)') nsrf
409           ierr = NF_INQ_VARID (nid, "TS"//str2, nvarid)
410           IF (ierr.NE.NF_NOERR) THEN
411              PRINT*, "phyetat0: Le champ <TS"//str2//"> est absent"
412              CALL abort
413           ENDIF
414#ifdef NC_DOUBLE
415           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tsol_glo(1,nsrf))
416#else
417           ierr = NF_GET_VAR_REAL(nid, nvarid, tsol_glo(1,nsrf))
418#endif
419           IF (ierr.NE.NF_NOERR) THEN
420             PRINT*, "phyetat0: Lecture echouee pour <TS"//str2//">"
421             CALL abort
422           ENDIF
423
424           xmin = 1.0E+20
425           xmax = -1.0E+20
426           DO i = 1, klon_glo
427              xmin = MIN(tsol_glo(i,nsrf),xmin)
428              xmax = MAX(tsol_glo(i,nsrf),xmax)
429           ENDDO
430           PRINT*,'Temperature du sol TS**:', nsrf, xmin, xmax
431         ENDDO
432      ELSE
433         PRINT*, 'phyetat0: Le champ <TS> est present'
434         PRINT*, '          J ignore donc les autres temperatures TS**'
435#ifdef NC_DOUBLE
436         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tsol_glo(1,1))
437#else
438         ierr = NF_GET_VAR_REAL(nid, nvarid, tsol_glo(1,1))
439#endif
440         IF (ierr.NE.NF_NOERR) THEN
441            PRINT*, "phyetat0: Lecture echouee pour <TS>"
442            CALL abort
443         ENDIF
444         xmin = 1.0E+20
445         xmax = -1.0E+20
446         DO i = 1, klon_glo
447            xmin = MIN(tsol_glo(i,1),xmin)
448            xmax = MAX(tsol_glo(i,1),xmax)
449         ENDDO
450         PRINT*,'Temperature du sol <TS>', xmin, xmax
451         DO nsrf = 2, nbsrf
452         DO i = 1, klon_glo
453            tsol_glo(i,nsrf) = tsol_glo(i,1)
454         ENDDO
455         ENDDO
456      ENDIF
457
458c
459c Lecture des temperatures du sol profond:
460c
461      DO nsrf = 1, nbsrf
462      DO isoil=1, nsoilmx
463      IF (isoil.GT.99 .AND. nsrf.GT.99) THEN
464         PRINT*, "Trop de couches ou sous-mailles"
465         CALL abort
466      ENDIF
467      WRITE(str7,'(i2.2,"srf",i2.2)') isoil, nsrf
468      ierr = NF_INQ_VARID (nid, 'Tsoil'//str7, nvarid)
469      IF (ierr.NE.NF_NOERR) THEN
470         PRINT*, "phyetat0: Le champ <Tsoil"//str7//"> est absent"
471         PRINT*, "          Il prend donc la valeur de surface"
472         DO i=1, klon_glo
473             tsoil(i,isoil,nsrf)=tsol_glo(i,nsrf)
474         ENDDO
475      ELSE
476#ifdef NC_DOUBLE
477         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tsoil(1,isoil,nsrf))
478#else
479         ierr = NF_GET_VAR_REAL(nid, nvarid, tsoil(1,isoil,nsrf))
480#endif
481         IF (ierr.NE.NF_NOERR) THEN
482            PRINT*, "Lecture echouee pour <Tsoil"//str7//">"
483            CALL abort
484         ENDIF
485      ENDIF
486      ENDDO
487      ENDDO
488c
489c Lecture de l'humidite de l'air juste au dessus du sol:
490c
491      ierr = NF_INQ_VARID (nid, "QS", nvarid)
492      IF (ierr.NE.NF_NOERR) THEN
493         PRINT*, 'phyetat0: Le champ <QS> est absent'
494         PRINT*, '          Mais je vais essayer de lire QS**'
495         DO nsrf = 1, nbsrf
496           IF (nsrf.GT.99) THEN
497             PRINT*, "Trop de sous-mailles"
498             CALL abort
499           ENDIF
500           WRITE(str2,'(i2.2)') nsrf
501           ierr = NF_INQ_VARID (nid, "QS"//str2, nvarid)
502           IF (ierr.NE.NF_NOERR) THEN
503              PRINT*, "phyetat0: Le champ <QS"//str2//"> est absent"
504              CALL abort
505           ENDIF
506#ifdef NC_DOUBLE
507           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsurf(1,nsrf))
508#else
509           ierr = NF_GET_VAR_REAL(nid, nvarid, qsurf(1,nsrf))
510#endif
511           IF (ierr.NE.NF_NOERR) THEN
512             PRINT*, "phyetat0: Lecture echouee pour <QS"//str2//">"
513             CALL abort
514           ENDIF
515           xmin = 1.0E+20
516           xmax = -1.0E+20
517           DO i = 1, klon_glo
518              xmin = MIN(qsurf(i,nsrf),xmin)
519              xmax = MAX(qsurf(i,nsrf),xmax)
520           ENDDO
521           PRINT*,'Humidite pres du sol QS**:', nsrf, xmin, xmax
522         ENDDO
523      ELSE
524         PRINT*, 'phyetat0: Le champ <QS> est present'
525         PRINT*, '          J ignore donc les autres humidites QS**'
526#ifdef NC_DOUBLE
527         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsurf(1,1))
528#else
529         ierr = NF_GET_VAR_REAL(nid, nvarid, qsurf(1,1))
530#endif
531         IF (ierr.NE.NF_NOERR) THEN
532            PRINT*, "phyetat0: Lecture echouee pour <QS>"
533            CALL abort
534         ENDIF
535         xmin = 1.0E+20
536         xmax = -1.0E+20
537         DO i = 1, klon_glo
538            xmin = MIN(qsurf(i,1),xmin)
539            xmax = MAX(qsurf(i,1),xmax)
540         ENDDO
541         PRINT*,'Humidite pres du sol <QS>', xmin, xmax
542         DO nsrf = 2, nbsrf
543         DO i = 1, klon_glo
544            qsurf(i,nsrf) = qsurf(i,1)
545         ENDDO
546         ENDDO
547      ENDIF
548C
549C Eau dans le sol (pour le modele de sol "bucket")
550C
551      ierr = NF_INQ_VARID (nid, "QSOL", nvarid)
552      IF (ierr .EQ.  NF_NOERR) THEN
553#ifdef NC_DOUBLE
554          ierr = NF_GET_VAR_DOUBLE(nid, nvarid, qsol)
555#else
556          ierr = NF_GET_VAR_REAL(nid, nvarid, qsol)
557#endif
558          IF (ierr.NE.NF_NOERR) THEN
559              PRINT*, 'phyetat0: Lecture echouee pour <QSOL>'
560              CALL abort
561          ENDIF
562      else
563          PRINT*, 'phyetat0: Le champ <QSOL> est absent'
564          PRINT*, '          Valeur par defaut nulle'
565          qsol(:)=0.
566c@$$         CALL abort
567      ENDIF
568      xmin = 1.0E+20
569      xmax = -1.0E+20
570      DO i = 1, klon_glo
571        xmin = MIN(qsol(i),xmin)
572        xmax = MAX(qsol(i),xmax)
573      ENDDO
574      PRINT*,'Eau dans le sol (mm) <QSOL>', xmin, xmax
575c
576c Lecture de neige au sol:
577c
578      ierr = NF_INQ_VARID (nid, "SNOW", nvarid)
579      IF (ierr.NE.NF_NOERR) THEN
580         PRINT*, 'phyetat0: Le champ <SNOW> est absent'
581         PRINT*, '          Mais je vais essayer de lire SNOW**'
582         DO nsrf = 1, nbsrf
583           IF (nsrf.GT.99) THEN
584             PRINT*, "Trop de sous-mailles"
585             CALL abort
586           ENDIF
587           WRITE(str2,'(i2.2)') nsrf
588           ierr = NF_INQ_VARID (nid, "SNOW"//str2, nvarid)
589           IF (ierr.NE.NF_NOERR) THEN
590              PRINT*, "phyetat0: Le champ <SNOW"//str2//"> est absent"
591              CALL abort
592           ENDIF
593#ifdef NC_DOUBLE
594           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, snow(1,nsrf))
595#else
596           ierr = NF_GET_VAR_REAL(nid, nvarid, snow(1,nsrf))
597#endif
598           IF (ierr.NE.NF_NOERR) THEN
599             PRINT*, "phyetat0: Lecture echouee pour <SNOW"//str2//">"
600             CALL abort
601           ENDIF
602           xmin = 1.0E+20
603           xmax = -1.0E+20
604           DO i = 1, klon_glo
605              xmin = MIN(snow(i,nsrf),xmin)
606              xmax = MAX(snow(i,nsrf),xmax)
607           ENDDO
608           PRINT*,'Neige du sol SNOW**:', nsrf, xmin, xmax
609         ENDDO
610      ELSE
611         PRINT*, 'phyetat0: Le champ <SNOW> est present'
612         PRINT*, '          J ignore donc les autres neiges SNOW**'
613#ifdef NC_DOUBLE
614         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, snow(1,1))
615#else
616         ierr = NF_GET_VAR_REAL(nid, nvarid, snow(1,1))
617#endif
618         IF (ierr.NE.NF_NOERR) THEN
619            PRINT*, "phyetat0: Lecture echouee pour <SNOW>"
620            CALL abort
621         ENDIF
622         xmin = 1.0E+20
623         xmax = -1.0E+20
624         DO i = 1, klon_glo
625            xmin = MIN(snow(i,1),xmin)
626            xmax = MAX(snow(i,1),xmax)
627         ENDDO
628         PRINT*,'Neige du sol <SNOW>', xmin, xmax
629         DO nsrf = 2, nbsrf
630         DO i = 1, klon_glo
631            snow(i,nsrf) = snow(i,1)
632         ENDDO
633         ENDDO
634      ENDIF
635c
636c Lecture de albedo de l'interval visible au sol:
637c
638      ierr = NF_INQ_VARID (nid, "ALBE", nvarid)
639      IF (ierr.NE.NF_NOERR) THEN
640         PRINT*, 'phyetat0: Le champ <ALBE> est absent'
641         PRINT*, '          Mais je vais essayer de lire ALBE**'
642         DO nsrf = 1, nbsrf
643           IF (nsrf.GT.99) THEN
644             PRINT*, "Trop de sous-mailles"
645             CALL abort
646           ENDIF
647           WRITE(str2,'(i2.2)') nsrf
648           ierr = NF_INQ_VARID (nid, "ALBE"//str2, nvarid)
649           IF (ierr.NE.NF_NOERR) THEN
650              PRINT*, "phyetat0: Le champ <ALBE"//str2//"> est absent"
651              CALL abort
652           ENDIF
653#ifdef NC_DOUBLE
654           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, alb1_glo(1,nsrf))
655#else
656           ierr = NF_GET_VAR_REAL(nid, nvarid, alb1_glo(1,nsrf))
657#endif
658           IF (ierr.NE.NF_NOERR) THEN
659             PRINT*, "phyetat0: Lecture echouee pour <ALBE"//str2//">"
660             CALL abort
661           ENDIF
662           xmin = 1.0E+20
663           xmax = -1.0E+20
664           DO i = 1, klon_glo
665              xmin = MIN(alb1_glo(i,nsrf),xmin)
666              xmax = MAX(alb1_glo(i,nsrf),xmax)
667           ENDDO
668           PRINT*,'Albedo du sol ALBE**:', nsrf, xmin, xmax
669         ENDDO
670      ELSE
671         PRINT*, 'phyetat0: Le champ <ALBE> est present'
672         PRINT*, '          J ignore donc les autres ALBE**'
673#ifdef NC_DOUBLE
674         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, alb1_glo(1,1))
675#else
676         ierr = NF_GET_VAR_REAL(nid, nvarid, alb1_glo(1,1))
677#endif
678         IF (ierr.NE.NF_NOERR) THEN
679            PRINT*, "phyetat0: Lecture echouee pour <ALBE>"
680            CALL abort
681         ENDIF
682         xmin = 1.0E+20
683         xmax = -1.0E+20
684         DO i = 1, klon_glo
685            xmin = MIN(alb1_glo(i,1),xmin)
686            xmax = MAX(alb1_glo(i,1),xmax)
687         ENDDO
688         PRINT*,'Neige du sol <ALBE>', xmin, xmax
689         DO nsrf = 2, nbsrf
690         DO i = 1, klon_glo
691            alb1_glo(i,nsrf) = alb1_glo(i,1)
692         ENDDO
693         ENDDO
694      ENDIF
695
696c
697c Lecture de albedo au sol dans l'interval proche infra-rouge:
698c
699      ierr = NF_INQ_VARID (nid, "ALBLW", nvarid)
700      IF (ierr.NE.NF_NOERR) THEN
701         PRINT*, 'phyetat0: Le champ <ALBLW> est absent'
702c        PRINT*, '          Mais je vais essayer de lire ALBLW**'
703         PRINT*, '          Mais je vais prendre ALBE**'
704         DO nsrf = 1, nbsrf
705           DO i = 1, klon_glo
706             alb2_glo(i,nsrf) = alb1_glo(i,nsrf)
707           ENDDO
708         ENDDO
709      ELSE
710         PRINT*, 'phyetat0: Le champ <ALBLW> est present'
711         PRINT*, '          J ignore donc les autres ALBLW**'
712#ifdef NC_DOUBLE
713         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, alb2_glo(1,1))
714#else
715         ierr = NF_GET_VAR_REAL(nid, nvarid, alb2_glo(1,1))
716#endif
717         IF (ierr.NE.NF_NOERR) THEN
718            PRINT*, "phyetat0: Lecture echouee pour <ALBLW>"
719            CALL abort
720         ENDIF
721         xmin = 1.0E+20
722         xmax = -1.0E+20
723         DO i = 1, klon_glo
724            xmin = MIN(alb2_glo(i,1),xmin)
725            xmax = MAX(alb2_glo(i,1),xmax)
726         ENDDO
727         PRINT*,'Neige du sol <ALBLW>', xmin, xmax
728         DO nsrf = 2, nbsrf
729         DO i = 1, klon_glo
730            alb2_glo(i,nsrf) = alb2_glo(i,1)
731         ENDDO
732         ENDDO
733      ENDIF
734c
735c Lecture de evaporation: 
736c
737      ierr = NF_INQ_VARID (nid, "EVAP", nvarid)
738      IF (ierr.NE.NF_NOERR) THEN
739         PRINT*, 'phyetat0: Le champ <EVAP> est absent'
740         PRINT*, '          Mais je vais essayer de lire EVAP**'
741         DO nsrf = 1, nbsrf
742           IF (nsrf.GT.99) THEN
743             PRINT*, "Trop de sous-mailles"
744             CALL abort
745           ENDIF
746           WRITE(str2,'(i2.2)') nsrf
747           ierr = NF_INQ_VARID (nid, "EVAP"//str2, nvarid)
748           IF (ierr.NE.NF_NOERR) THEN
749              PRINT*, "phyetat0: Le champ <EVAP"//str2//"> est absent"
750              CALL abort
751           ENDIF
752#ifdef NC_DOUBLE
753           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, evap(1,nsrf))
754#else
755           ierr = NF_GET_VAR_REAL(nid, nvarid, evap(1,nsrf))
756#endif
757           IF (ierr.NE.NF_NOERR) THEN
758             PRINT*, "phyetat0: Lecture echouee pour <EVAP"//str2//">"
759             CALL abort
760           ENDIF
761           xmin = 1.0E+20
762           xmax = -1.0E+20
763           DO i = 1, klon_glo
764              xmin = MIN(evap(i,nsrf),xmin)
765              xmax = MAX(evap(i,nsrf),xmax)
766           ENDDO
767           PRINT*,'evap du sol EVAP**:', nsrf, xmin, xmax
768         ENDDO
769      ELSE
770         PRINT*, 'phyetat0: Le champ <EVAP> est present'
771         PRINT*, '          J ignore donc les autres EVAP**'
772#ifdef NC_DOUBLE
773         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, evap(1,1))
774#else
775         ierr = NF_GET_VAR_REAL(nid, nvarid, evap(1,1))
776#endif
777         IF (ierr.NE.NF_NOERR) THEN
778            PRINT*, "phyetat0: Lecture echouee pour <EVAP>"
779            CALL abort
780         ENDIF
781         xmin = 1.0E+20
782         xmax = -1.0E+20
783         DO i = 1, klon_glo
784            xmin = MIN(evap(i,1),xmin)
785            xmax = MAX(evap(i,1),xmax)
786         ENDDO
787         PRINT*,'Evap du sol <EVAP>', xmin, xmax
788         DO nsrf = 2, nbsrf
789         DO i = 1, klon_glo
790            evap(i,nsrf) = evap(i,1)
791         ENDDO
792         ENDDO
793      ENDIF
794c
795c Lecture precipitation liquide:
796c
797      ierr = NF_INQ_VARID (nid, "rain_f", nvarid)
798      IF (ierr.NE.NF_NOERR) THEN
799         PRINT*, 'phyetat0: Le champ <rain_f> est absent'
800         CALL abort
801      ENDIF
802#ifdef NC_DOUBLE
803      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rain_fall_glo)
804#else
805      ierr = NF_GET_VAR_REAL(nid, nvarid, rain_fall_glo)
806#endif
807      IF (ierr.NE.NF_NOERR) THEN
808         PRINT*, 'phyetat0: Lecture echouee pour <rain_f>'
809         CALL abort
810      ENDIF
811      xmin = 1.0E+20
812      xmax = -1.0E+20
813      DO i = 1, klon_glo
814         xmin = MIN(rain_fall_glo(i),xmin)
815         xmax = MAX(rain_fall_glo(i),xmax)
816      ENDDO
817      PRINT*,'Precipitation liquide rain_f:', xmin, xmax
818c
819c Lecture precipitation solide:
820c
821      ierr = NF_INQ_VARID (nid, "snow_f", nvarid)
822      IF (ierr.NE.NF_NOERR) THEN
823         PRINT*, 'phyetat0: Le champ <snow_f> est absent'
824         CALL abort
825      ENDIF
826#ifdef NC_DOUBLE
827      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, snow_fall_glo)
828#else
829      ierr = NF_GET_VAR_REAL(nid, nvarid, snow_fall_glo)
830#endif
831      IF (ierr.NE.NF_NOERR) THEN
832         PRINT*, 'phyetat0: Lecture echouee pour <snow_f>'
833         CALL abort
834      ENDIF
835      xmin = 1.0E+20
836      xmax = -1.0E+20
837      DO i = 1, klon_glo
838         xmin = MIN(snow_fall_glo(i),xmin)
839         xmax = MAX(snow_fall_glo(i),xmax)
840      ENDDO
841      PRINT*,'Precipitation solide snow_f:', xmin, xmax
842c
843c Lecture rayonnement solaire au sol:
844c
845      ierr = NF_INQ_VARID (nid, "solsw", nvarid)
846      IF (ierr.NE.NF_NOERR) THEN
847         PRINT*, 'phyetat0: Le champ <solsw> est absent'
848         PRINT*, 'mis a zero'
849         solsw_glo = 0.
850      ELSE
851#ifdef NC_DOUBLE
852        ierr = NF_GET_VAR_DOUBLE(nid, nvarid, solsw_glo)
853#else
854        ierr = NF_GET_VAR_REAL(nid, nvarid, solsw_glo)
855#endif
856        IF (ierr.NE.NF_NOERR) THEN
857          PRINT*, 'phyetat0: Lecture echouee pour <solsw>'
858          CALL abort
859        ENDIF
860      ENDIF
861      xmin = 1.0E+20
862      xmax = -1.0E+20
863      DO i = 1, klon_glo
864         xmin = MIN(solsw_glo(i),xmin)
865         xmax = MAX(solsw_glo(i),xmax)
866      ENDDO
867      PRINT*,'Rayonnement solaire au sol solsw:', xmin, xmax
868c
869c Lecture rayonnement IF au sol:
870c
871      ierr = NF_INQ_VARID (nid, "sollw", nvarid)
872      IF (ierr.NE.NF_NOERR) THEN
873         PRINT*, 'phyetat0: Le champ <sollw> est absent'
874         PRINT*, 'mis a zero'
875         sollw_glo = 0.
876      ELSE
877#ifdef NC_DOUBLE
878        ierr = NF_GET_VAR_DOUBLE(nid, nvarid, sollw_glo)
879#else
880        ierr = NF_GET_VAR_REAL(nid, nvarid, sollw_glo)
881#endif
882        IF (ierr.NE.NF_NOERR) THEN
883          PRINT*, 'phyetat0: Lecture echouee pour <sollw>'
884          CALL abort
885        ENDIF
886      ENDIF
887      xmin = 1.0E+20
888      xmax = -1.0E+20
889      DO i = 1, klon_glo
890         xmin = MIN(sollw_glo(i),xmin)
891         xmax = MAX(sollw_glo(i),xmax)
892      ENDDO
893      PRINT*,'Rayonnement IF au sol sollw:', xmin, xmax
894     
895c
896c Lecture derive des flux:
897c
898      ierr = NF_INQ_VARID (nid, "fder", nvarid)
899      IF (ierr.NE.NF_NOERR) THEN
900         PRINT*, 'phyetat0: Le champ <fder> est absent'
901         PRINT*, 'mis a zero'
902         fder = 0.
903      ELSE
904#ifdef NC_DOUBLE
905        ierr = NF_GET_VAR_DOUBLE(nid, nvarid, fder)
906#else
907        ierr = NF_GET_VAR_REAL(nid, nvarid, fder)
908#endif
909        IF (ierr.NE.NF_NOERR) THEN
910          PRINT*, 'phyetat0: Lecture echouee pour <fder>'
911          CALL abort
912        ENDIF
913      ENDIF
914      xmin = 1.0E+20
915      xmax = -1.0E+20
916      DO i = 1, klon_glo
917         xmin = MIN(fder(i),xmin)
918         xmax = MAX(fder(i),xmax)
919      ENDDO
920      PRINT*,'Derive des flux fder:', xmin, xmax
921
922c
923c Lecture du rayonnement net au sol:
924c
925      ierr = NF_INQ_VARID (nid, "RADS", nvarid)
926      IF (ierr.NE.NF_NOERR) THEN
927         PRINT*, 'phyetat0: Le champ <RADS> est absent'
928         CALL abort
929      ENDIF
930#ifdef NC_DOUBLE
931      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, radsol_glo)
932#else
933      ierr = NF_GET_VAR_REAL(nid, nvarid, radsol_glo)
934#endif
935      IF (ierr.NE.NF_NOERR) THEN
936         PRINT*, 'phyetat0: Lecture echouee pour <RADS>'
937         CALL abort
938      ENDIF
939      xmin = 1.0E+20
940      xmax = -1.0E+20
941      DO i = 1, klon_glo
942         xmin = MIN(radsol_glo(i),xmin)
943         xmax = MAX(radsol_glo(i),xmax)
944      ENDDO
945      PRINT*,'Rayonnement net au sol radsol:', xmin, xmax
946c
947c Lecture de la longueur de rugosite
948c
949c
950      ierr = NF_INQ_VARID (nid, "RUG", nvarid)
951      IF (ierr.NE.NF_NOERR) THEN
952         PRINT*, 'phyetat0: Le champ <RUG> est absent'
953         PRINT*, '          Mais je vais essayer de lire RUG**'
954         DO nsrf = 1, nbsrf
955           IF (nsrf.GT.99) THEN
956             PRINT*, "Trop de sous-mailles"
957             CALL abort
958           ENDIF
959           WRITE(str2,'(i2.2)') nsrf
960           ierr = NF_INQ_VARID (nid, "RUG"//str2, nvarid)
961           IF (ierr.NE.NF_NOERR) THEN
962              PRINT*, "phyetat0: Le champ <RUG"//str2//"> est absent"
963              CALL abort
964           ENDIF
965#ifdef NC_DOUBLE
966           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, frugs(1,nsrf))
967#else
968           ierr = NF_GET_VAR_REAL(nid, nvarid, frugs(1,nsrf))
969#endif
970           IF (ierr.NE.NF_NOERR) THEN
971             PRINT*, "phyetat0: Lecture echouee pour <RUG"//str2//">"
972             CALL abort
973           ENDIF
974           xmin = 1.0E+20
975           xmax = -1.0E+20
976           DO i = 1, klon_glo
977              xmin = MIN(frugs(i,nsrf),xmin)
978              xmax = MAX(frugs(i,nsrf),xmax)
979           ENDDO
980           PRINT*,'rugosite du sol RUG**:', nsrf, xmin, xmax
981         ENDDO
982      ELSE
983         PRINT*, 'phyetat0: Le champ <RUG> est present'
984         PRINT*, '          J ignore donc les autres RUG**'
985#ifdef NC_DOUBLE
986         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, frugs(1,1))
987#else
988         ierr = NF_GET_VAR_REAL(nid, nvarid, frugs(1,1))
989#endif
990         IF (ierr.NE.NF_NOERR) THEN
991            PRINT*, "phyetat0: Lecture echouee pour <RUG>"
992            CALL abort
993         ENDIF
994         xmin = 1.0E+20
995         xmax = -1.0E+20
996         DO i = 1, klon_glo
997            xmin = MIN(frugs(i,1),xmin)
998            xmax = MAX(frugs(i,1),xmax)
999         ENDDO
1000         PRINT*,'rugosite <RUG>', xmin, xmax
1001         DO nsrf = 2, nbsrf
1002         DO i = 1, klon_glo
1003            frugs(i,nsrf) = frugs(i,1)
1004         ENDDO
1005         ENDDO
1006      ENDIF
1007
1008c
1009c Lecture de l'age de la neige:
1010c
1011      ierr = NF_INQ_VARID (nid, "AGESNO", nvarid)
1012      IF (ierr.NE.NF_NOERR) THEN
1013         PRINT*, 'phyetat0: Le champ <AGESNO> est absent'
1014         PRINT*, '          Mais je vais essayer de lire AGESNO**'
1015         DO nsrf = 1, nbsrf
1016           IF (nsrf.GT.99) THEN
1017             PRINT*, "Trop de sous-mailles"
1018             CALL abort
1019           ENDIF
1020           WRITE(str2,'(i2.2)') nsrf
1021           ierr = NF_INQ_VARID (nid, "AGESNO"//str2, nvarid)
1022           IF (ierr.NE.NF_NOERR) THEN
1023              PRINT*, "phyetat0: Le champ <AGESNO"//str2//"> est absent"
1024              agesno = 50.0
1025           ENDIF
1026#ifdef NC_DOUBLE
1027           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, agesno(1,nsrf))
1028#else
1029           ierr = NF_GET_VAR_REAL(nid, nvarid, agesno(1,nsrf))
1030#endif
1031           IF (ierr.NE.NF_NOERR) THEN
1032             PRINT*, "phyetat0: Lecture echouee pour <AGESNO"//str2//">"
1033             CALL abort
1034           ENDIF
1035           xmin = 1.0E+20
1036           xmax = -1.0E+20
1037           DO i = 1, klon_glo
1038              xmin = MIN(agesno(i,nsrf),xmin)
1039              xmax = MAX(agesno(i,nsrf),xmax)
1040           ENDDO
1041           PRINT*,'Age de la neige AGESNO**:', nsrf, xmin, xmax
1042         ENDDO
1043      ELSE
1044         PRINT*, 'phyetat0: Le champ <AGESNO> est present'
1045         PRINT*, '          J ignore donc les autres AGESNO**'
1046#ifdef NC_DOUBLE
1047         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, agesno(1,1))
1048#else
1049         ierr = NF_GET_VAR_REAL(nid, nvarid, agesno(1,1))
1050#endif
1051         IF (ierr.NE.NF_NOERR) THEN
1052            PRINT*, "phyetat0: Lecture echouee pour <AGESNO>"
1053            CALL abort
1054         ENDIF
1055         xmin = 1.0E+20
1056         xmax = -1.0E+20
1057         DO i = 1, klon_glo
1058            xmin = MIN(agesno(i,1),xmin)
1059            xmax = MAX(agesno(i,1),xmax)
1060         ENDDO
1061         PRINT*,'Age de la neige <AGESNO>', xmin, xmax
1062         DO nsrf = 2, nbsrf
1063         DO i = 1, klon_glo
1064            agesno(i,nsrf) = agesno(i,1)
1065         ENDDO
1066         ENDDO
1067      ENDIF
1068
1069c
1070      ierr = NF_INQ_VARID (nid, "ZMEA", nvarid)
1071      IF (ierr.NE.NF_NOERR) THEN
1072         PRINT*, 'phyetat0: Le champ <ZMEA> est absent'
1073         CALL abort
1074      ENDIF
1075#ifdef NC_DOUBLE
1076      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zmea_glo)
1077#else
1078      ierr = NF_GET_VAR_REAL(nid, nvarid, zmea_glo)
1079#endif
1080      IF (ierr.NE.NF_NOERR) THEN
1081         PRINT*, 'phyetat0: Lecture echouee pour <ZMEA>'
1082         CALL abort
1083      ENDIF
1084      xmin = 1.0E+20
1085      xmax = -1.0E+20
1086      DO i = 1, klon_glo
1087         xmin = MIN(zmea_glo(i),xmin)
1088         xmax = MAX(zmea_glo(i),xmax)
1089      ENDDO
1090      PRINT*,'OROGRAPHIE SOUS-MAILLE zmea:', xmin, xmax
1091c
1092c
1093      ierr = NF_INQ_VARID (nid, "ZSTD", nvarid)
1094      IF (ierr.NE.NF_NOERR) THEN
1095         PRINT*, 'phyetat0: Le champ <ZSTD> est absent'
1096         CALL abort
1097      ENDIF
1098#ifdef NC_DOUBLE
1099      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zstd_glo)
1100#else
1101      ierr = NF_GET_VAR_REAL(nid, nvarid, zstd_glo)
1102#endif
1103      IF (ierr.NE.NF_NOERR) THEN
1104         PRINT*, 'phyetat0: Lecture echouee pour <ZSTD>'
1105         CALL abort
1106      ENDIF
1107      xmin = 1.0E+20
1108      xmax = -1.0E+20
1109      DO i = 1, klon_glo
1110         xmin = MIN(zstd_glo(i),xmin)
1111         xmax = MAX(zstd_glo(i),xmax)
1112      ENDDO
1113      PRINT*,'OROGRAPHIE SOUS-MAILLE zstd:', xmin, xmax
1114c
1115c
1116      ierr = NF_INQ_VARID (nid, "ZSIG", nvarid)
1117      IF (ierr.NE.NF_NOERR) THEN
1118         PRINT*, 'phyetat0: Le champ <ZSIG> est absent'
1119         CALL abort
1120      ENDIF
1121#ifdef NC_DOUBLE
1122      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zsig_glo)
1123#else
1124      ierr = NF_GET_VAR_REAL(nid, nvarid, zsig_glo)
1125#endif
1126      IF (ierr.NE.NF_NOERR) THEN
1127         PRINT*, 'phyetat0: Lecture echouee pour <ZSIG>'
1128         CALL abort
1129      ENDIF
1130      xmin = 1.0E+20
1131      xmax = -1.0E+20
1132      DO i = 1, klon_glo
1133         xmin = MIN(zsig_glo(i),xmin)
1134         xmax = MAX(zsig_glo(i),xmax)
1135      ENDDO
1136      PRINT*,'OROGRAPHIE SOUS-MAILLE zsig:', xmin, xmax
1137c
1138c
1139      ierr = NF_INQ_VARID (nid, "ZGAM", nvarid)
1140      IF (ierr.NE.NF_NOERR) THEN
1141         PRINT*, 'phyetat0: Le champ <ZGAM> est absent'
1142         CALL abort
1143      ENDIF
1144#ifdef NC_DOUBLE
1145      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zgam_glo)
1146#else
1147      ierr = NF_GET_VAR_REAL(nid, nvarid, zgam_glo)
1148#endif
1149      IF (ierr.NE.NF_NOERR) THEN
1150         PRINT*, 'phyetat0: Lecture echouee pour <ZGAM>'
1151         CALL abort
1152      ENDIF
1153      xmin = 1.0E+20
1154      xmax = -1.0E+20
1155      DO i = 1, klon_glo
1156         xmin = MIN(zgam_glo(i),xmin)
1157         xmax = MAX(zgam_glo(i),xmax)
1158      ENDDO
1159      PRINT*,'OROGRAPHIE SOUS-MAILLE zgam:', xmin, xmax
1160c
1161c
1162      ierr = NF_INQ_VARID (nid, "ZTHE", nvarid)
1163      IF (ierr.NE.NF_NOERR) THEN
1164         PRINT*, 'phyetat0: Le champ <ZTHE> est absent'
1165         CALL abort
1166      ENDIF
1167#ifdef NC_DOUBLE
1168      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zthe_glo)
1169#else
1170      ierr = NF_GET_VAR_REAL(nid, nvarid, zthe_glo)
1171#endif
1172      IF (ierr.NE.NF_NOERR) THEN
1173         PRINT*, 'phyetat0: Lecture echouee pour <ZTHE>'
1174         CALL abort
1175      ENDIF
1176      xmin = 1.0E+20
1177      xmax = -1.0E+20
1178      DO i = 1, klon_glo
1179         xmin = MIN(zthe_glo(i),xmin)
1180         xmax = MAX(zthe_glo(i),xmax)
1181      ENDDO
1182      PRINT*,'OROGRAPHIE SOUS-MAILLE zthe:', xmin, xmax
1183c
1184c
1185      ierr = NF_INQ_VARID (nid, "ZPIC", nvarid)
1186      IF (ierr.NE.NF_NOERR) THEN
1187         PRINT*, 'phyetat0: Le champ <ZPIC> est absent'
1188         CALL abort
1189      ENDIF
1190#ifdef NC_DOUBLE
1191      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zpic_glo)
1192#else
1193      ierr = NF_GET_VAR_REAL(nid, nvarid, zpic_glo)
1194#endif
1195      IF (ierr.NE.NF_NOERR) THEN
1196         PRINT*, 'phyetat0: Lecture echouee pour <ZPIC>'
1197         CALL abort
1198      ENDIF
1199      xmin = 1.0E+20
1200      xmax = -1.0E+20
1201      DO i = 1, klon_glo
1202         xmin = MIN(zpic_glo(i),xmin)
1203         xmax = MAX(zpic_glo(i),xmax)
1204      ENDDO
1205      PRINT*,'OROGRAPHIE SOUS-MAILLE zpic:', xmin, xmax
1206c
1207      ierr = NF_INQ_VARID (nid, "ZVAL", nvarid)
1208      IF (ierr.NE.NF_NOERR) THEN
1209         PRINT*, 'phyetat0: Le champ <ZVAL> est absent'
1210         CALL abort
1211      ENDIF
1212#ifdef NC_DOUBLE
1213      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zval_glo)
1214#else
1215      ierr = NF_GET_VAR_REAL(nid, nvarid, zval_glo)
1216#endif
1217      IF (ierr.NE.NF_NOERR) THEN
1218         PRINT*, 'phyetat0: Lecture echouee pour <ZVAL>'
1219         CALL abort
1220      ENDIF
1221      xmin = 1.0E+20
1222      xmax = -1.0E+20
1223      DO i = 1, klon_glo
1224         xmin = MIN(zval_glo(i),xmin)
1225         xmax = MAX(zval_glo(i),xmax)
1226      ENDDO
1227      PRINT*,'OROGRAPHIE SOUS-MAILLE zval:', xmin, xmax
1228c
1229c
1230      ierr = NF_INQ_VARID (nid, "RUGSREL", nvarid)
1231      IF (ierr.NE.NF_NOERR) THEN
1232         PRINT*, 'phyetat0: Le champ <RUGSREL> est absent'
1233         CALL abort
1234      ENDIF
1235#ifdef NC_DOUBLE
1236      ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rugsrel_glo)
1237#else
1238      ierr = NF_GET_VAR_REAL(nid, nvarid, rugsrel_glo)
1239#endif
1240      IF (ierr.NE.NF_NOERR) THEN
1241         PRINT*, 'phyetat0: Lecture echouee pour <RUGSREL>'
1242         CALL abort
1243      ENDIF
1244      xmin = 1.0E+20
1245      xmax = -1.0E+20
1246      DO i = 1, klon_glo
1247         xmin = MIN(rugsrel_glo(i),xmin)
1248         xmax = MAX(rugsrel_glo(i),xmax)
1249      ENDDO
1250      PRINT*,'Rugosite relief (ecart-type) rugsrel:', xmin, xmax
1251c
1252c
1253      ancien_ok_glo = .TRUE.
1254c
1255      ierr = NF_INQ_VARID (nid, "TANCIEN", nvarid)
1256      IF (ierr.NE.NF_NOERR) THEN
1257         PRINT*, "phyetat0: Le champ <TANCIEN> est absent"
1258         PRINT*, "Depart legerement fausse. Mais je continue"
1259         ancien_ok_glo = .FALSE.
1260      ELSE
1261#ifdef NC_DOUBLE
1262         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, t_ancien_glo)
1263#else
1264         ierr = NF_GET_VAR_REAL(nid, nvarid, t_ancien_glo)
1265#endif
1266         IF (ierr.NE.NF_NOERR) THEN
1267            PRINT*, "phyetat0: Lecture echouee pour <TANCIEN>"
1268            CALL abort
1269         ENDIF
1270      ENDIF
1271c
1272      ierr = NF_INQ_VARID (nid, "QANCIEN", nvarid)
1273      IF (ierr.NE.NF_NOERR) THEN
1274         PRINT*, "phyetat0: Le champ <QANCIEN> est absent"
1275         PRINT*, "Depart legerement fausse. Mais je continue"
1276         ancien_ok_glo = .FALSE.
1277      ELSE
1278#ifdef NC_DOUBLE
1279         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, q_ancien_glo)
1280#else
1281         ierr = NF_GET_VAR_REAL(nid, nvarid, q_ancien_glo)
1282#endif
1283         IF (ierr.NE.NF_NOERR) THEN
1284            PRINT*, "phyetat0: Lecture echouee pour <QANCIEN>"
1285            CALL abort
1286         ENDIF
1287      ENDIF
1288c
1289      clwcon_glo=0.
1290      ierr = NF_INQ_VARID (nid, "CLWCON", nvarid)
1291      IF (ierr.NE.NF_NOERR) THEN
1292         PRINT*, "phyetat0: Le champ CLWCON est absent"
1293         PRINT*, "Depart legerement fausse. Mais je continue"
1294c        clwcon_glo = 0.
1295      ELSE
1296#ifdef NC_DOUBLE
1297         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, clwcon_glo)
1298#else
1299         ierr = NF_GET_VAR_REAL(nid, nvarid, clwcon_glo)
1300#endif
1301         IF (ierr.NE.NF_NOERR) THEN
1302            PRINT*, "phyetat0: Lecture echouee pour <CLWCON>"
1303            CALL abort
1304         ENDIF
1305      ENDIF
1306      xmin = 1.0E+20
1307      xmax = -1.0E+20
1308      xmin = MINval(clwcon_glo)
1309      xmax = MAXval(clwcon_glo)
1310      PRINT*,'Eau liquide convective (ecart-type) clwcon:', xmin, xmax
1311c
1312      rnebcon_glo = 0.
1313      ierr = NF_INQ_VARID (nid, "RNEBCON", nvarid)
1314      IF (ierr.NE.NF_NOERR) THEN
1315         PRINT*, "phyetat0: Le champ RNEBCON est absent"
1316         PRINT*, "Depart legerement fausse. Mais je continue"
1317c        rnebcon_glo = 0.
1318      ELSE
1319#ifdef NC_DOUBLE
1320         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rnebcon_glo)
1321#else
1322         ierr = NF_GET_VAR_REAL(nid, nvarid, rnebcon_glo)
1323#endif
1324         IF (ierr.NE.NF_NOERR) THEN
1325            PRINT*, "phyetat0: Lecture echouee pour <RNEBCON>"
1326            CALL abort
1327         ENDIF
1328      ENDIF
1329      xmin = 1.0E+20
1330      xmax = -1.0E+20
1331      xmin = MINval(rnebcon_glo)
1332      xmax = MAXval(rnebcon_glo)
1333      PRINT*,'Nebulosite convective (ecart-type) rnebcon:', xmin, xmax
1334
1335c
1336c Lecture ratqs
1337c
1338      ratqs_glo=0.
1339      ierr = NF_INQ_VARID (nid, "RATQS", nvarid)
1340      IF (ierr.NE.NF_NOERR) THEN
1341         PRINT*, "phyetat0: Le champ <RATQS> est absent"
1342         PRINT*, "Depart legerement fausse. Mais je continue"
1343         ratqs_glo = 0.
1344      ELSE
1345#ifdef NC_DOUBLE
1346         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, ratqs_glo)
1347#else
1348         ierr = NF_GET_VAR_REAL(nid, nvarid, ratqs_glo)
1349#endif
1350         IF (ierr.NE.NF_NOERR) THEN
1351            PRINT*, "phyetat0: Lecture echouee pour <RATQS>"
1352            CALL abort
1353         ENDIF
1354      ENDIF
1355      xmin = 1.0E+20
1356      xmax = -1.0E+20
1357      xmin = MINval(ratqs_glo)
1358      xmax = MAXval(ratqs_glo)
1359      PRINT*,'(ecart-type) ratqs:', xmin, xmax
1360c
1361c Lecture run_off_lic_0
1362c
1363      ierr = NF_INQ_VARID (nid, "RUNOFFLIC0", nvarid)
1364      IF (ierr.NE.NF_NOERR) THEN
1365         PRINT*, "phyetat0: Le champ <RUNOFFLIC0> est absent"
1366         PRINT*, "Depart legerement fausse. Mais je continue"
1367         run_off_lic_0 = 0.
1368      ELSE
1369#ifdef NC_DOUBLE
1370         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, run_off_lic_0)
1371#else
1372         ierr = NF_GET_VAR_REAL(nid, nvarid, run_off_lic_0)
1373#endif
1374         IF (ierr.NE.NF_NOERR) THEN
1375            PRINT*, "phyetat0: Lecture echouee pour <RUNOFFLIC0>"
1376            CALL abort
1377         ENDIF
1378      ENDIF
1379      xmin = 1.0E+20
1380      xmax = -1.0E+20
1381      xmin = MINval(run_off_lic_0)
1382      xmax = MAXval(run_off_lic_0)
1383      PRINT*,'(ecart-type) run_off_lic_0:', xmin, xmax
1384
1385
1386c Lecture de l'energie cinetique turbulente
1387c
1388
1389      IF (iflag_pbl>1) then
1390         PRINT*, 'phyetat0: Le champ <TKE> est absent'
1391         PRINT*, '          Mais je vais essayer de lire TKE**'
1392         DO nsrf = 1, nbsrf
1393           IF (nsrf.GT.99) THEN
1394             PRINT*, "Trop de sous-mailles"
1395             CALL abort
1396           ENDIF
1397           WRITE(str2,'(i2.2)') nsrf
1398           ierr = NF_INQ_VARID (nid, "TKE"//str2, nvarid)
1399           IF (ierr.NE.NF_NOERR) THEN
1400              PRINT*, "WARNING phyetat0: <TKE"//str2//"> est absent"
1401              pbl_tke_glo(:,:,nsrf)=1.e-8
1402           ELSE
1403#ifdef NC_DOUBLE
1404              ierr = NF_GET_VAR_DOUBLE(nid, nvarid,
1405     &                                pbl_tke_glo(1,1,nsrf))
1406#else
1407              ierr = NF_GET_VAR_REAL(nid, nvarid, pbl_tke_glo(1,1,nsrf))
1408#endif
1409              IF (ierr.NE.NF_NOERR) THEN
1410                PRINT*, "WARNING phyetat0: echec lect <TKE"//str2//">"
1411                CALL abort
1412              ENDIF
1413           ENDIF
1414
1415           xmin = 1.0E+20
1416           xmax = -1.0E+20
1417           DO k = 1, klev
1418           DO i = 1, klon_glo
1419              xmin = MIN(pbl_tke_glo(i,k,nsrf),xmin)
1420              xmax = MAX(pbl_tke_glo(i,k,nsrf),xmax)
1421           ENDDO
1422           ENDDO
1423           PRINT*,'Temperature du sol TKE**:', nsrf, xmin, xmax
1424         ENDDO
1425      ENDIF
1426c
1427c zmax0
1428      ierr = NF_INQ_VARID (nid, "ZMAX0", nvarid)
1429      IF (ierr.NE.NF_NOERR) THEN
1430         PRINT*, "phyetat0: Le champ <ZMAX0> est absent"
1431         PRINT*, "Depart legerement fausse. Mais je continue"
1432         zmax0_glo=40.
1433      ELSE
1434#ifdef NC_DOUBLE
1435         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, zmax0_glo)
1436#else
1437         ierr = NF_GET_VAR_REAL(nid, nvarid, zmax0_glo)
1438#endif
1439         IF (ierr.NE.NF_NOERR) THEN
1440            PRINT*, "phyetat0: Lecture echouee pour <ZMAX0>"
1441            CALL abort
1442         ENDIF
1443      ENDIF
1444      xmin = 1.0E+20
1445      xmax = -1.0E+20
1446      xmin = MINval(zmax0_glo)
1447      xmax = MAXval(zmax0_glo)
1448      PRINT*,'(ecart-type) zmax0:', xmin, xmax
1449c
1450c           f0(ig)=1.e-5
1451c f0
1452      ierr = NF_INQ_VARID (nid, "f0", nvarid)
1453      IF (ierr.NE.NF_NOERR) THEN
1454         PRINT*, "phyetat0: Le champ <f0> est absent"
1455         PRINT*, "Depart legerement fausse. Mais je continue"
1456         f0_glo=1.e-5
1457      ELSE
1458#ifdef NC_DOUBLE
1459         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, f0_glo)
1460#else
1461         ierr = NF_GET_VAR_REAL(nid, nvarid, f0_glo)
1462#endif
1463         IF (ierr.NE.NF_NOERR) THEN
1464            PRINT*, "phyetat0: Lecture echouee pour <f0>"
1465            CALL abort
1466         ENDIF
1467      ENDIF
1468      xmin = 1.0E+20
1469      xmax = -1.0E+20
1470      xmin = MINval(f0_glo)
1471      xmax = MAXval(f0_glo)
1472      PRINT*,'(ecart-type) f0:', xmin, xmax
1473c
1474c ema_work1
1475c
1476      ierr = NF_INQ_VARID (nid, "EMA_WORK1", nvarid)
1477      IF (ierr.NE.NF_NOERR) THEN
1478         PRINT*, "phyetat0: Le champ <EMA_WORK1> est absent"
1479         PRINT*, "Depart legerement fausse. Mais je continue"
1480         ema_work1_glo=0.
1481      ELSE
1482#ifdef NC_DOUBLE
1483         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, ema_work1_glo)
1484#else
1485         ierr = NF_GET_VAR_REAL(nid, nvarid, ema_work1_glo)
1486#endif
1487         IF (ierr.NE.NF_NOERR) THEN
1488            PRINT*, "phyetat0: Lecture echouee pour <EMA_WORK1>"
1489            CALL abort
1490         ENDIF
1491           xmin = 1.0E+20
1492           xmax = -1.0E+20
1493           DO k = 1, klev
1494           DO i = 1, klon
1495              xmin = MIN(ema_work1_glo(i,k),xmin)
1496              xmax = MAX(ema_work1_glo(i,k),xmax)
1497           ENDDO
1498           ENDDO
1499           PRINT*,'ema_work1:', xmin, xmax
1500      ENDIF
1501c
1502c ema_work2
1503c
1504      ierr = NF_INQ_VARID (nid, "EMA_WORK2", nvarid)
1505      IF (ierr.NE.NF_NOERR) THEN
1506         PRINT*, "phyetat0: Le champ <EMA_WORK2> est absent"
1507         PRINT*, "Depart legerement fausse. Mais je continue"
1508         ema_work2_glo=0.
1509      ELSE
1510#ifdef NC_DOUBLE
1511         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, ema_work2_glo)
1512#else
1513         ierr = NF_GET_VAR_REAL(nid, nvarid, ema_work2_glo)
1514#endif
1515         IF (ierr.NE.NF_NOERR) THEN
1516            PRINT*, "phyetat0: Lecture echouee pour <EMA_WORK2>"
1517            CALL abort
1518         ENDIF
1519           xmin = 1.0E+20
1520           xmax = -1.0E+20
1521           DO k = 1, klev
1522           DO i = 1, klon
1523              xmin = MIN(ema_work2_glo(i,k),xmin)
1524              xmax = MAX(ema_work2_glo(i,k),xmax)
1525           ENDDO
1526           ENDDO
1527           PRINT*,'ema_work2:', xmin, xmax
1528      ENDIF
1529c
1530c wake_deltat
1531c
1532      ierr = NF_INQ_VARID (nid, "WAKE_DELTAT", nvarid)
1533      IF (ierr.NE.NF_NOERR) THEN
1534         PRINT*, "phyetat0: Le champ <WAKE_DELTAT> est absent"
1535         PRINT*, "Depart legerement fausse. Mais je continue"
1536         wake_deltat_glo=0.
1537      ELSE
1538#ifdef NC_DOUBLE
1539         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, wake_deltat_glo)
1540#else
1541         ierr = NF_GET_VAR_REAL(nid, nvarid, wake_deltat_glo)
1542#endif
1543         IF (ierr.NE.NF_NOERR) THEN
1544            PRINT*, "phyetat0: Lecture echouee pour <WAKE_DELTAT>"
1545            CALL abort
1546         ENDIF
1547           xmin = 1.0E+20
1548           xmax = -1.0E+20
1549           DO k = 1, klev
1550           DO i = 1, klon_glo
1551              xmin = MIN(wake_deltat_glo(i,k),xmin)
1552              xmax = MAX(wake_deltat_glo(i,k),xmax)
1553           ENDDO
1554           ENDDO
1555           PRINT*,'wake_deltat:', xmin, xmax
1556      ENDIF
1557c
1558c wake_deltaq
1559c
1560      ierr = NF_INQ_VARID (nid, "WAKE_DELTAQ", nvarid)
1561      IF (ierr.NE.NF_NOERR) THEN
1562         PRINT*, "phyetat0: Le champ <WAKE_DELTAQ> est absent"
1563         PRINT*, "Depart legerement fausse. Mais je continue"
1564         wake_deltaq_glo=0.
1565      ELSE
1566#ifdef NC_DOUBLE
1567         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, wake_deltaq_glo)
1568#else
1569         ierr = NF_GET_VAR_REAL(nid, nvarid, wake_deltaq_glo)
1570#endif
1571         IF (ierr.NE.NF_NOERR) THEN
1572            PRINT*, "phyetat0: Lecture echouee pour <WAKE_DELTAQ>"
1573            CALL abort
1574         ENDIF
1575           xmin = 1.0E+20
1576           xmax = -1.0E+20
1577           DO k = 1, klev
1578           DO i = 1, klon_glo
1579              xmin = MIN(wake_deltaq_glo(i,k),xmin)
1580              xmax = MAX(wake_deltaq_glo(i,k),xmax)
1581           ENDDO
1582           ENDDO
1583           PRINT*,'wake_deltaq:', xmin, xmax
1584      ENDIF
1585c
1586c wake_s
1587c
1588      ierr = NF_INQ_VARID (nid, "WAKE_S", nvarid)
1589      IF (ierr.NE.NF_NOERR) THEN
1590         PRINT*, "phyetat0: Le champ <WAKE_S> est absent"
1591         PRINT*, "Depart legerement fausse. Mais je continue"
1592         wake_s_glo=0.
1593      ELSE
1594#ifdef NC_DOUBLE
1595         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, wake_s_glo)
1596#else
1597         ierr = NF_GET_VAR_REAL(nid, nvarid, wake_s_glo)
1598#endif
1599         IF (ierr.NE.NF_NOERR) THEN
1600            PRINT*, "phyetat0: Lecture echouee pour <WAKE_S>"
1601            CALL abort
1602         ENDIF
1603      ENDIF
1604      xmin = 1.0E+20
1605      xmax = -1.0E+20
1606      xmin = MINval(wake_s_glo)
1607      xmax = MAXval(wake_s_glo)
1608      PRINT*,'(ecart-type) wake_s:', xmin, xmax
1609c
1610c wake_cstar
1611c
1612      ierr = NF_INQ_VARID (nid, "WAKE_CSTAR", nvarid)
1613      IF (ierr.NE.NF_NOERR) THEN
1614         PRINT*, "phyetat0: Le champ <WAKE_CSTAR> est absent"
1615         PRINT*, "Depart legerement fausse. Mais je continue"
1616         wake_cstar_glo=0.
1617      ELSE
1618#ifdef NC_DOUBLE
1619         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, wake_cstar_glo)
1620#else
1621         ierr = NF_GET_VAR_REAL(nid, nvarid, wake_cstar_glo)
1622#endif
1623         IF (ierr.NE.NF_NOERR) THEN
1624            PRINT*, "phyetat0: Lecture echouee pour <WAKE_CSTAR>"
1625            CALL abort
1626         ENDIF
1627      ENDIF
1628      xmin = 1.0E+20
1629      xmax = -1.0E+20
1630      xmin = MINval(wake_cstar_glo)
1631      xmax = MAXval(wake_cstar_glo)
1632      PRINT*,'(ecart-type) wake_cstar:', xmin, xmax
1633c
1634c wake_fip
1635c
1636      ierr = NF_INQ_VARID (nid, "WAKE_FIP", nvarid)
1637      IF (ierr.NE.NF_NOERR) THEN
1638         PRINT*, "phyetat0: Le champ <WAKE_FIP> est absent"
1639         PRINT*, "Depart legerement fausse. Mais je continue"
1640         wake_fip_glo=0.
1641      ELSE
1642#ifdef NC_DOUBLE
1643         ierr = NF_GET_VAR_DOUBLE(nid, nvarid, wake_fip_glo)
1644#else
1645         ierr = NF_GET_VAR_REAL(nid, nvarid, wake_fip_glo)
1646#endif
1647         IF (ierr.NE.NF_NOERR) THEN
1648            PRINT*, "phyetat0: Lecture echouee pour <WAKE_FIP>"
1649            CALL abort
1650         ENDIF
1651      ENDIF
1652      xmin = 1.0E+20
1653      xmax = -1.0E+20
1654      xmin = MINval(wake_fip_glo)
1655      xmax = MAXval(wake_fip_glo)
1656      PRINT*,'(ecart-type) wake_fip:', xmin, xmax
1657c
1658c Fermer le fichier:
1659c
1660      ierr = NF_CLOSE(nid)
1661      ENDIF ! is_mpi_root .AND. is_omp_root
1662c
1663
1664c$OMP MASTER
1665cym  en attendant mieux
1666        iolat(1)=rlat_glo(1)
1667
1668!FH1D   
1669!iolat(jjm+1)=rlat(klon_glo)
1670        iolat(jjm+1-1/iim)=rlat_glo(klon_glo)
1671        if (iim.gt.1) then
1672        do i=2,jjm
1673          iolat(i)=rlat_glo(2+(i-2)*iim)
1674        enddo
1675        endif
1676
1677        CALL bcast_mpi(iolat)
1678        CALL bcast_mpi(rlon_glo)
1679
1680!FH1D
1681!       call init_iophy(iolat,rlon(2:iim+1))
1682        call init_iophy(iolat,rlon_glo(2-1/iim:iim+1-1/iim))
1683       
1684c$OMP END MASTER
1685       
1686      call Scatter( rlat_glo,rlat)
1687      call Scatter( rlon_glo,rlon)
1688      call Scatter( tsol_glo,ftsol)
1689      IF (iflag_pbl>1) then
1690         call Scatter( pbl_tke_glo,pbl_tke)
1691      endif
1692      call Scatter( zmax0_glo,zmax0)
1693      call Scatter( f0_glo,f0)
1694      call Scatter( ema_work1_glo, ema_work1)
1695      call Scatter( ema_work2_glo, ema_work2)
1696      call Scatter( wake_deltat_glo, wake_deltat)
1697      call Scatter( wake_deltaq_glo, wake_deltaq)
1698      call Scatter( wake_s_glo, wake_s)
1699      call Scatter( wake_cstar_glo, wake_cstar)
1700      call Scatter( wake_fip_glo, wake_fip)
1701      call Scatter( tsoil,tsoil_p)
1702      call Scatter( qsurf,qsurf_p)
1703      call Scatter( qsol,qsol_p)
1704      call Scatter( snow,snow_p)
1705      call Scatter( alb1_glo,falb1)
1706      call Scatter( alb2_glo,falb2)
1707      call Scatter( evap,evap_p)
1708      call Scatter( radsol_glo,radsol)
1709      call Scatter( rain_fall_glo,rain_fall)
1710      call Scatter( snow_fall_glo,snow_fall)
1711      call Scatter( sollw_glo,sollw)
1712      call Scatter( solsw_glo,solsw)
1713      call Scatter( fder,fder_p)
1714      call Scatter( frugs,frugs_p)
1715      call Scatter( agesno,agesno_p)
1716      call Scatter( zmea_glo,zmea)
1717      call Scatter( zstd_glo,zstd)
1718      call Scatter( zsig_glo,zsig)
1719      call Scatter( zgam_glo,zgam)
1720      call Scatter( zthe_glo,zthe)
1721      call Scatter( zpic_glo,zpic)
1722      call Scatter( zval_glo,zval)
1723      call Scatter( rugsrel_glo,rugoro)
1724      call Scatter( pctsrf_glo,pctsrf)
1725      call Scatter( run_off_lic_0,run_off_lic_0_p)
1726      call Scatter( t_ancien_glo,t_ancien)
1727      call Scatter( q_ancien_glo,q_ancien)
1728      call Scatter( rnebcon_glo,rnebcon)
1729      call Scatter( clwcon_glo,clwcon)
1730      call Scatter( ratqs_glo,ratqs)
1731      call Scatter( zmasq_glo,zmasq)
1732
1733c
1734c Initialize module pbl_surface_mod
1735c
1736      CALL pbl_surface_init(qsol_p, fder_p, snow_p, qsurf_p,
1737     $     evap_p, frugs_p, agesno_p, tsoil_p)
1738
1739c Initialize module ocean_cpl_mod for the case of coupled ocean
1740      IF ( type_ocean == 'couple' ) THEN
1741         CALL ocean_cpl_init(dtime, rlon, rlat)
1742      ENDIF
1743c
1744c Initilialize module fonte_neige_mod     
1745c
1746      CALL fonte_neige_init(run_off_lic_0_p)
1747
1748
1749      RETURN
1750      END
Note: See TracBrowser for help on using the repository browser.