/[lmdze]/trunk/Sources/dyn3d/etat0.f
ViewVC logotype

Diff of /trunk/Sources/dyn3d/etat0.f

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

revision 155 by guez, Wed Jul 8 17:03:45 2015 UTC revision 202 by guez, Wed Jun 8 12:23:41 2016 UTC
# Line 20  contains Line 20  contains
20      use caldyn0_m, only: caldyn0      use caldyn0_m, only: caldyn0
21      use comconst, only: cpp, kappa, iniconst      use comconst, only: cpp, kappa, iniconst
22      use comgeom, only: aire_2d, apoln, apols, cu_2d, cv_2d, inigeom      use comgeom, only: aire_2d, apoln, apols, cu_2d, cv_2d, inigeom
23        use conf_gcm_m, only: nday, day_step, iphysiq
24      use dimens_m, only: iim, jjm, llm, nqmx      use dimens_m, only: iim, jjm, llm, nqmx
25      use dimphy, only: zmasq      use dimphy, only: zmasq
26      use dimsoil, only: nsoilmx      use dimsoil, only: nsoilmx
# Line 39  contains Line 40  contains
40      use inifilr_m, only: inifilr      use inifilr_m, only: inifilr
41      use massdair_m, only: massdair      use massdair_m, only: massdair
42      use netcdf, only: nf90_nowrite      use netcdf, only: nf90_nowrite
43      use netcdf95, only: nf95_close, nf95_get_var, nf95_gw_var, &      use netcdf95, only: nf95_close, nf95_get_var, nf95_gw_var, nf95_put_var, &
44           nf95_inq_varid, nf95_open           nf95_inq_varid, nf95_open
45      use nr_util, only: pi, assert      use nr_util, only: pi, assert
46      use paramet_m, only: ip1jm, ip1jmp1      use phyetat0_m, only: rlat, rlon, itau_phy
47      use phyetat0_m, only: rlat, rlon      use phyredem0_m, only: phyredem0, ncid_restartphy
48      use phyredem_m, only: phyredem      use phyredem_m, only: phyredem
49      use q_sat_m, only: q_sat      use q_sat_m, only: q_sat
50      use regr_lat_time_coefoz_m, only: regr_lat_time_coefoz      use regr_lat_time_coefoz_m, only: regr_lat_time_coefoz
# Line 52  contains Line 53  contains
53      USE start_init_orog_m, only: start_init_orog, mask      USE start_init_orog_m, only: start_init_orog, mask
54      use start_init_phys_m, only: start_init_phys      use start_init_phys_m, only: start_init_phys
55      use start_inter_3d_m, only: start_inter_3d      use start_inter_3d_m, only: start_inter_3d
     use temps, only: itau_phy  
56      use test_disvert_m, only: test_disvert      use test_disvert_m, only: test_disvert
57      use unit_nml_m, only: unit_nml      use unit_nml_m, only: unit_nml
58    
# Line 70  contains Line 70  contains
70      ! and pressure level "pls(i, j, l)".)      ! and pressure level "pls(i, j, l)".)
71    
72      real qsat(iim + 1, jjm + 1, llm) ! mass fraction of saturating water vapor      real qsat(iim + 1, jjm + 1, llm) ! mass fraction of saturating water vapor
     REAL sn(klon)  
73      REAL qsolsrf(klon, nbsrf), snsrf(klon, nbsrf)      REAL qsolsrf(klon, nbsrf), snsrf(klon, nbsrf)
74      REAL albe(klon, nbsrf), evap(klon, nbsrf)      REAL albe(klon, nbsrf), evap(klon, nbsrf)
     REAL alblw(klon, nbsrf)  
75      REAL tsoil(klon, nsoilmx, nbsrf)      REAL tsoil(klon, nsoilmx, nbsrf)
76      REAL radsol(klon), rain_fall(klon), snow_fall(klon)      REAL null_array(klon)
77      REAL solsw(klon), sollw(klon), fder(klon)      REAL solsw(klon), sollw(klon)
78      !IM "slab" ocean      !IM "slab" ocean
     real seaice(klon) ! kg m-2  
