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

Legend:
Removed from v.15  
changed lines
  Added in v.76

  ViewVC Help
Powered by ViewVC 1.1.21