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

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

  ViewVC Help
Powered by ViewVC 1.1.21