/[lmdze]/trunk/libf/dyn3d/etat0.f90
ViewVC logotype

Diff of /trunk/libf/dyn3d/etat0.f90

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

revision 5 by guez, Mon Mar 3 16:32:04 2008 UTC revision 48 by guez, Tue Jul 19 12:54:20 2011 UTC
# Line 6  module etat0_mod Line 6  module etat0_mod
6    IMPLICIT NONE    IMPLICIT NONE
7    
8    REAL pctsrf(klon, nbsrf)    REAL pctsrf(klon, nbsrf)
9      ! ("pctsrf(i, :)" is the composition of the surface at horizontal
10      !  position "i")
11    
12    private nbsrf, klon    private nbsrf, klon
13    
# Line 15  contains Line 17  contains
17    
18      ! From "etat0_netcdf.F", version 1.3 2005/05/25 13:10:09      ! From "etat0_netcdf.F", version 1.3 2005/05/25 13:10:09
19    
20      ! This subroutine creates "masque".      ! This subroutine creates "mask".
21    
22      USE ioipsl, only: flinget, flinclo, flinopen_nozoom, flininfo, histclo      use caldyn0_m, only: caldyn0
23        use comconst, only: dtvr, daysec, cpp, kappa
     USE start_init_orog_m, only: start_init_orog, masque, phis  
     use start_init_phys_m, only: qsol_2d  
     use startdyn, only: start_inter_3d, start_init_dyn  
     use dimens_m, only: iim, jjm, llm, nqmx  
     use paramet_m, only: ip1jm, ip1jmp1  
     use comconst, only: dtvr, daysec, cpp, kappa, pi  
     use comdissnew, only: lstardis, nitergdiv, nitergrot, niterh, &  
          tetagdiv, tetagrot, tetatemp  
     use indicesol, only: is_oce, is_sic, is_ter, is_lic, epsfra  
     use comvert, only: ap, bp, preff, pa  
     use dimphy, only: zmasq  
     use conf_gcm_m, only: day_step, iphysiq, dayref, anneeref  
24      use comgeom, only: rlatu, rlonv, rlonu, rlatv, aire_2d, apoln, apols, &      use comgeom, only: rlatu, rlonv, rlonu, rlatv, aire_2d, apoln, apols, &
25           cu_2d, cv_2d           cu_2d, cv_2d
26      use serre, only: alphax      use comvert, only: ap, bp, preff, pa
27        use conf_gcm_m, only: day_step, iphysiq, dayref, anneeref
28        use dimens_m, only: iim, jjm, llm, nqmx
29        use dimphy, only: zmasq
30      use dimsoil, only: nsoilmx      use dimsoil, only: nsoilmx
31      use temps, only: itau_dyn, itau_phy, annee_ref, day_ref, dt      use dynredem0_m, only: dynredem0
32      use clesphys, only: ok_orodr, nbapp_rad      use dynredem1_m, only: dynredem1
33        use exner_hyb_m, only: exner_hyb
34        USE flincom, only: flinclo, flinopen_nozoom, flininfo
35        use geopot_m, only: geopot
36      use grid_atob, only: grille_m      use grid_atob, only: grille_m
37      use grid_change, only: init_dyn_phy, dyn_phy      use grid_change, only: init_dyn_phy, dyn_phy
38        use histcom, only: histclo
39        use indicesol, only: is_oce, is_sic, is_ter, is_lic, epsfra
40        use iniadvtrac_m, only: iniadvtrac
41        use inidissip_m, only: inidissip
42        use inigeom_m, only: inigeom
43        use netcdf, only: nf90_nowrite
44        use netcdf95, only: nf95_open, nf95_close, nf95_get_var, nf95_inq_varid
45        use nr_util, only: pi
46        use paramet_m, only: ip1jm, ip1jmp1
47        use phyredem_m, only: phyredem
48        use pressure_var, only: pls, p3d
49      use q_sat_m, only: q_sat      use q_sat_m, only: q_sat
50      use exner_hyb_m, only: exner_hyb      use regr_lat_time_coefoz_m, only: regr_lat_time_coefoz
51      use regr_coefoz_m, only: regr_coefoz      use regr_pr_o3_m, only: regr_pr_o3
52      use advtrac_m, only: iniadvtrac      use serre, only: alphax
53      use netcdf95, only: nf95_open, nf95_close, nf95_inq_varid, nf90_nowrite, &      USE start_init_orog_m, only: start_init_orog, mask, phis
54           nf90_get_var, handle_err      use start_init_phys_m, only: start_init_phys
55      use pressure_m, only: pls, p3d      use startdyn, only: start_inter_3d, start_init_dyn
56        use temps, only: itau_phy, annee_ref, day_ref
57    
58      ! Variables local to the procedure:      ! Variables local to the procedure:
59    
# Line 76  contains Line 84  contains
84      REAL rugmer(klon)      REAL rugmer(klon)
85      real, dimension(iim + 1, jjm + 1):: relief, zstd_2d, zsig_2d, zgam_2d      real, dimension(iim + 1, jjm + 1):: relief, zstd_2d, zsig_2d, zgam_2d
86      real, dimension(iim + 1, jjm + 1):: zthe_2d, zpic_2d, zval_2d      real, dimension(iim + 1, jjm + 1):: zthe_2d, zpic_2d, zval_2d
87      real, dimension(iim + 1, jjm + 1):: tsol_2d, psol      real, dimension(iim + 1, jjm + 1):: tsol_2d, qsol_2d, psol
88      REAL zmea(klon), zstd(klon)      REAL zmea(klon), zstd(klon)
89      REAL zsig(klon), zgam(klon)      REAL zsig(klon), zgam(klon)
90      REAL zthe(klon)      REAL zthe(klon)
91      REAL zpic(klon), zval(klon)      REAL zpic(klon), zval(klon)
     REAL rugsrel(klon)  
