/[lmdze]/trunk/Sources/phylmd/phyredem.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/phyredem.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/phylmd/phyredem.f revision 3 by guez, Wed Feb 27 13:16:39 2008 UTC trunk/libf/phylmd/phyredem.f90 revision 13 by guez, Fri Jul 25 19:59:34 2008 UTC
# Line 1  Line 1 
1  !  SUBROUTINE phyredem(fichnom, rlat,rlon,pctsrf,tsol,tsoil, &
2  ! $Header: /home/cvsroot/LMDZ4/libf/phylmd/phyredem.F,v 1.3 2005/05/25 13:10:09 fairhead Exp $       tslab,seaice,qsurf,qsol,snow,albedo,alblw,evap,rain_fall,snow_fall, &
3  !       solsw,sollw,fder,radsol,frugs,agesno,zmea,zstd,zsig,zgam,zthe,zpic, &
4  c       zval, t_ancien,q_ancien,rnebcon,ratqs,clwcon,run_off_lic_0)
5        SUBROUTINE phyredem (fichnom,dtime,radpas,  
6       .           rlat,rlon, pctsrf,tsol,tsoil,    ! From phylmd/phyredem.F,v 1.3 2005/05/25 13:10:09
7  cIM "slab" ocean    ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
8       .           tslab,seaice,    ! Objet: Ecriture de l'etat de démarrage ou redémarrage pour la physique
9       .           qsurf,qsol,snow,  
10       .           albedo, alblw, evap, rain_fall, snow_fall,    USE indicesol, ONLY : is_lic, is_oce, is_sic, is_ter, nbsrf
11       .           solsw, sollw,fder,    USE dimphy, ONLY : klev, klon, zmasq
12       .           radsol,frugs,agesno,    USE dimsoil, ONLY : nsoilmx
13       .           zmea,zstd,zsig,zgam,zthe,zpic,zval,rugsrel,    USE temps, ONLY : itau_phy
14       .           t_ancien, q_ancien, rnebcon, ratqs, clwcon,    USE netcdf95, ONLY : nf95_create, nf95_put_att
15       .           run_off_lic_0)    USE netcdf, ONLY : nf90_clobber, nf90_global
16        use dimens_m  
17        use indicesol    IMPLICIT NONE
18        use dimphy  
19        use conf_gcm_m    INCLUDE 'netcdf.inc'
20        use dimsoil  
21        use temps    CHARACTER(len=*) fichnom
22        use clesphys    REAL, INTENT (IN) :: rlat(klon), rlon(klon)
23        IMPLICIT none    REAL :: tsol(klon,nbsrf)
24  c======================================================================    REAL :: tsoil(klon,nsoilmx,nbsrf)
25  c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818    !IM "slab" ocean
26  c Objet: Ecriture de l'etat de redemarrage pour la physique    REAL :: tslab(klon), seaice(klon) !IM "slab" ocean
27  c======================================================================    REAL :: qsurf(klon,nbsrf)
28        include "netcdf.inc"    REAL :: qsol(klon)
29  c======================================================================    REAL :: snow(klon,nbsrf)
30        CHARACTER*(*) fichnom    REAL :: albedo(klon,nbsrf)
31        REAL dtime    !IM BEG
32        INTEGER radpas    REAL :: alblw(klon,nbsrf)
33        REAL, intent(in):: rlat(klon), rlon(klon)    !IM END
34        REAL tsol(klon,nbsrf)    REAL :: evap(klon,nbsrf)
35        REAL tsoil(klon,nsoilmx,nbsrf)    REAL :: rain_fall(klon)
36  cIM "slab" ocean    REAL :: snow_fall(klon)
37        REAL tslab(klon), seaice(klon)    REAL :: solsw(klon)
38        REAL qsurf(klon,nbsrf)    REAL :: sollw(klon)
39        REAL qsol(klon)    REAL :: fder(klon)
40        REAL snow(klon,nbsrf)    REAL :: radsol(klon)
41        REAL albedo(klon,nbsrf)    REAL :: frugs(klon,nbsrf)
42  cIM BEG    REAL :: agesno(klon,nbsrf)
43        REAL alblw(klon,nbsrf)    REAL :: zmea(klon)
44  cIM END    REAL, intent(in):: zstd(klon)
45        REAL evap(klon,nbsrf)    REAL, intent(in):: zsig(klon)
46        REAL rain_fall(klon)    REAL :: zgam(klon)
47        REAL snow_fall(klon)    REAL :: zthe(klon)
48        real solsw(klon)    REAL :: zpic(klon)
49        real sollw(klon)    REAL :: zval(klon)
50        real fder(klon)    REAL :: pctsrf(klon,nbsrf)
51        REAL radsol(klon)    REAL :: t_ancien(klon,klev), q_ancien(klon,klev)
52        REAL frugs(klon,nbsrf)    REAL :: clwcon(klon,klev), rnebcon(klon,klev), ratqs(klon,klev)
53        REAL agesno(klon,nbsrf)    REAL :: run_off_lic_0(klon)
54        REAL zmea(klon)  
55        REAL zstd(klon)    INTEGER :: nid, nvarid, idim2, idim3
56        REAL zsig(klon)    INTEGER :: ierr
57        REAL zgam(klon)  
58        REAL zthe(klon)    INTEGER :: isoil, nsrf
59        REAL zpic(klon)    CHARACTER (7) :: str7
60        REAL zval(klon)    CHARACTER (2) :: str2
61        REAL rugsrel(klon)  
62        REAL pctsrf(klon, nbsrf)    !------------------------------------------------------------
63        REAL t_ancien(klon,klev), q_ancien(klon,klev)  
64        real clwcon(klon,klev),rnebcon(klon,klev),ratqs(klon,klev)    PRINT *, 'Call sequence information: phyredem'
65        REAL run_off_lic_0(klon)    CALL nf95_create(fichnom,nf90_clobber,nid)
66  c  
67        INTEGER nid, nvarid, idim1, idim2, idim3    call nf95_put_att(nid, nf90_global, 'title', 'Fichier redémarrage physique')
68        INTEGER ierr    call nf95_put_att(nid, nf90_global, "itau_phy", itau_phy)
69        INTEGER length  
70        PARAMETER (length=100)    ierr = nf_def_dim(nid,'points_physiques',klon,idim2)
71        REAL tab_cntrl(length)    ierr = nf_def_dim(nid,'horizon_vertical',klon*klev,idim3)
72  c  
73        INTEGER isoil, nsrf    ierr = nf_def_var(nid,'longitude',nf_float,1,idim2,nvarid)
74        CHARACTER*7 str7    ierr = nf_put_att_text(nid,nvarid,'title',32, &
75        CHARACTER*2 str2         'Longitudes de la grille physique')
76  c    ierr = nf_enddef(nid)
77        print *, "Call sequence information: phyredem"    ierr = nf_put_var_real(nid,nvarid,rlon)
78        ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)  
79        IF (ierr.NE.NF_NOERR) THEN    ierr = nf_redef(nid)
80          write(6,*)' Pb d''ouverture du fichier '//fichnom    ierr = nf_def_var(nid,'latitude',nf_float,1,idim2,nvarid)
81          write(6,*)' ierr = ', ierr    ierr = nf_put_att_text(nid,nvarid,'title',31, &
82           'Latitudes de la grille physique')
83      ierr = nf_enddef(nid)
84      ierr = nf_put_var_real(nid,nvarid,rlat)
85    
86      ! PB ajout du masque terre/mer
87    
88      ierr = nf_redef(nid)
89      ierr = nf_def_var(nid,'masque',nf_float,1,idim2,nvarid)
90      ierr = nf_put_att_text(nid,nvarid,'title',16,'masque terre mer')
91      ierr = nf_enddef(nid)
92      ierr = nf_put_var_real(nid,nvarid,zmasq)
93      ! BP ajout des fraction de chaque sous-surface
94    
95      ! 1. fraction de terre
96    
97      ierr = nf_redef(nid)
98      ierr = nf_def_var(nid,'FTER',nf_float,1,idim2,nvarid)
99      ierr = nf_put_att_text(nid,nvarid,'title',21,'fraction de continent')
100      ierr = nf_enddef(nid)
101      ierr = nf_put_var_real(nid,nvarid,pctsrf(1:klon,is_ter))
102    
103      ! 2. Fraction de glace de terre
104    
105      ierr = nf_redef(nid)
106      ierr = nf_def_var(nid,'FLIC',nf_float,1,idim2,nvarid)
107      ierr = nf_put_att_text(nid,nvarid,'title',24,'fraction glace de terre')
108      ierr = nf_enddef(nid)
109      ierr = nf_put_var_real(nid,nvarid,pctsrf(1:klon,is_lic))
110    
111      ! 3. fraction ocean
112    
113      ierr = nf_redef(nid)
114      ierr = nf_def_var(nid,'FOCE',nf_float,1,idim2,nvarid)
115      ierr = nf_put_att_text(nid,nvarid,'title',14,'fraction ocean')
116      ierr = nf_enddef(nid)
117      ierr = nf_put_var_real(nid,nvarid,pctsrf(1:klon,is_oce))
118    
119      ! 4. Fraction glace de mer
120    
121      ierr = nf_redef(nid)
122      ierr = nf_def_var(nid,'FSIC',nf_float,1,idim2,nvarid)
123      ierr = nf_put_att_text(nid,nvarid,'title',18,'fraction glace mer')
124      ierr = nf_enddef(nid)
125      ierr = nf_put_var_real(nid,nvarid,pctsrf(1:klon,is_sic))
126    
127    
128    
129      DO nsrf = 1, nbsrf
130         IF (nsrf<=99) THEN
131            WRITE (str2,'(i2.2)') nsrf
132            ierr = nf_redef(nid)
133            ierr = nf_def_var(nid,'TS'//str2,nf_float,1,idim2,nvarid)
134            ierr = nf_put_att_text(nid,nvarid,'title',28, &
135                 'Temperature de surface No.'//str2)
136            ierr = nf_enddef(nid)
137         ELSE
138            PRINT *, 'Trop de sous-mailles'
139          STOP 1          STOP 1
140        ENDIF       END IF
141  c       ierr = nf_put_var_real(nid,nvarid,tsol(1,nsrf))
142        ierr = NF_PUT_ATT_TEXT (nid, NF_GLOBAL, "title", 28,    END DO
143       .                       "Fichier redemmarage physique")  
144  c    DO nsrf = 1, nbsrf
145        ierr = NF_DEF_DIM (nid, "index", length, idim1)       DO isoil = 1, nsoilmx
146        ierr = NF_DEF_DIM (nid, "points_physiques", klon, idim2)          IF (isoil<=99 .AND. nsrf<=99) THEN
147        ierr = NF_DEF_DIM (nid, "horizon_vertical", klon*klev, idim3)             WRITE (str7,'(i2.2,"srf",i2.2)') isoil, nsrf
148  c             ierr = nf_redef(nid)
149        ierr = NF_ENDDEF(nid)             ierr = nf_def_var(nid,'Tsoil'//str7,nf_float,1,idim2,nvarid)
150  c             ierr = nf_put_att_text(nid,nvarid,'title',29, &
151        DO ierr = 1, length                  'Temperature du sol No.'//str7)
152           tab_cntrl(ierr) = 0.0             ierr = nf_enddef(nid)
       ENDDO  
       tab_cntrl(1) = dtime  
       tab_cntrl(2) = radpas  
       tab_cntrl(3) = co2_ppm  
       tab_cntrl(4) = solaire  
       tab_cntrl(5) = iflag_con  
       tab_cntrl(6) = nbapp_rad  
   
       IF( cycle_diurne ) tab_cntrl( 7 ) = 1.  
       IF(   soil_model ) tab_cntrl( 8 ) = 1.  
       IF(     new_oliq ) tab_cntrl( 9 ) = 1.  
       IF(     ok_orodr ) tab_cntrl(10 ) = 1.  
       IF(     ok_orolf ) tab_cntrl(11 ) = 1.  
   
       tab_cntrl(13) = day_end  
       tab_cntrl(14) = annee_ref  
       tab_cntrl(15) = itau_phy  
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "controle", NF_FLOAT, 1, idim1,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 22,  
      .                        "Parametres de controle")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)  
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "longitude", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 32,  
      .                        "Longitudes de la grille physique")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,rlon)  
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "latitude", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 31,  
      .                        "Latitudes de la grille physique")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,rlat)  
 c  
 C PB ajout du masque terre/mer  
 C  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "masque", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 16,  
      .                        "masque terre mer")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,zmasq)  
 c BP ajout des fraction de chaque sous-surface  
 C  
 C 1. fraction de terre  
 C  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "FTER", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 21,  
      .                        "fraction de continent")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,pctsrf(1 : klon, is_ter))  
 C  
 C 2. Fraction de glace de terre  
 C  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "FLIC", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 24,  
      .                        "fraction glace de terre")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,pctsrf(1 : klon, is_lic))  
 C  
 C 3. fraction ocean  
 C  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "FOCE", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 14,  
      .                        "fraction ocean")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,pctsrf(1 : klon, is_oce))  
 C  
 C 4. Fraction glace de mer  
 C  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "FSIC", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 18,  
      .                        "fraction glace mer")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,pctsrf(1 : klon, is_sic))  
 C  
 C  
 c  
       DO nsrf = 1, nbsrf  
         IF (nsrf.LE.99) THEN  
         WRITE(str2,'(i2.2)') nsrf  
         ierr = NF_REDEF (nid)  
         ierr = NF_DEF_VAR (nid, "TS"//str2, NF_FLOAT, 1, idim2,nvarid)  
         ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,  
      .                        "Temperature de surface No."//str2)  
         ierr = NF_ENDDEF(nid)  
         ELSE  
         PRINT*, "Trop de sous-mailles"  
         stop 1  
         ENDIF  
         ierr = NF_PUT_VAR_REAL (nid,nvarid,tsol(1,nsrf))  
       ENDDO  
 c  
       DO nsrf = 1, nbsrf  
       DO isoil=1, nsoilmx  
         IF (isoil.LE.99 .AND. nsrf.LE.99) THEN  
         WRITE(str7,'(i2.2,"srf",i2.2)') isoil,nsrf  
         ierr = NF_REDEF (nid)  
         ierr = NF_DEF_VAR (nid, "Tsoil"//str7,NF_FLOAT,1,idim2,nvarid)  
         ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 29,  
      .                        "Temperature du sol No."//str7)  
         ierr = NF_ENDDEF(nid)  
         ELSE  
         PRINT*, "Trop de couches"  
         stop 1  
         ENDIF  
         ierr = NF_PUT_VAR_REAL (nid,nvarid,tsoil(1,isoil,nsrf))  
       ENDDO  
       ENDDO  
 c  
 cIM "slab" ocean  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "TSLAB", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 33,  
      .                        "Ecart de la SST (pour slab-ocean)")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,tslab)  
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "SEAICE", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 33,  
      .                        "Glace de mer kg/m2 (pour slab-ocean)")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,seaice)  
 c  
       DO nsrf = 1, nbsrf  
         IF (nsrf.LE.99) THEN  
         WRITE(str2,'(i2.2)') nsrf  
         ierr = NF_REDEF (nid)  
         ierr = NF_DEF_VAR (nid,"QS"//str2,NF_FLOAT,1,idim2,nvarid)  
         ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 25,  
      .                        "Humidite de surface No."//str2)  
         ierr = NF_ENDDEF(nid)  
         ELSE  
         PRINT*, "Trop de sous-mailles"  
         stop 1  
         ENDIF  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,qsurf(1,nsrf))  
       END DO  
 C  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid,"QSOL",NF_FLOAT,1,idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 20,  
      .    "Eau dans le sol (mm)")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,qsol)  
 c  
       DO nsrf = 1, nbsrf  
         IF (nsrf.LE.99) THEN  
         WRITE(str2,'(i2.2)') nsrf  
         ierr = NF_REDEF (nid)  
         ierr = NF_DEF_VAR (nid,"ALBE"//str2,NF_FLOAT,1,idim2,nvarid)  
         ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 23,  
      .                        "albedo de surface No."//str2)  
         ierr = NF_ENDDEF(nid)  
         ELSE  
         PRINT*, "Trop de sous-mailles"  
         stop 1  
         ENDIF  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,albedo(1,nsrf))  
       ENDDO  
   
 cIM BEG albedo LW  
         DO nsrf = 1, nbsrf  
         IF (nsrf.LE.99) THEN  
         WRITE(str2,'(i2.2)') nsrf  
         ierr = NF_REDEF (nid)  
         ierr = NF_DEF_VAR (nid,"ALBLW"//str2,NF_FLOAT,1,idim2,nvarid)  
         ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 23,  
      .                        "albedo LW de surface No."//str2)  
         ierr = NF_ENDDEF(nid)  
         ELSE  
         PRINT*, "Trop de sous-mailles"  
         stop 1  
         ENDIF  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,alblw(1,nsrf))  
       ENDDO  
 cIM END albedo LW  
 c  
       DO nsrf = 1, nbsrf  
         IF (nsrf.LE.99) THEN  
         WRITE(str2,'(i2.2)') nsrf  
         ierr = NF_REDEF (nid)  
         ierr = NF_DEF_VAR (nid,"EVAP"//str2,NF_FLOAT,1,idim2,nvarid)  
         ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,  
      .                        "Evaporation de surface No."//str2)  
         ierr = NF_ENDDEF(nid)  
         ELSE  
         PRINT*, "Trop de sous-mailles"  
         stop 1  
         ENDIF  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,evap(1,nsrf))  
       ENDDO  
   
 c  
       DO nsrf = 1, nbsrf  
         IF (nsrf.LE.99) THEN  
         WRITE(str2,'(i2.2)') nsrf  
         ierr = NF_REDEF (nid)  
         ierr = NF_DEF_VAR (nid,"SNOW"//str2,NF_FLOAT,1,idim2,nvarid)  
         ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 22,  
      .                        "Neige de surface No."//str2)  
         ierr = NF_ENDDEF(nid)  
         ELSE  
         PRINT*, "Trop de sous-mailles"  
         stop 1  
         ENDIF  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,snow(1,nsrf))  
       ENDDO  
   
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "RADS", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,  
      .                        "Rayonnement net a la surface")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,radsol)  
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "solsw", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 32,  
      .                        "Rayonnement solaire a la surface")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,solsw)  
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "sollw", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 27,  
      .                        "Rayonnement IF a la surface")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,sollw)  
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "fder", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 14,  
      .                        "Derive de flux")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,fder)  
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "rain_f", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 21,  
      .                        "precipitation liquide")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,rain_fall)  
 c  
       ierr = NF_REDEF (nid)  
       ierr = NF_DEF_VAR (nid, "snow_f", NF_FLOAT, 1, idim2,nvarid)  
       ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 20,  
      .                        "precipitation solide")  
       ierr = NF_ENDDEF(nid)  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,snow_fall)  
 c  
       DO nsrf = 1, nbsrf  
         IF (nsrf.LE.99) THEN  
         WRITE(str2,'(i2.2)') nsrf  
         ierr = NF_REDEF (nid)  
         ierr = NF_DEF_VAR (nid,"RUG"//str2,NF_FLOAT,1,idim2,nvarid)  
         ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 23,  
      .                        "rugosite de surface No."//str2)  
         ierr = NF_ENDDEF(nid)  
         ELSE  
         PRINT*, "Trop de sous-mailles"  
         stop 1  
         ENDIF  
       ierr = NF_PUT_VAR_REAL (nid,nvarid,frugs(1,nsrf))  
       ENDDO  
 c  
       DO nsrf = 1, nbsrf  
         IF (nsrf.LE.99) THEN  
             WRITE(str2,'(i2.2)') nsrf  
             ierr = NF_REDEF (nid)  
             ierr = NF_DEF_VAR (nid,"AGESNO"//str2,NF_FLOAT,1,idim2  
      $          ,nvarid)  
             ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 15,  
      .                        "Age de la neige surface No."//str2)  
             ierr = NF_ENDDEF(nid)  
153          ELSE          ELSE
154              PRINT*, "Trop de sous-mailles"             PRINT *, 'Trop de couches'
155              stop 1             STOP 1
156          ENDIF          END IF
157        ierr = NF_PUT_VAR_REAL (nid,nvarid,agesno(1,nsrf))          ierr = nf_put_var_real(nid,nvarid,tsoil(1,isoil,nsrf))
158        ENDDO       END DO
159  c    END DO
160        ierr = NF_REDEF (nid)  
161        ierr = NF_DEF_VAR (nid, "ZMEA", NF_FLOAT, 1, idim2,nvarid)    !IM "slab" ocean
162        ierr = NF_ENDDEF(nid)    ierr = nf_redef(nid)
163        ierr = NF_PUT_VAR_REAL (nid,nvarid,zmea)    ierr = nf_def_var(nid,'TSLAB',nf_float,1,idim2,nvarid)
164  c    ierr = nf_put_att_text(nid,nvarid,'title',33, &
165        ierr = NF_REDEF (nid)         'Ecart de la SST (pour slab-ocean)')
166        ierr = NF_DEF_VAR (nid, "ZSTD", NF_FLOAT, 1, idim2,nvarid)    ierr = nf_enddef(nid)
167        ierr = NF_ENDDEF(nid)    ierr = nf_put_var_real(nid,nvarid,tslab)
168        ierr = NF_PUT_VAR_REAL (nid,nvarid,zstd)  
169        ierr = NF_REDEF (nid)    ierr = nf_redef(nid)
170        ierr = NF_DEF_VAR (nid, "ZSIG", NF_FLOAT, 1, idim2,nvarid)    ierr = nf_def_var(nid,'SEAICE',nf_float,1,idim2,nvarid)
171        ierr = NF_ENDDEF(nid)    ierr = nf_put_att_text(nid,nvarid,'title',33, &
172        ierr = NF_PUT_VAR_REAL (nid,nvarid,zsig)         'Glace de mer kg/m2 (pour slab-ocean)')
173        ierr = NF_REDEF (nid)    ierr = nf_enddef(nid)
174        ierr = NF_DEF_VAR (nid, "ZGAM", NF_FLOAT, 1, idim2,nvarid)    ierr = nf_put_var_real(nid,nvarid,seaice)
175        ierr = NF_ENDDEF(nid)  
176        ierr = NF_PUT_VAR_REAL (nid,nvarid,zgam)    DO nsrf = 1, nbsrf
177        ierr = NF_REDEF (nid)       IF (nsrf<=99) THEN
178        ierr = NF_DEF_VAR (nid, "ZTHE", NF_FLOAT, 1, idim2,nvarid)          WRITE (str2,'(i2.2)') nsrf
179        ierr = NF_ENDDEF(nid)          ierr = nf_redef(nid)
180        ierr = NF_PUT_VAR_REAL (nid,nvarid,zthe)          ierr = nf_def_var(nid,'QS'//str2,nf_float,1,idim2,nvarid)
181        ierr = NF_REDEF (nid)          ierr = nf_put_att_text(nid,nvarid,'title',25, &
182        ierr = NF_DEF_VAR (nid, "ZPIC", NF_FLOAT, 1, idim2,nvarid)               'Humidite de surface No.'//str2)
183        ierr = NF_ENDDEF(nid)          ierr = nf_enddef(nid)
184        ierr = NF_PUT_VAR_REAL (nid,nvarid,zpic)       ELSE
185        ierr = NF_REDEF (nid)          PRINT *, 'Trop de sous-mailles'
186        ierr = NF_DEF_VAR (nid, "ZVAL", NF_FLOAT, 1, idim2,nvarid)          STOP 1
187        ierr = NF_ENDDEF(nid)       END IF
188        ierr = NF_PUT_VAR_REAL (nid,nvarid,zval)       ierr = nf_put_var_real(nid,nvarid,qsurf(1,nsrf))
189        ierr = NF_REDEF (nid)    END DO
190        ierr = NF_DEF_VAR (nid, "RUGSREL", NF_FLOAT, 1, idim2,nvarid)  
191        ierr = NF_ENDDEF(nid)    ierr = nf_redef(nid)
192        ierr = NF_PUT_VAR_REAL (nid,nvarid,rugsrel)    ierr = nf_def_var(nid,'QSOL',nf_float,1,idim2,nvarid)
193  c    ierr = nf_put_att_text(nid,nvarid,'title',20,'Eau dans le sol (mm)')
194        ierr = NF_REDEF (nid)    ierr = nf_enddef(nid)
195        ierr = NF_DEF_VAR (nid, "TANCIEN", NF_FLOAT, 1, idim3,nvarid)    ierr = nf_put_var_real(nid,nvarid,qsol)
196        ierr = NF_ENDDEF(nid)  
197        ierr = NF_PUT_VAR_REAL (nid,nvarid,t_ancien)    DO nsrf = 1, nbsrf
198  c       IF (nsrf<=99) THEN
199        ierr = NF_REDEF (nid)          WRITE (str2,'(i2.2)') nsrf
200        ierr = NF_DEF_VAR (nid, "QANCIEN", NF_FLOAT, 1, idim3,nvarid)          ierr = nf_redef(nid)
201        ierr = NF_ENDDEF(nid)          ierr = nf_def_var(nid,'ALBE'//str2,nf_float,1,idim2,nvarid)
202        ierr = NF_PUT_VAR_REAL (nid,nvarid,q_ancien)          ierr = nf_put_att_text(nid,nvarid,'title',23, &
203  c               'albedo de surface No.'//str2)
204        ierr = NF_REDEF (nid)          ierr = nf_enddef(nid)
205        ierr = NF_DEF_VAR (nid, "RUGMER", NF_FLOAT, 1, idim2,nvarid)       ELSE
206        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,          PRINT *, 'Trop de sous-mailles'
207       .                        "Longueur de rugosite sur mer")          STOP 1
208        ierr = NF_ENDDEF(nid)       END IF
209        ierr = NF_PUT_VAR_REAL (nid,nvarid,frugs(1,is_oce))       ierr = nf_put_var_real(nid,nvarid,albedo(1,nsrf))
210  c    END DO
211        ierr = NF_REDEF (nid)  
212        ierr = NF_DEF_VAR (nid, "CLWCON", NF_FLOAT, 1, idim2,nvarid)    !IM BEG albedo LW
213        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,    DO nsrf = 1, nbsrf
214       .                        "Eau liquide convective")       IF (nsrf<=99) THEN
215        ierr = NF_ENDDEF(nid)          WRITE (str2,'(i2.2)') nsrf
216        ierr = NF_PUT_VAR_REAL (nid,nvarid,clwcon)          ierr = nf_redef(nid)
217  c          ierr = nf_def_var(nid,'ALBLW'//str2,nf_float,1,idim2,nvarid)
218        ierr = NF_REDEF (nid)          ierr = nf_put_att_text(nid,nvarid,'title',23, &
219        ierr = NF_DEF_VAR (nid, "RNEBCON", NF_FLOAT, 1, idim2,nvarid)               'albedo LW de surface No.'//str2)
220        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,          ierr = nf_enddef(nid)
221       .                        "Nebulosite convective")       ELSE
222        ierr = NF_ENDDEF(nid)          PRINT *, 'Trop de sous-mailles'
223        ierr = NF_PUT_VAR_REAL (nid,nvarid,rnebcon)          STOP 1
224  c       END IF
225        ierr = NF_REDEF (nid)       ierr = nf_put_var_real(nid,nvarid,alblw(1,nsrf))
226        ierr = NF_DEF_VAR (nid, "RATQS", NF_FLOAT, 1, idim2,nvarid)    END DO
227        ierr = NF_PUT_ATT_TEXT(nid,nvarid,"title", 5,    !IM END albedo LW
228       .                        "Ratqs")  
229        ierr = NF_ENDDEF(nid)    DO nsrf = 1, nbsrf
230        ierr = NF_PUT_VAR_REAL (nid,nvarid,ratqs)       IF (nsrf<=99) THEN
231  c          WRITE (str2,'(i2.2)') nsrf
232  c run_off_lic_0          ierr = nf_redef(nid)
233  c          ierr = nf_def_var(nid,'EVAP'//str2,nf_float,1,idim2,nvarid)
234        ierr = NF_REDEF (nid)          ierr = nf_put_att_text(nid,nvarid,'title',28, &
235        ierr=NF_DEF_VAR(nid,"RUNOFFLIC0",NF_FLOAT, 1,idim2,nvarid)               'Evaporation de surface No.'//str2)
236        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 10,          ierr = nf_enddef(nid)
237       .                        "Runofflic0")       ELSE
238        ierr = NF_ENDDEF(nid)          PRINT *, 'Trop de sous-mailles'
239        ierr = NF_PUT_VAR_REAL (nid,nvarid,run_off_lic_0)          STOP 1
240  c       END IF
241  c       ierr = nf_put_var_real(nid,nvarid,evap(1,nsrf))
242        ierr = NF_CLOSE(nid)    END DO
243  c  
244        RETURN  
245        END    DO nsrf = 1, nbsrf
246         IF (nsrf<=99) THEN
247            WRITE (str2,'(i2.2)') nsrf
248            ierr = nf_redef(nid)
249            ierr = nf_def_var(nid,'SNOW'//str2,nf_float,1,idim2,nvarid)
250            ierr = nf_put_att_text(nid,nvarid,'title',22, &
251                 'Neige de surface No.'//str2)
252            ierr = nf_enddef(nid)
253         ELSE
254            PRINT *, 'Trop de sous-mailles'
255            STOP 1
256         END IF
257         ierr = nf_put_var_real(nid,nvarid,snow(1,nsrf))
258      END DO
259    
260    
261      ierr = nf_redef(nid)
262      ierr = nf_def_var(nid,'RADS',nf_float,1,idim2,nvarid)
263      ierr = nf_put_att_text(nid,nvarid,'title',28, &
264           'Rayonnement net a la surface')
265      ierr = nf_enddef(nid)
266      ierr = nf_put_var_real(nid,nvarid,radsol)
267    
268      ierr = nf_redef(nid)
269      ierr = nf_def_var(nid,'solsw',nf_float,1,idim2,nvarid)
270      ierr = nf_put_att_text(nid,nvarid,'title',32, &
271           'Rayonnement solaire a la surface')
272      ierr = nf_enddef(nid)
273      ierr = nf_put_var_real(nid,nvarid,solsw)
274    
275      ierr = nf_redef(nid)
276      ierr = nf_def_var(nid,'sollw',nf_float,1,idim2,nvarid)
277      ierr = nf_put_att_text(nid,nvarid,'title',27, &
278           'Rayonnement IF a la surface')
279      ierr = nf_enddef(nid)
280      ierr = nf_put_var_real(nid,nvarid,sollw)
281    
282      ierr = nf_redef(nid)
283      ierr = nf_def_var(nid,'fder',nf_float,1,idim2,nvarid)
284      ierr = nf_put_att_text(nid,nvarid,'title',14,'Derive de flux')
285      ierr = nf_enddef(nid)
286      ierr = nf_put_var_real(nid,nvarid,fder)
287    
288      ierr = nf_redef(nid)
289      ierr = nf_def_var(nid,'rain_f',nf_float,1,idim2,nvarid)
290      ierr = nf_put_att_text(nid,nvarid,'title',21,'precipitation liquide')
291      ierr = nf_enddef(nid)
292      ierr = nf_put_var_real(nid,nvarid,rain_fall)
293    
294      ierr = nf_redef(nid)
295      ierr = nf_def_var(nid,'snow_f',nf_float,1,idim2,nvarid)
296      ierr = nf_put_att_text(nid,nvarid,'title',20,'precipitation solide')
297      ierr = nf_enddef(nid)
298      ierr = nf_put_var_real(nid,nvarid,snow_fall)
299    
300      DO nsrf = 1, nbsrf
301         IF (nsrf<=99) THEN
302            WRITE (str2,'(i2.2)') nsrf
303            ierr = nf_redef(nid)
304            ierr = nf_def_var(nid,'RUG'//str2,nf_float,1,idim2,nvarid)
305            ierr = nf_put_att_text(nid,nvarid,'title',23, &
306                 'rugosite de surface No.'//str2)
307            ierr = nf_enddef(nid)
308         ELSE
309            PRINT *, 'Trop de sous-mailles'
310            STOP 1
311         END IF
312         ierr = nf_put_var_real(nid,nvarid,frugs(1,nsrf))
313      END DO
314    
315      DO nsrf = 1, nbsrf
316         IF (nsrf<=99) THEN
317            WRITE (str2,'(i2.2)') nsrf
318            ierr = nf_redef(nid)
319            ierr = nf_def_var(nid,'AGESNO'//str2,nf_float,1,idim2,nvarid)
320            ierr = nf_put_att_text(nid,nvarid,'title',15, &
321                 'Age de la neige surface No.'//str2)
322            ierr = nf_enddef(nid)
323         ELSE
324            PRINT *, 'Trop de sous-mailles'
325            STOP 1
326         END IF
327         ierr = nf_put_var_real(nid,nvarid,agesno(1,nsrf))
328      END DO
329    
330      ierr = nf_redef(nid)
331      ierr = nf_def_var(nid,'ZMEA',nf_float,1,idim2,nvarid)
332      ierr = nf_enddef(nid)
333      ierr = nf_put_var_real(nid,nvarid,zmea)
334    
335      ierr = nf_redef(nid)
336      ierr = nf_def_var(nid,'ZSTD',nf_float,1,idim2,nvarid)
337      ierr = nf_enddef(nid)
338      ierr = nf_put_var_real(nid,nvarid,zstd)
339      ierr = nf_redef(nid)
340      ierr = nf_def_var(nid,'ZSIG',nf_float,1,idim2,nvarid)
341      ierr = nf_enddef(nid)
342      ierr = nf_put_var_real(nid,nvarid,zsig)
343      ierr = nf_redef(nid)
344      ierr = nf_def_var(nid,'ZGAM',nf_float,1,idim2,nvarid)
345      ierr = nf_enddef(nid)
346      ierr = nf_put_var_real(nid,nvarid,zgam)
347      ierr = nf_redef(nid)
348      ierr = nf_def_var(nid,'ZTHE',nf_float,1,idim2,nvarid)
349      ierr = nf_enddef(nid)
350      ierr = nf_put_var_real(nid,nvarid,zthe)
351      ierr = nf_redef(nid)
352      ierr = nf_def_var(nid,'ZPIC',nf_float,1,idim2,nvarid)
353      ierr = nf_enddef(nid)
354      ierr = nf_put_var_real(nid,nvarid,zpic)
355      ierr = nf_redef(nid)
356      ierr = nf_def_var(nid,'ZVAL',nf_float,1,idim2,nvarid)
357      ierr = nf_enddef(nid)
358      ierr = nf_put_var_real(nid,nvarid,zval)
359    
360      ierr = nf_redef(nid)
361      ierr = nf_def_var(nid,'TANCIEN',nf_float,1,idim3,nvarid)
362      ierr = nf_enddef(nid)
363      ierr = nf_put_var_real(nid,nvarid,t_ancien)
364    
365      ierr = nf_redef(nid)
366      ierr = nf_def_var(nid,'QANCIEN',nf_float,1,idim3,nvarid)
367      ierr = nf_enddef(nid)
368      ierr = nf_put_var_real(nid,nvarid,q_ancien)
369    
370      ierr = nf_redef(nid)
371      ierr = nf_def_var(nid,'RUGMER',nf_float,1,idim2,nvarid)
372      ierr = nf_put_att_text(nid,nvarid,'title',28, &
373           'Longueur de rugosite sur mer')
374      ierr = nf_enddef(nid)
375      ierr = nf_put_var_real(nid,nvarid,frugs(1,is_oce))
376    
377      ierr = nf_redef(nid)
378      ierr = nf_def_var(nid,'CLWCON',nf_float,1,idim2,nvarid)
379      ierr = nf_put_att_text(nid,nvarid,'title',28,'Eau liquide convective')
380      ierr = nf_enddef(nid)
381      ierr = nf_put_var_real(nid,nvarid,clwcon)
382    
383      ierr = nf_redef(nid)
384      ierr = nf_def_var(nid,'RNEBCON',nf_float,1,idim2,nvarid)
385      ierr = nf_put_att_text(nid,nvarid,'title',28,'Nebulosite convective')
386      ierr = nf_enddef(nid)
387      ierr = nf_put_var_real(nid,nvarid,rnebcon)
388    
389      ierr = nf_redef(nid)
390      ierr = nf_def_var(nid,'RATQS',nf_float,1,idim2,nvarid)
391      ierr = nf_put_att_text(nid,nvarid,'title',5,'Ratqs')
392      ierr = nf_enddef(nid)
393      ierr = nf_put_var_real(nid,nvarid,ratqs)
394    
395      ! run_off_lic_0
396    
397      ierr = nf_redef(nid)
398      ierr = nf_def_var(nid,'RUNOFFLIC0',nf_float,1,idim2,nvarid)
399      ierr = nf_put_att_text(nid,nvarid,'title',10,'Runofflic0')
400      ierr = nf_enddef(nid)
401      ierr = nf_put_var_real(nid,nvarid,run_off_lic_0)
402    
403    
404      ierr = nf_close(nid)
405    
406    END SUBROUTINE phyredem

Legend:
Removed from v.3  
changed lines
  Added in v.13

  ViewVC Help
Powered by ViewVC 1.1.21