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

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

  ViewVC Help
Powered by ViewVC 1.1.21