92      REAL t_ancien(klon, llm), q_ancien(klon, llm)      !      REAL t_ancien(klon, llm), q_ancien(klon, llm)      !
93      REAL run_off_lic_0(klon)      REAL run_off_lic_0(klon)
94      real clwcon(klon, llm), rnebcon(klon, llm), ratqs(klon, llm)      real clwcon(klon, llm), rnebcon(klon, llm), ratqs(klon, llm)
95      ! déclarations pour lecture glace de mer      ! déclarations pour lecture glace de mer
96      INTEGER iml_lic, jml_lic, llm_tmp, ttm_tmp      INTEGER iml_lic, jml_lic, llm_tmp, ttm_tmp
97      INTEGER itaul(1), fid      INTEGER itaul(1), fid, ncid, varid
98      REAL lev(1), date      REAL lev(1), date
99      REAL, ALLOCATABLE:: lon_lic(:, :), lat_lic(:, :)      REAL, ALLOCATABLE:: lon_lic(:, :), lat_lic(:, :)
100      REAL, ALLOCATABLE:: dlon_lic(:), dlat_lic(:)      REAL, ALLOCATABLE:: dlon_lic(:), dlat_lic(:)
# Line 104  contains Line 111  contains
111      REAL pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)      REAL pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)
112      REAL w(ip1jmp1, llm)      REAL w(ip1jmp1, llm)
113      REAL phystep      REAL phystep
114      INTEGER radpas      real trash
     integer ncid, varid, ncerr, month  
115    
116      !---------------------------------      !---------------------------------
117    
118      print *, "Call sequence information: etat0"      print *, "Call sequence information: etat0"
119    
     ! Construct a grid:  
   
