/[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 13 by guez, Fri Jul 25 19:59:34 2008 UTC trunk/Sources/phylmd/phyredem.f revision 156 by guez, Thu Jul 16 17:39:10 2015 UTC
# Line 1  Line 1 
1  SUBROUTINE phyredem(fichnom, 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, 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    REAL, INTENT (IN) :: rlat(klon), rlon(klon)         qsol, snow, albedo, evap, rain_fall, snow_fall, solsw, sollw, &
9    REAL :: tsol(klon,nbsrf)         fder, radsol, frugs, agesno, zmea, zstd, zsig, zgam, zthe, zpic, zval, &
10    REAL :: tsoil(klon,nsoilmx,nbsrf)         t_ancien, q_ancien, rnebcon, ratqs, clwcon, run_off_lic_0, sig1, w01)
11    !IM "slab" ocean  
12    REAL :: tslab(klon), seaice(klon) !IM "slab" ocean      ! From phylmd/phyredem.F, version 1.3, 2005/05/25 13:10:09
13    REAL :: qsurf(klon,nbsrf)      ! Author: Z. X. Li (LMD/CNRS)
14    REAL :: qsol(klon)      ! Date: 1993/08/18
15    REAL :: snow(klon,nbsrf)  
16    REAL :: albedo(klon,nbsrf)      ! Objet : \'ecriture de l'\'etat de d\'emarrage ou red\'emarrage
17    !IM BEG      ! pour la physique
18    REAL :: alblw(klon,nbsrf)  
19    !IM END      USE dimphy, ONLY: klev, klon, zmasq
20    REAL :: evap(klon,nbsrf)      USE dimsoil, ONLY: nsoilmx
21    REAL :: rain_fall(klon)      USE indicesol, ONLY: is_lic, is_oce, is_sic, is_ter, nbsrf
22    REAL :: snow_fall(klon)      USE netcdf, ONLY: nf90_clobber, nf90_global, nf90_float
23    REAL :: solsw(klon)      USE netcdf95, ONLY: nf95_create, nf95_put_att, nf95_def_dim, &
24    REAL :: sollw(klon)           nf95_def_var, nf95_enddef, nf95_put_var, nf95_close
25    REAL :: fder(klon)      use phyetat0_m, only: rlat, rlon
26    REAL :: radsol(klon)      USE temps, ONLY: itau_phy
27    REAL :: frugs(klon,nbsrf)  
28    REAL :: agesno(klon,nbsrf)      CHARACTER(len=*), INTENT(IN):: fichnom
29    REAL :: zmea(klon)      REAL, INTENT(IN):: pctsrf(:, :) ! (klon, nbsrf)
30    REAL, intent(in):: zstd(klon)      REAL, INTENT(IN):: tsol(:, :) ! (klon, nbsrf)
31    REAL, intent(in):: zsig(klon)      REAL, INTENT(IN):: tsoil(:, :, :) ! (klon, nsoilmx, nbsrf)
32    REAL :: zgam(klon)      REAL, INTENT(IN):: tslab(:), seaice(:) ! (klon) slab ocean
33    REAL :: zthe(klon)      REAL, INTENT(IN):: qsurf(:, :) ! (klon, nbsrf)
34    REAL :: zpic(klon)  
35    REAL :: zval(klon)      REAL, intent(in):: qsol(:) ! (klon)
36    REAL :: pctsrf(klon,nbsrf)      ! column-density of water in soil, in kg m-2
37    REAL :: t_ancien(klon,klev), q_ancien(klon,klev)  
38    REAL :: clwcon(klon,klev), rnebcon(klon,klev), ratqs(klon,klev)      REAL, INTENT(IN):: snow(klon, nbsrf)
39    REAL :: run_off_lic_0(klon)      REAL, INTENT(IN):: albedo(klon, nbsrf)
40        REAL, INTENT(IN):: evap(klon, nbsrf)
41    INTEGER :: nid, nvarid, idim2, idim3      REAL, INTENT(IN):: rain_fall(klon)
42    INTEGER :: ierr      REAL, INTENT(IN):: snow_fall(klon)
43        REAL, INTENT(IN):: solsw(klon)
44    INTEGER :: isoil, nsrf      REAL, INTENT(IN):: sollw(klon)
45    CHARACTER (7) :: str7      REAL, INTENT(IN):: fder(klon)
46    CHARACTER (2) :: str2      REAL, INTENT(IN):: radsol(klon)
47        REAL, INTENT(IN):: frugs(klon, nbsrf)
48    !------------------------------------------------------------      REAL, INTENT(IN):: agesno(klon, nbsrf)
49        REAL, INTENT(IN):: zmea(klon)
50    PRINT *, 'Call sequence information: phyredem'      REAL, intent(in):: zstd(klon)
51    CALL nf95_create(fichnom,nf90_clobber,nid)      REAL, intent(in):: zsig(klon)
52        REAL, intent(in):: zgam(klon)
53    call nf95_put_att(nid, nf90_global, 'title', 'Fichier redémarrage physique')      REAL, intent(in):: zthe(klon)
54    call nf95_put_att(nid, nf90_global, "itau_phy", itau_phy)      REAL, intent(in):: zpic(klon)
55        REAL, intent(in):: zval(klon)
56    ierr = nf_def_dim(nid,'points_physiques',klon,idim2)      REAL, intent(in):: t_ancien(klon, klev), q_ancien(klon, klev)
57    ierr = nf_def_dim(nid,'horizon_vertical',klon*klev,idim3)      REAL, intent(in):: rnebcon(klon, klev), ratqs(klon, klev)
58        REAL, intent(in):: clwcon(klon, klev)
59    ierr = nf_def_var(nid,'longitude',nf_float,1,idim2,nvarid)      REAL, intent(in):: run_off_lic_0(klon)
60    ierr = nf_put_att_text(nid,nvarid,'title',32, &      real, intent(in):: sig1(klon, klev) ! section adiabatic updraft
61         'Longitudes de la grille physique')  
62    ierr = nf_enddef(nid)      real, intent(in):: w01(klon, klev)
63    ierr = nf_put_var_real(nid,nvarid,rlon)      ! vertical velocity within adiabatic updraft
64    
65    ierr = nf_redef(nid)      ! Local:
66    ierr = nf_def_var(nid,'latitude',nf_float,1,idim2,nvarid)  
67    ierr = nf_put_att_text(nid,nvarid,'title',31, &      INTEGER ncid, idim2, idim3, dimid_nbsrf, dimid_nsoilmx
68         'Latitudes de la grille physique')      integer varid, varid_run_off_lic_0, varid_sig1, varid_w01, varid_rlon
69    ierr = nf_enddef(nid)      integer varid_rlat, varid_zmasq, varid_fter, varid_flic, varid_foce
70    ierr = nf_put_var_real(nid,nvarid,rlat)      integer varid_fsic, varid_ts, varid_tsoil, varid_tslab, varid_SEAICE
71        integer varid_qs, varid_QSOL, varid_albe, varid_evap, varid_snow
72    ! PB ajout du masque terre/mer      integer varid_rads, varid_solsw, varid_sollw, varid_fder, varid_rain_f
73        integer varid_snow_f, varid_rug, varid_agesno, varid_zmea, varid_zstd
74    ierr = nf_redef(nid)      integer varid_zsig, varid_zgam, varid_zthe, varid_zpic, varid_zval
75    ierr = nf_def_var(nid,'masque',nf_float,1,idim2,nvarid)      integer varid_tancien, varid_qancien, varid_rugmer, varid_clwcon
76    ierr = nf_put_att_text(nid,nvarid,'title',16,'masque terre mer')      integer varid_rnebcon, varid_ratqs
77    ierr = nf_enddef(nid)  
78    ierr = nf_put_var_real(nid,nvarid,zmasq)      !------------------------------------------------------------
79    ! BP ajout des fraction de chaque sous-surface  
80        PRINT *, 'Call sequence information: phyredem'
81    ! 1. fraction de terre      CALL nf95_create(fichnom, nf90_clobber, ncid)
82    
83    ierr = nf_redef(nid)      call nf95_put_att(ncid, nf90_global, 'title', &
84    ierr = nf_def_var(nid,'FTER',nf_float,1,idim2,nvarid)           'start file for the physics code')
85    ierr = nf_put_att_text(nid,nvarid,'title',21,'fraction de continent')      call nf95_put_att(ncid, nf90_global, "itau_phy", itau_phy)
86    ierr = nf_enddef(nid)  
87    ierr = nf_put_var_real(nid,nvarid,pctsrf(1:klon,is_ter))      call nf95_def_dim(ncid, 'points_physiques', klon, idim2)
88        call nf95_def_dim(ncid, 'klev', klev, idim3)
89    ! 2. Fraction de glace de terre      call nf95_def_dim(ncid, 'nbsrf', nbsrf, dimid_nbsrf)
90        call nf95_def_dim(ncid, 'nsoilmx', nsoilmx, dimid_nsoilmx)
91    ierr = nf_redef(nid)  
92    ierr = nf_def_var(nid,'FLIC',nf_float,1,idim2,nvarid)      call nf95_def_var(ncid, 'longitude', nf90_float, idim2, varid_rlon)
93    ierr = nf_put_att_text(nid,nvarid,'title',24,'fraction glace de terre')      call nf95_def_var(ncid, 'latitude', nf90_float, idim2, varid_rlat)
94    ierr = nf_enddef(nid)  
95    ierr = nf_put_var_real(nid,nvarid,pctsrf(1:klon,is_lic))      call nf95_def_var(ncid, 'masque', nf90_float, idim2, varid_zmasq)
96        call nf95_put_att(ncid, varid_zmasq, 'title', 'masque terre mer')
97    ! 3. fraction ocean  
98        ! Fractions de chaque sous-surface
99    ierr = nf_redef(nid)  
100    ierr = nf_def_var(nid,'FOCE',nf_float,1,idim2,nvarid)      call nf95_def_var(ncid, 'FTER', nf90_float, idim2, varid_fter)
101    ierr = nf_put_att_text(nid,nvarid,'title',14,'fraction ocean')      call nf95_put_att(ncid, varid_fter, 'title', 'fraction de continent')
102    ierr = nf_enddef(nid)  
103    ierr = nf_put_var_real(nid,nvarid,pctsrf(1:klon,is_oce))      call nf95_def_var(ncid, 'FLIC', nf90_float, idim2, varid_flic)
104        call nf95_put_att(ncid, varid_flic, 'title', 'fraction glace de terre')
105    ! 4. Fraction glace de mer  
106        call nf95_def_var(ncid, 'FOCE', nf90_float, idim2, varid_foce)
107    ierr = nf_redef(nid)      call nf95_put_att(ncid, varid_foce, 'title', 'fraction ocean')
108    ierr = nf_def_var(nid,'FSIC',nf_float,1,idim2,nvarid)  
109    ierr = nf_put_att_text(nid,nvarid,'title',18,'fraction glace mer')      call nf95_def_var(ncid, 'FSIC', nf90_float, idim2, varid_fsic)
110    ierr = nf_enddef(nid)      call nf95_put_att(ncid, varid_fsic, 'title', 'fraction glace mer')
111    ierr = nf_put_var_real(nid,nvarid,pctsrf(1:klon,is_sic))  
112        call nf95_def_var(ncid, 'TS', nf90_float, (/idim2, dimid_nbsrf/), varid_ts)
113        call nf95_put_att(ncid, varid_ts, 'title', 'surface temperature')
114    
115    DO nsrf = 1, nbsrf      call nf95_def_var(ncid, 'Tsoil', nf90_float, (/idim2, dimid_nsoilmx, &
116       IF (nsrf<=99) THEN           dimid_nbsrf/), varid_tsoil)
117          WRITE (str2,'(i2.2)') nsrf      call nf95_put_att(ncid, varid_tsoil, 'title', 'soil temperature')
118          ierr = nf_redef(nid)  
119          ierr = nf_def_var(nid,'TS'//str2,nf_float,1,idim2,nvarid)      call nf95_def_var(ncid, 'TSLAB', nf90_float, idim2, varid_tslab)
120          ierr = nf_put_att_text(nid,nvarid,'title',28, &      call nf95_put_att(ncid, varid_tslab, 'title', &
121               'Temperature de surface No.'//str2)           'Ecart de la SST (pour slab-ocean)')
122          ierr = nf_enddef(nid)  
123       ELSE      call nf95_def_var(ncid, 'SEAICE', nf90_float, idim2, varid_SEAICE)
124          PRINT *, 'Trop de sous-mailles'      call nf95_put_att(ncid, varid_SEAICE, 'title', &
125          STOP 1           'Glace de mer kg/m2 (pour slab-ocean)')
126       END IF  
127       ierr = nf_put_var_real(nid,nvarid,tsol(1,nsrf))      call nf95_def_var(ncid, 'QS', nf90_float, (/idim2, dimid_nbsrf/), varid_qs)
128    END DO      call nf95_put_att(ncid, varid, 'title', 'Humidite de surface')
129    
130    DO nsrf = 1, nbsrf      call nf95_def_var(ncid, 'QSOL', nf90_float, idim2, varid_QSOL)
131       DO isoil = 1, nsoilmx      call nf95_put_att(ncid, varid_QSOL, 'title', 'Eau dans le sol (mm)')
132          IF (isoil<=99 .AND. nsrf<=99) THEN  
133             WRITE (str7,'(i2.2,"srf",i2.2)') isoil, nsrf      call nf95_def_var(ncid, 'ALBE', nf90_float, (/idim2, dimid_nbsrf/), &
134             ierr = nf_redef(nid)           varid_albe)
135             ierr = nf_def_var(nid,'Tsoil'//str7,nf_float,1,idim2,nvarid)      call nf95_put_att(ncid, varid_albe, 'title', 'albedo de surface')
136             ierr = nf_put_att_text(nid,nvarid,'title',29, &  
137                  'Temperature du sol No.'//str7)      call nf95_def_var(ncid, 'EVAP', nf90_float, (/idim2, dimid_nbsrf/), &
138             ierr = nf_enddef(nid)           varid_evap)
139          ELSE      call nf95_put_att(ncid, varid_evap, 'title', 'Evaporation de surface')
140             PRINT *, 'Trop de couches'  
141             STOP 1      call nf95_def_var(ncid, 'SNOW', nf90_float, (/idim2, dimid_nbsrf/), &
142          END IF           varid_snow)
143          ierr = nf_put_var_real(nid,nvarid,tsoil(1,isoil,nsrf))      call nf95_put_att(ncid, varid_snow, 'title', 'Neige de surface')
144       END DO  
145    END DO      call nf95_def_var(ncid, 'RADS', nf90_float, idim2, varid_rads)
146        call nf95_put_att(ncid, varid_rads, 'title', &
147    !IM "slab" ocean           'Rayonnement net a la surface')
148    ierr = nf_redef(nid)  
149    ierr = nf_def_var(nid,'TSLAB',nf_float,1,idim2,nvarid)      call nf95_def_var(ncid, 'solsw', nf90_float, idim2, varid_solsw)
150    ierr = nf_put_att_text(nid,nvarid,'title',33, &      call nf95_put_att(ncid, varid_solsw, 'title', &
151         'Ecart de la SST (pour slab-ocean)')           'Rayonnement solaire a la surface')
152    ierr = nf_enddef(nid)  
153    ierr = nf_put_var_real(nid,nvarid,tslab)      call nf95_def_var(ncid, 'sollw', nf90_float, idim2, varid_sollw)
154        call nf95_put_att(ncid, varid_sollw, 'title', &
155    ierr = nf_redef(nid)           'Rayonnement IF a la surface')
156    ierr = nf_def_var(nid,'SEAICE',nf_float,1,idim2,nvarid)  
157    ierr = nf_put_att_text(nid,nvarid,'title',33, &      call nf95_def_var(ncid, 'fder', nf90_float, idim2, varid_fder)
158         'Glace de mer kg/m2 (pour slab-ocean)')      call nf95_put_att(ncid, varid_fder, 'title', 'Derive de flux')
159    ierr = nf_enddef(nid)  
160    ierr = nf_put_var_real(nid,nvarid,seaice)      call nf95_def_var(ncid, 'rain_f', nf90_float, idim2, varid_rain_f)
161        call nf95_put_att(ncid, varid_rain_f, 'title', 'precipitation liquide')
162    DO nsrf = 1, nbsrf  
163       IF (nsrf<=99) THEN      call nf95_def_var(ncid, 'snow_f', nf90_float, idim2, varid_snow_f)
164          WRITE (str2,'(i2.2)') nsrf      call nf95_put_att(ncid, varid_snow_f, 'title', 'precipitation solide')
165          ierr = nf_redef(nid)  
166          ierr = nf_def_var(nid,'QS'//str2,nf_float,1,idim2,nvarid)      call nf95_def_var(ncid, 'RUG', nf90_float, (/idim2, dimid_nbsrf/), &
167          ierr = nf_put_att_text(nid,nvarid,'title',25, &           varid_rug)
168               'Humidite de surface No.'//str2)      call nf95_put_att(ncid, varid_rug, 'title', 'rugosite de surface')
169          ierr = nf_enddef(nid)  
170       ELSE      call nf95_def_var(ncid, 'AGESNO', nf90_float, (/idim2, dimid_nbsrf/), &
171          PRINT *, 'Trop de sous-mailles'           varid_agesno)
172          STOP 1      call nf95_put_att(ncid, varid_agesno, 'title', 'Age de la neige surface')
173       END IF  
174       ierr = nf_put_var_real(nid,nvarid,qsurf(1,nsrf))      call nf95_def_var(ncid, 'ZMEA', nf90_float, idim2, varid_zmea)
175    END DO      call nf95_def_var(ncid, 'ZSTD', nf90_float, idim2, varid_zstd)
176        call nf95_def_var(ncid, 'ZSIG', nf90_float, idim2, varid_zsig)
177    ierr = nf_redef(nid)      call nf95_def_var(ncid, 'ZGAM', nf90_float, idim2, varid_zgam)
178    ierr = nf_def_var(nid,'QSOL',nf_float,1,idim2,nvarid)      call nf95_def_var(ncid, 'ZTHE', nf90_float, idim2, varid_zthe)
179    ierr = nf_put_att_text(nid,nvarid,'title',20,'Eau dans le sol (mm)')      call nf95_def_var(ncid, 'ZPIC', nf90_float, idim2, varid_zpic)
180    ierr = nf_enddef(nid)      call nf95_def_var(ncid, 'ZVAL', nf90_float, idim2, varid_zval)
181    ierr = nf_put_var_real(nid,nvarid,qsol)      call nf95_def_var(ncid, 'TANCIEN', nf90_float, (/idim2, idim3/), &
182             varid_tancien)
183    DO nsrf = 1, nbsrf      call nf95_def_var(ncid, 'QANCIEN', nf90_float, (/idim2, idim3/), &
184       IF (nsrf<=99) THEN           varid_qancien)
185          WRITE (str2,'(i2.2)') nsrf  
186          ierr = nf_redef(nid)      call nf95_def_var(ncid, 'RUGMER', nf90_float, idim2, varid_rugmer)
187          ierr = nf_def_var(nid,'ALBE'//str2,nf_float,1,idim2,nvarid)      call nf95_put_att(ncid, varid_rugmer, 'title', &
188          ierr = nf_put_att_text(nid,nvarid,'title',23, &           'Longueur de rugosite sur mer')
189               'albedo de surface No.'//str2)  
190          ierr = nf_enddef(nid)      call nf95_def_var(ncid, 'CLWCON', nf90_float, idim2, varid_clwcon)
191       ELSE      call nf95_put_att(ncid, varid_clwcon, 'title', 'Eau liquide convective')
192          PRINT *, 'Trop de sous-mailles'  
193          STOP 1      call nf95_def_var(ncid, 'RNEBCON', nf90_float, idim2, varid_rnebcon)
194       END IF      call nf95_put_att(ncid, varid_rnebcon, 'title', 'Nebulosite convective')
195       ierr = nf_put_var_real(nid,nvarid,albedo(1,nsrf))  
196    END DO      call nf95_def_var(ncid, 'RATQS', nf90_float, idim2, varid_ratqs)
197        call nf95_put_att(ncid, varid_ratqs, 'title', 'Ratqs')
198    !IM BEG albedo LW  
199    DO nsrf = 1, nbsrf      call nf95_def_var(ncid, 'RUNOFFLIC0', nf90_float, idim2, &
200       IF (nsrf<=99) THEN           varid_run_off_lic_0)
201          WRITE (str2,'(i2.2)') nsrf      call nf95_put_att(ncid, varid_run_off_lic_0, 'title', 'Runofflic0')
202          ierr = nf_redef(nid)  
203          ierr = nf_def_var(nid,'ALBLW'//str2,nf_float,1,idim2,nvarid)      call nf95_def_var(ncid, 'sig1', nf90_float, (/idim2, idim3/), varid_sig1)
204          ierr = nf_put_att_text(nid,nvarid,'title',23, &      call nf95_put_att(ncid, varid_sig1, 'long_name', &
205               'albedo LW de surface No.'//str2)           'section adiabatic updraft')
206          ierr = nf_enddef(nid)  
207       ELSE      call nf95_def_var(ncid, 'w01', nf90_float, (/idim2, idim3/), varid_w01)
208          PRINT *, 'Trop de sous-mailles'      call nf95_put_att(ncid, varid_w01, 'long_name', &
209          STOP 1           'vertical velocity within adiabatic updraft')
210       END IF  
211       ierr = nf_put_var_real(nid,nvarid,alblw(1,nsrf))      call nf95_enddef(ncid)
212    END DO  
213    !IM END albedo LW      call nf95_put_var(ncid, varid_rlon, rlon)
214        call nf95_put_var(ncid, varid_rlat, rlat)
215    DO nsrf = 1, nbsrf      call nf95_put_var(ncid, varid_zmasq, zmasq)
216       IF (nsrf<=99) THEN      call nf95_put_var(ncid, varid_fter, pctsrf(:, is_ter))
217          WRITE (str2,'(i2.2)') nsrf      call nf95_put_var(ncid, varid_flic, pctsrf(:, is_lic))
218          ierr = nf_redef(nid)      call nf95_put_var(ncid, varid_foce, pctsrf(:, is_oce))
219          ierr = nf_def_var(nid,'EVAP'//str2,nf_float,1,idim2,nvarid)      call nf95_put_var(ncid, varid_fsic, pctsrf(:, is_sic))
220          ierr = nf_put_att_text(nid,nvarid,'title',28, &      call nf95_put_var(ncid, varid_ts, tsol)
221               'Evaporation de surface No.'//str2)      call nf95_put_var(ncid, varid_tsoil, tsoil)
222          ierr = nf_enddef(nid)      call nf95_put_var(ncid, varid_tslab, tslab)
223       ELSE      call nf95_put_var(ncid, varid_SEAICE, seaice)
224          PRINT *, 'Trop de sous-mailles'      call nf95_put_var(ncid, varid_qs, qsurf)
225          STOP 1      call nf95_put_var(ncid, varid_QSOL, qsol)
226       END IF      call nf95_put_var(ncid, varid_albe, albedo)
227       ierr = nf_put_var_real(nid,nvarid,evap(1,nsrf))      call nf95_put_var(ncid, varid_evap, evap)
228    END DO      call nf95_put_var(ncid, varid_snow, snow)
229        call nf95_put_var(ncid, varid_rads, radsol)
230        call nf95_put_var(ncid, varid_solsw, solsw)
231    DO nsrf = 1, nbsrf      call nf95_put_var(ncid, varid_sollw, sollw)
232       IF (nsrf<=99) THEN      call nf95_put_var(ncid, varid_fder, fder)
233          WRITE (str2,'(i2.2)') nsrf      call nf95_put_var(ncid, varid_rain_f, rain_fall)
234          ierr = nf_redef(nid)      call nf95_put_var(ncid, varid_snow_f, snow_fall)
235          ierr = nf_def_var(nid,'SNOW'//str2,nf_float,1,idim2,nvarid)      call nf95_put_var(ncid, varid_rug, frugs)
236          ierr = nf_put_att_text(nid,nvarid,'title',22, &      call nf95_put_var(ncid, varid_agesno, agesno)
237               'Neige de surface No.'//str2)      call nf95_put_var(ncid, varid_zmea, zmea)
238          ierr = nf_enddef(nid)      call nf95_put_var(ncid, varid_zstd, zstd)
239       ELSE      call nf95_put_var(ncid, varid_zsig, zsig)
240          PRINT *, 'Trop de sous-mailles'      call nf95_put_var(ncid, varid_zgam, zgam)
241          STOP 1      call nf95_put_var(ncid, varid_zthe, zthe)
242       END IF      call nf95_put_var(ncid, varid_zpic, zpic)
243       ierr = nf_put_var_real(nid,nvarid,snow(1,nsrf))      call nf95_put_var(ncid, varid_zval, zval)
244    END DO      call nf95_put_var(ncid, varid_tancien, t_ancien)
245        call nf95_put_var(ncid, varid_qancien, q_ancien)
246        call nf95_put_var(ncid, varid_rugmer, frugs(:, is_oce))
247    ierr = nf_redef(nid)      call nf95_put_var(ncid, varid_clwcon, clwcon(:, 1))
248    ierr = nf_def_var(nid,'RADS',nf_float,1,idim2,nvarid)      call nf95_put_var(ncid, varid_rnebcon, rnebcon(:, 1))
249    ierr = nf_put_att_text(nid,nvarid,'title',28, &      call nf95_put_var(ncid, varid_ratqs, ratqs(:, 1))
250         'Rayonnement net a la surface')      call nf95_put_var(ncid, varid_run_off_lic_0, run_off_lic_0)
251    ierr = nf_enddef(nid)      call nf95_put_var(ncid, varid_sig1, sig1)
252    ierr = nf_put_var_real(nid,nvarid,radsol)      call nf95_put_var(ncid, varid_w01, w01)
   
   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)  
   
   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)  
   
   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)  
   
   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)  
   
   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)  
   
   DO nsrf = 1, nbsrf  
      IF (nsrf<=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  
      END IF  
      ierr = nf_put_var_real(nid,nvarid,frugs(1,nsrf))  
   END DO  
   
   DO nsrf = 1, nbsrf  
      IF (nsrf<=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)  
      ELSE  
         PRINT *, 'Trop de sous-mailles'  
         STOP 1  
      END IF  
      ierr = nf_put_var_real(nid,nvarid,agesno(1,nsrf))  
   END DO  
   
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'ZMEA',nf_float,1,idim2,nvarid)  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,zmea)  
   
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'ZSTD',nf_float,1,idim2,nvarid)  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,zstd)  
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'ZSIG',nf_float,1,idim2,nvarid)  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,zsig)  
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'ZGAM',nf_float,1,idim2,nvarid)  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,zgam)  
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'ZTHE',nf_float,1,idim2,nvarid)  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,zthe)  
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'ZPIC',nf_float,1,idim2,nvarid)  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,zpic)  
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'ZVAL',nf_float,1,idim2,nvarid)  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,zval)  
   
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'TANCIEN',nf_float,1,idim3,nvarid)  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,t_ancien)  
   
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'QANCIEN',nf_float,1,idim3,nvarid)  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,q_ancien)  
   
   ierr = nf_redef(nid)  
   ierr = nf_def_var(nid,'RUGMER',nf_float,1,idim2,nvarid)  
   ierr = nf_put_att_text(nid,nvarid,'title',28, &  
        'Longueur de rugosite sur mer')  
   ierr = nf_enddef(nid)  
   ierr = nf_put_var_real(nid,nvarid,frugs(1,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)  
253    
254        call nf95_close(ncid)
255    
256    ierr = nf_close(nid)    END SUBROUTINE phyredem
257    
258  END SUBROUTINE phyredem  end module phyredem_m

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

  ViewVC Help
Powered by ViewVC 1.1.21