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

Last change on this file since 950 was 937, checked in by lmdzadmin, 17 years ago

Ajout variables convection (ema_work1, ema_work2) dans startphy.nc
IM

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