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

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

  ViewVC Help
Powered by ViewVC 1.1.21