120      dtvr = daysec / real(day_step)      dtvr = daysec / real(day_step)
121      print *, 'dtvr = ', dtvr      print *, 'dtvr = ', dtvr
122    
123        ! Construct a grid:
124    
125      pa = 5e4      pa = 5e4
126      CALL iniconst      CALL iniconst
127      CALL inigeom      CALL inigeom
# Line 132  contains Line 138  contains
138      lonfi(klon) = 0.      lonfi(klon) = 0.
139    
140      call start_init_orog(relief, zstd_2d, zsig_2d, zgam_2d, zthe_2d, zpic_2d, &      call start_init_orog(relief, zstd_2d, zsig_2d, zgam_2d, zthe_2d, zpic_2d, &
141           zval_2d) ! also compute "masque" and "phis"           zval_2d) ! also compute "mask" and "phis"
142      call init_dyn_phy ! define the mask "dyn_phy" for distinct grid points      call init_dyn_phy ! define the mask "dyn_phy" for distinct grid points
143      zmasq = pack(masque, dyn_phy)      zmasq = pack(mask, dyn_phy)
144      PRINT *, 'Masque construit'      PRINT *, 'Masque construit'
145    
146      CALL start_init_dyn(tsol_2d, psol) ! also compute "qsol_2d"      call start_init_phys(tsol_2d, qsol_2d)
147        CALL start_init_dyn(tsol_2d, psol)
148    
149      ! Compute pressure on intermediate levels:      ! Compute pressure on intermediate levels:
150      forall(l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * psol(:, :)      forall(l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * psol
151      CALL exner_hyb(psol, p3d, pks, pk)      CALL exner_hyb(psol, p3d, pks, pk)
152      IF (MINVAL(pk) == MAXVAL(pk)) stop '"pk" should not be constant'      IF (MINVAL(pk) == MAXVAL(pk)) stop '"pk" should not be constant'
153    
154      pls(:, :, :) = preff * (pk(:, :, :) / cpp)**(1. / kappa)      pls = preff * (pk / cpp)**(1. / kappa)
155      PRINT *, "minval(pls(:, :, :)) = ", minval(pls(:, :, :))      PRINT *, "minval(pls) = ", minval(pls)
156      print *, "maxval(pls(:, :, :)) = ", maxval(pls(:, :, :))      print *, "maxval(pls) = ", maxval(pls)
157    
158      uvent(:, :, :) = start_inter_3d('U', rlonv, rlatv, pls)      call start_inter_3d('U', rlonv, rlatv, pls, uvent)
159      forall (l = 1: llm) uvent(:iim, :, l) = uvent(:iim, :, l) * cu_2d(:iim, :)      forall (l = 1: llm) uvent(:iim, :, l) = uvent(:iim, :, l) * cu_2d(:iim, :)
160      uvent(iim+1, :, :) = uvent(1, :, :)      uvent(iim+1, :, :) = uvent(1, :, :)
161    
162      vvent(:, :, :) = start_inter_3d('V', rlonu, rlatu(:jjm), pls(:, :jjm, :))      call start_inter_3d('V', rlonu, rlatu(:jjm), pls(:, :jjm, :), vvent)
163      forall (l = 1: llm) vvent(:iim, :, l) = vvent(:iim, :, l) * cv_2d(:iim, :)      forall (l = 1: llm) vvent(:iim, :, l) = vvent(:iim, :, l) * cv_2d(:iim, :)
164      vvent(iim + 1, :, :) = vvent(1, :, :)      vvent(iim + 1, :, :) = vvent(1, :, :)
165    
166      t3d(:, :, :) = start_inter_3d('TEMP', rlonu, rlatv, pls)      call start_inter_3d('TEMP', rlonu, rlatv, pls, t3d)
167      PRINT *,  'minval(t3d(:, :, :)) = ', minval(t3d(:, :, :))      PRINT *,  'minval(t3d) = ', minval(t3d)
168      print *, "maxval(t3d(:, :, :)) = ", maxval(t3d(:, :, :))      print *, "maxval(t3d) = ", maxval(t3d)
169    
170      tpot(:iim, :, :) = t3d(:iim, :, :) * cpp / pk(:iim, :, :)      tpot(:iim, :, :) = t3d(:iim, :, :) * cpp / pk(:iim, :, :)
171      tpot(iim + 1, :, :) = tpot(1, :, :)      tpot(iim + 1, :, :) = tpot(1, :, :)
# Line 169  contains Line 176  contains
176      ENDDO      ENDDO
177    
178      ! Calcul de l'humidité à saturation :      ! Calcul de l'humidité à saturation :
179      qsat(:, :, :) = q_sat(t3d, pls)      qsat = q_sat(t3d, pls)
180      PRINT *, "minval(qsat(:, :, :)) = ", minval(qsat(:, :, :))      PRINT *, "minval(qsat) = ", minval(qsat)
181      print *, "maxval(qsat(:, :, :)) = ", maxval(qsat(:, :, :))      print *, "maxval(qsat) = ", maxval(qsat)
182      IF (MINVAL(qsat) == MAXVAL(qsat)) stop '"qsat" should not be constant'      IF (MINVAL(qsat) == MAXVAL(qsat)) stop '"qsat" should not be constant'
183    
184      ! Water vapor:      ! Water vapor:
185      q3d(:, :, :, 1) = 0.01 * start_inter_3d('R', rlonu, rlatv, pls) * qsat      call start_inter_3d('R', rlonu, rlatv, pls, q3d(:, :, :, 1))
186        q3d(:, :, :, 1) = 0.01 * q3d(:, :, :, 1) * qsat
187      WHERE (q3d(:, :, :, 1) < 0.) q3d(:, :, :, 1) = 1E-10      WHERE (q3d(:, :, :, 1) < 0.) q3d(:, :, :, 1) = 1E-10
188      DO l = 1, llm      DO l = 1, llm
189         q3d(:, 1, l, 1) = SUM(aire_2d(:, 1) * q3d(:, 1, l, 1)) / apoln         q3d(:, 1, l, 1) = SUM(aire_2d(:, 1) * q3d(:, 1, l, 1)) / apoln
# Line 187  contains Line 195  contains
195    
196      if (nqmx >= 5) then      if (nqmx >= 5) then
197         ! Ozone:         ! Ozone:
198           call regr_lat_time_coefoz
199         ! Compute ozone parameters on the LMDZ grid:         call regr_pr_o3(q3d(:, :, :, 5))
200         call regr_coefoz         ! Convert from mole fraction to mass fraction:
201           q3d(:, :, :, 5) = q3d(:, :, :, 5)  * 48. / 29.
        ! Find the month containing the day number "dayref":  
        month = (dayref - 1) / 30 + 1  
        print *, "month = ", month  
   
        call nf95_open("coefoz_LMDZ.nc", nf90_nowrite, ncid)  
   
        ! Get data at the right month from the input file:  
        call nf95_inq_varid(ncid, "r_Mob", varid)  
        ncerr = nf90_get_var(ncid, varid, q3d(:, :, :, 5), &  
             start=(/1, 1, 1, month/))  
        call handle_err("nf90_get_var r_Mob", ncerr)  
   
        call nf95_close(ncid)  
        ! Latitudes are in increasing order in the input file while  
        ! "rlatu" is in decreasing order so we need to invert order. Also, we  
        ! compute mass fraction from mole fraction:  
        q3d(:, :, :, 5) = q3d(:, jjm+1:1:-1, :, 5)  * 48. / 29.  
202      end if      end if
203    
204      tsol(:) = pack(tsol_2d, dyn_phy)      tsol = pack(tsol_2d, dyn_phy)
205      qsol(:) = pack(qsol_2d, dyn_phy)      qsol = pack(qsol_2d, dyn_phy)
206      sn(:) = 0. ! snow      sn = 0. ! snow
207      radsol(:) = 0.      radsol = 0.
208      tslab(:) = 0. ! IM "slab" ocean      tslab = 0. ! IM "slab" ocean
209      seaice(:) = 0.      seaice = 0.
210      rugmer(:) = 0.001      rugmer = 0.001
211      zmea(:) = pack(relief, dyn_phy)      zmea = pack(relief, dyn_phy)
212      zstd(:) = pack(zstd_2d, dyn_phy)      zstd = pack(zstd_2d, dyn_phy)
213      zsig(:) = pack(zsig_2d, dyn_phy)      zsig = pack(zsig_2d, dyn_phy)
214      zgam(:) = pack(zgam_2d, dyn_phy)      zgam = pack(zgam_2d, dyn_phy)
215      zthe(:) = pack(zthe_2d, dyn_phy)      zthe = pack(zthe_2d, dyn_phy)
216      zpic(:) = pack(zpic_2d, dyn_phy)      zpic = pack(zpic_2d, dyn_phy)
217      zval(:) = pack(zval_2d, dyn_phy)      zval = pack(zval_2d, dyn_phy)
   
     rugsrel(:) = 0.  
     IF (ok_orodr) rugsrel(:) = MAX(1.e-05, zstd(:) * zsig(:) / 2)  
218    
219      ! On initialise les sous-surfaces:      ! On initialise les sous-surfaces:
220      ! Lecture du fichier glace de terre pour fixer la fraction de terre      ! Lecture du fichier glace de terre pour fixer la fraction de terre
# Line 238  contains Line 226  contains
226      ALLOCATE(dlon_lic(iml_lic))      ALLOCATE(dlon_lic(iml_lic))
227      ALLOCATE(dlat_lic(jml_lic))      ALLOCATE(dlat_lic(jml_lic))
228      ALLOCATE(fraclic(iml_lic, jml_lic))      ALLOCATE(fraclic(iml_lic, jml_lic))
229      CALL flinopen_nozoom("landiceref.nc", iml_lic, jml_lic, &      CALL flinopen_nozoom(iml_lic, jml_lic, &
230           llm_tmp, lon_lic, lat_lic, lev, ttm_tmp, itaul, date, dt,  &           llm_tmp, lon_lic, lat_lic, lev, ttm_tmp, itaul, date, trash,  &
231           fid)           fid)
232      CALL flinget(fid, 'landice', iml_lic, jml_lic, llm_tmp, ttm_tmp &      call nf95_open("landiceref.nc", nf90_nowrite, ncid)
233           , 1, 1, fraclic)      call nf95_inq_varid(ncid, 'landice', varid)
234        call nf95_get_var(ncid, varid, fraclic)
235        call nf95_close(ncid)
236      CALL flinclo(fid)      CALL flinclo(fid)
237    
238      ! Interpolation sur la grille T du modèle :      ! Interpolation sur la grille T du modèle :
# Line 251  contains Line 241  contains
241      print *, "jml_lic = ", jml_lic      print *, "jml_lic = ", jml_lic
242    
243      ! Si les coordonnées sont en degrés, on les transforme :      ! Si les coordonnées sont en degrés, on les transforme :
244      IF (MAXVAL( lon_lic(:, :) ) > pi)  THEN      IF (MAXVAL( lon_lic ) > pi)  THEN
245         lon_lic(:, :) = lon_lic(:, :) * pi / 180.         lon_lic = lon_lic * pi / 180.
246      ENDIF      ENDIF
247      IF (maxval( lat_lic(:, :) ) > pi) THEN      IF (maxval( lat_lic ) > pi) THEN
248         lat_lic(:, :) = lat_lic(:, :) * pi/ 180.         lat_lic = lat_lic * pi/ 180.
249      ENDIF      ENDIF
250    
251      dlon_lic(:) = lon_lic(:, 1)      dlon_lic = lon_lic(:, 1)
252      dlat_lic(:) = lat_lic(1, :)      dlat_lic = lat_lic(1, :)
253    
254      flic_tmp(:iim, :) = grille_m(dlon_lic, dlat_lic, fraclic, rlonv(:iim), &      flic_tmp(:iim, :) = grille_m(dlon_lic, dlat_lic, fraclic, rlonv(:iim), &
255           rlatu)           rlatu)
256      flic_tmp(iim + 1, :) = flic_tmp(1, :)      flic_tmp(iim + 1, :) = flic_tmp(1, :)
257    
258      ! Passage sur la grille physique      ! Passage sur la grille physique
259      pctsrf(:, :)=0.      pctsrf = 0.
260      pctsrf(:, is_lic) = pack(flic_tmp, dyn_phy)      pctsrf(:, is_lic) = pack(flic_tmp, dyn_phy)
261      ! Adéquation avec le maque terre/mer      ! Adéquation avec le maque terre/mer
262      WHERE (pctsrf(:, is_lic) < EPSFRA ) pctsrf(:, is_lic) = 0.      WHERE (pctsrf(:, is_lic) < EPSFRA ) pctsrf(:, is_lic) = 0.
263      WHERE (zmasq(:) < EPSFRA) pctsrf(:, is_lic) = 0.      WHERE (zmasq < EPSFRA) pctsrf(:, is_lic) = 0.
264      pctsrf(:, is_ter) = zmasq(:)      pctsrf(:, is_ter) = zmasq
265      where (zmasq(:) > EPSFRA)      where (zmasq > EPSFRA)
266         where (pctsrf(:, is_lic) >= zmasq(:))         where (pctsrf(:, is_lic) >= zmasq)
267            pctsrf(:, is_lic) = zmasq(:)            pctsrf(:, is_lic) = zmasq
268            pctsrf(:, is_ter) = 0.            pctsrf(:, is_ter) = 0.
269         elsewhere         elsewhere
270            pctsrf(:, is_ter) = zmasq(:) - pctsrf(:, is_lic)            pctsrf(:, is_ter) = zmasq - pctsrf(:, is_lic)
271            where (pctsrf(:, is_ter) < EPSFRA)            where (pctsrf(:, is_ter) < EPSFRA)
272               pctsrf(:, is_ter) = 0.               pctsrf(:, is_ter) = 0.
273               pctsrf(:, is_lic) = zmasq(:)               pctsrf(:, is_lic) = zmasq
274            end where            end where
275         end where         end where
276      end where      end where
277    
278      ! Sous-surface océan et glace de mer (pour démarrer on met glace      ! Sous-surface océan et glace de mer (pour démarrer on met glace
279      ! de mer à 0) :      ! de mer à 0) :
280      pctsrf(:, is_oce) = 1. - zmasq(:)      pctsrf(:, is_oce) = 1. - zmasq
281      WHERE (pctsrf(:, is_oce) < EPSFRA) pctsrf(:, is_oce) = 0.      WHERE (pctsrf(:, is_oce) < EPSFRA) pctsrf(:, is_oce) = 0.
282    
283      ! Vérification que somme des sous-surfaces vaut 1:      ! Vérification que somme des sous-surfaces vaut 1:
284      ji = count(abs(sum(pctsrf(:, :), dim = 2) - 1. ) > EPSFRA)      ji = count(abs(sum(pctsrf, dim = 2) - 1.) > EPSFRA)
285      IF (ji /= 0) PRINT *, 'Problème répartition sous maille pour', ji, 'points'      IF (ji /= 0) then
286           PRINT *, 'Problème répartition sous maille pour ', ji, 'points'
287        end IF
288    
289      ! Calcul intermédiaire:      ! Calcul intermédiaire:
290      CALL massdair(p3d, masse)      CALL massdair(p3d, masse)
# Line 307  contains Line 299  contains
299    
300      ! Initialisation pour traceurs:      ! Initialisation pour traceurs:
301      call iniadvtrac      call iniadvtrac
302      ! Ecriture:      CALL inidissip
     CALL inidissip(lstardis, nitergdiv, nitergrot, niterh, tetagdiv, &  
          tetagrot, tetatemp)  
     itau_dyn = 0  
303      itau_phy = 0      itau_phy = 0
304      day_ref = dayref      day_ref = dayref
305      annee_ref = anneeref      annee_ref = anneeref
306    
307      CALL geopot(ip1jmp1, tpot, pk , pks,  phis  , phi)      CALL geopot(ip1jmp1, tpot, pk , pks,  phis, phi)
308      CALL caldyn0(0, uvent, vvent, tpot, psol, masse, pk, phis, phi, w, &      CALL caldyn0(uvent, vvent, tpot, psol, masse, pk, phis, phi, w, pbaru, &
309           pbaru, pbarv, 0)           pbarv)
310      CALL dynredem0("start.nc", dayref, phis)      CALL dynredem0("start.nc", dayref, phis)
311      CALL dynredem1("start.nc", 0., vvent, uvent, tpot, q3d, masse, psol)      CALL dynredem1("start.nc", vvent, uvent, tpot, q3d, masse, psol, itau=0)
312    
313      ! Ecriture état initial physique:      ! Ecriture état initial physique:
     print *, 'dtvr = ', dtvr  
314      print *, "iphysiq = ", iphysiq      print *, "iphysiq = ", iphysiq
     print *, "nbapp_rad = ", nbapp_rad  
315      phystep   = dtvr * REAL(iphysiq)      phystep   = dtvr * REAL(iphysiq)
     radpas    = NINT (86400./phystep/ nbapp_rad)  
316      print *, 'phystep = ', phystep      print *, 'phystep = ', phystep
     print *, "radpas = ", radpas  
317    
318      ! Initialisations :      ! Initialisations :
319      tsolsrf(:, is_ter) = tsol      tsolsrf(:, is_ter) = tsol
# Line 344  contains Line 329  contains
329      albe(:, is_oce) = 0.5      albe(:, is_oce) = 0.5
330      albe(:, is_sic) = 0.6      albe(:, is_sic) = 0.6
331      alblw = albe      alblw = albe
332      evap(:, :) = 0.      evap = 0.
333      qsolsrf(:, is_ter) = 150.      qsolsrf(:, is_ter) = 150.
334      qsolsrf(:, is_lic) = 150.      qsolsrf(:, is_lic) = 150.
335      qsolsrf(:, is_oce) = 150.      qsolsrf(:, is_oce) = 150.
# Line 358  contains Line 343  contains
343      q_ancien = 0.      q_ancien = 0.
344      agesno = 0.      agesno = 0.
345      !IM "slab" ocean      !IM "slab" ocean
346      tslab(:) = tsolsrf(:, is_oce)      tslab = tsolsrf(:, is_oce)
347      seaice = 0.      seaice = 0.
348    
349      frugs(:, is_oce) = rugmer(:)      frugs(:, is_oce) = rugmer
350      frugs(:, is_ter) = MAX(1.e-05, zstd(:) * zsig(:) / 2)      frugs(:, is_ter) = MAX(1.e-05, zstd * zsig / 2)
351      frugs(:, is_lic) = MAX(1.e-05, zstd(:) * zsig(:) / 2)      frugs(:, is_lic) = MAX(1.e-05, zstd * zsig / 2)
352      frugs(:, is_sic) = 0.001      frugs(:, is_sic) = 0.001
353      fder = 0.      fder = 0.
354      clwcon = 0.      clwcon = 0.
# Line 371  contains Line 356  contains
356      ratqs = 0.      ratqs = 0.
357      run_off_lic_0 = 0.      run_off_lic_0 = 0.
358    
359      call phyredem("startphy.nc", phystep, radpas, latfi, lonfi, pctsrf, &      call phyredem("startphy.nc", latfi, lonfi, pctsrf, &
360           tsolsrf, tsoil, tslab, seaice, qsolsrf, qsol, snsrf, albe, alblw, &           tsolsrf, tsoil, tslab, seaice, qsolsrf, qsol, snsrf, albe, alblw, &
361           evap, rain_fall, snow_fall, solsw, sollw, fder, radsol, frugs, &           evap, rain_fall, snow_fall, solsw, sollw, fder, radsol, frugs, &
362           agesno, zmea, zstd, zsig, zgam, zthe, zpic, zval, rugsrel, &           agesno, zmea, zstd, zsig, zgam, zthe, zpic, zval, &
363           t_ancien, q_ancien, rnebcon, ratqs, clwcon, run_off_lic_0)           t_ancien, q_ancien, rnebcon, ratqs, clwcon, run_off_lic_0)
364      CALL histclo      CALL histclo
365    

Legend:
Removed from v.5  
changed lines
  Added in v.48

  ViewVC Help
Powered by ViewVC 1.1.21