79      REAL frugs(klon, nbsrf), agesno(klon, nbsrf)      REAL frugs(klon, nbsrf), agesno(klon, nbsrf)
80      REAL rugmer(klon)      REAL rugmer(klon)
81      real, dimension(iim + 1, jjm + 1):: zmea_2d, zstd_2d, zsig_2d, zgam_2d      real, dimension(iim + 1, jjm + 1):: zmea_2d, zstd_2d, zsig_2d, zgam_2d
# Line 89  contains Line 86  contains
86      REAL zthe(klon)      REAL zthe(klon)
87      REAL zpic(klon), zval(klon)      REAL zpic(klon), zval(klon)
88      REAL t_ancien(klon, llm), q_ancien(klon, llm)      REAL t_ancien(klon, llm), q_ancien(klon, llm)
     REAL run_off_lic_0(klon)  
89      real clwcon(klon, llm), rnebcon(klon, llm), ratqs(klon, llm)      real clwcon(klon, llm), rnebcon(klon, llm), ratqs(klon, llm)
90    
91      ! D\'eclarations pour lecture glace de mer :      ! D\'eclarations pour lecture glace de mer :
# Line 103  contains Line 99  contains
99    
100      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
101      real pks(iim + 1, jjm + 1)      real pks(iim + 1, jjm + 1)
   
102      REAL masse(iim + 1, jjm + 1, llm)      REAL masse(iim + 1, jjm + 1, llm)
103      REAL phi(iim + 1, jjm + 1, llm)      REAL phi(iim + 1, jjm + 1, llm)
     REAL pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)  
     REAL w(iim + 1, jjm + 1, llm)  
   
104      real sig1(klon, llm) ! section adiabatic updraft      real sig1(klon, llm) ! section adiabatic updraft
105      real w01(klon, llm) ! vertical velocity within adiabatic updraft      real w01(klon, llm) ! vertical velocity within adiabatic updraft
106    
# Line 222  contains Line 214  contains
214         q(:, :, :, 5) = q(:, :, :, 5) * 48. / 29.         q(:, :, :, 5) = q(:, :, :, 5) * 48. / 29.
215      end if      end if
216    
217      sn = 0. ! snow      null_array = 0.
     radsol = 0.  
     seaice = 0.  
218      rugmer = 0.001      rugmer = 0.001
219      zmea = pack(zmea_2d, dyn_phy)      zmea = pack(zmea_2d, dyn_phy)
220      zstd = pack(zstd_2d, dyn_phy)      zstd = pack(zstd_2d, dyn_phy)
# Line 298  contains Line 288  contains
288      pctsrf(:, is_oce) = 1. - zmasq      pctsrf(:, is_oce) = 1. - zmasq
289      WHERE (pctsrf(:, is_oce) < EPSFRA) pctsrf(:, is_oce) = 0.      WHERE (pctsrf(:, is_oce) < EPSFRA) pctsrf(:, is_oce) = 0.
290    
291      ! V\'erification que somme des sous-surfaces vaut 1 :      ! V\'erification que la somme des sous-surfaces vaut 1 :
292      ji = count(abs(sum(pctsrf, dim = 2) - 1.) > EPSFRA)      ji = count(abs(sum(pctsrf, dim = 2) - 1.) > EPSFRA)
293      IF (ji /= 0) then      IF (ji /= 0) then
294         PRINT *, 'Bad surface percentages for ', ji, 'points'         PRINT *, 'Bad surface percentages for ', ji, 'points'
# Line 313  contains Line 303  contains
303              SUM(aire_2d(:iim, jjm + 1) * masse(:iim, jjm + 1, l)) / apols              SUM(aire_2d(:iim, jjm + 1) * masse(:iim, jjm + 1, l)) / apols
304      END forall      END forall
305    
     ! Initialisation pour traceurs:  
306      call iniadvtrac      call iniadvtrac
     itau_phy = 0  
   
307      CALL geopot(teta, pk , pks, phis, phi)      CALL geopot(teta, pk , pks, phis, phi)
308      CALL caldyn0(ucov, vcov, teta, ps, masse, pk, phis, phi, w, pbaru, &      CALL caldyn0(ucov, vcov, teta, ps, pk, phis, phi)
309           pbarv)      CALL dynredem0(day_ref, phis)
310      CALL dynredem0("start.nc", day_ref, phis)      CALL dynredem1(vcov, ucov, teta, q, masse, ps, itau = 0)
     CALL dynredem1("start.nc", vcov, ucov, teta, q, masse, ps, itau=0)  
311    
312      ! Initialisations :      ! Initialisations :
313      snsrf(:, is_ter) = sn      snsrf = 0.
     snsrf(:, is_lic) = sn  
     snsrf(:, is_oce) = sn  
     snsrf(:, is_sic) = sn  
314      albe(:, is_ter) = 0.08      albe(:, is_ter) = 0.08
315      albe(:, is_lic) = 0.6      albe(:, is_lic) = 0.6
316      albe(:, is_oce) = 0.5      albe(:, is_oce) = 0.5
317      albe(:, is_sic) = 0.6      albe(:, is_sic) = 0.6
     alblw = albe  
318      evap = 0.      evap = 0.
319      qsolsrf = 150.      qsolsrf = 150.
320      tsoil = spread(spread(pack(tsol_2d, dyn_phy), 2, nsoilmx), 3, nbsrf)      tsoil = spread(spread(pack(tsol_2d, dyn_phy), 2, nsoilmx), 3, nbsrf)
     rain_fall = 0.  
     snow_fall = 0.  
321      solsw = 165.      solsw = 165.
322      sollw = -53.      sollw = -53.
323      t_ancien = 273.15      t_ancien = 273.15
324      q_ancien = 0.      q_ancien = 0.
325      agesno = 0.      agesno = 0.
     seaice = 0.  
326    
327      frugs(:, is_oce) = rugmer      frugs(:, is_oce) = rugmer
328      frugs(:, is_ter) = MAX(1e-5, zstd * zsig / 2)      frugs(:, is_ter) = MAX(1e-5, zstd * zsig / 2)
329      frugs(:, is_lic) = MAX(1e-5, zstd * zsig / 2)      frugs(:, is_lic) = MAX(1e-5, zstd * zsig / 2)
330      frugs(:, is_sic) = 0.001      frugs(:, is_sic) = 0.001
     fder = 0.  
331      clwcon = 0.      clwcon = 0.
332      rnebcon = 0.      rnebcon = 0.
333      ratqs = 0.      ratqs = 0.
     run_off_lic_0 = 0.  
334      sig1 = 0.      sig1 = 0.
335      w01 = 0.      w01 = 0.
336    
337      call phyredem("startphy.nc", pctsrf, tsoil(:, 1, :), tsoil, &      nday = 0
338           tsoil(:, 1, is_oce), seaice, qsolsrf, pack(qsol_2d, dyn_phy), snsrf, &      itau_phy = 0 ! side effect
339           albe, evap, rain_fall, snow_fall, solsw, sollw, fder, radsol, frugs, &      call phyredem0
340           agesno, zmea, zstd, zsig, zgam, zthe, zpic, zval, t_ancien, &  
341           q_ancien, rnebcon, ratqs, clwcon, run_off_lic_0, sig1, w01)      call nf95_inq_varid(ncid_restartphy, "trs", varid)
342        call nf95_put_var(ncid_restartphy, varid, null_array)
343    
344        call phyredem(pctsrf, tsoil(:, 1, :), tsoil, qsolsrf, &
345             pack(qsol_2d, dyn_phy), snsrf, albe, evap, null_array, null_array, &
346             solsw, sollw, null_array, null_array, frugs, agesno, zmea, zstd, &
347             zsig, zgam, zthe, zpic, zval, t_ancien, q_ancien, rnebcon, ratqs, &
348             clwcon, null_array, sig1, w01)
349    
350    END SUBROUTINE etat0    END SUBROUTINE etat0
351    

Legend:
Removed from v.155  
changed lines
  Added in v.202

  ViewVC Help
Powered by ViewVC 1.1.21