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

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

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

trunk/libf/dyn3d/startdyn.f90 revision 73 by guez, Fri Nov 15 17:48:30 2013 UTC trunk/Sources/dyn3d/startdyn.f revision 139 by guez, Tue May 26 17:46:03 2015 UTC
# Line 12  MODULE startdyn Line 12  MODULE startdyn
12    
13  CONTAINS  CONTAINS
14    
15    SUBROUTINE start_init_dyn(tsol_2d, psol)    SUBROUTINE start_init_dyn(tsol_2d, phis, ps)
16    
17      use comgeom, only: rlonu, rlatv, aire_2d, apoln, apols      use comgeom, only: aire_2d, apoln, apols
18      use conf_dat2d_m, only: conf_dat2d      use conf_dat2d_m, only: conf_dat2d
19      use dimens_m, only: iim, jjm      use dimens_m, only: iim, jjm
20        use dynetat0_m, only: rlonu, rlatv
21      use gr_int_dyn_m, only: gr_int_dyn      use gr_int_dyn_m, only: gr_int_dyn
22      use inter_barxy_m, only: inter_barxy      use inter_barxy_m, only: inter_barxy
23      use netcdf, only: nf90_nowrite      use netcdf, only: nf90_nowrite
24      use netcdf95, only: nf95_open, nf95_close, nf95_get_var, nf95_inq_varid, &      use netcdf95, only: nf95_open, nf95_close, nf95_get_var, nf95_inq_varid, &
25           nf95_gw_var, find_coord           nf95_gw_var, find_coord
26      use nr_util, only: assert, pi      use nr_util, only: assert, pi
     use start_init_orog_m, only: phis  
27    
28      REAL, intent(in):: tsol_2d(:, :) ! (iim + 1, jjm + 1)      REAL, intent(in):: tsol_2d(:, :) ! (iim + 1, jjm + 1)
29      REAL, intent(out):: psol(:, :) ! (iim + 1, jjm + 1) surface pressure, in Pa  
30        REAL, intent(in):: phis(:, :) ! (iim + 1, jjm + 1)
31        ! surface geopotential, in m2 s-2
32    
33        REAL, intent(out):: ps(:, :) ! (iim + 1, jjm + 1) surface pressure, in Pa
34    
35      ! Local:      ! Local:
36    
# Line 39  CONTAINS Line 43  CONTAINS
43      !--------------------------      !--------------------------
44    
45      print *, "Call sequence information: start_init_dyn"      print *, "Call sequence information: start_init_dyn"
46      call assert((/size(tsol_2d, 1), size(psol, 1)/) == iim + 1, &      call assert((/size(tsol_2d, 1), size(phis, 1), size(ps, 1)/) == iim + 1, &
47           "start_init_dyn size 1")           "start_init_dyn size 1")
48      call assert((/size(tsol_2d, 2), size(psol, 2)/) == jjm + 1, &      call assert((/size(tsol_2d, 2), size(phis, 2), size(ps, 2)/) == jjm + 1, &
49           "start_init_dyn size 2")           "start_init_dyn size 2")
50    
51      call nf95_open('ECDYN.nc', nf90_nowrite, ncid)      call nf95_open('ECDYN.nc', nf90_nowrite, ncid)
# Line 79  CONTAINS Line 83  CONTAINS
83      CALL conf_dat2d(lon_ini, lat_ini, lon_rad, lat_rad, var_ana)      CALL conf_dat2d(lon_ini, lat_ini, lon_rad, lat_rad, var_ana)
84      CALL inter_barxy(lon_rad, lat_rad(:jml_dyn -1), var_ana, rlonu(:iim), &      CALL inter_barxy(lon_rad, lat_rad(:jml_dyn -1), var_ana, rlonu(:iim), &
85           rlatv, tmp_var)           rlatv, tmp_var)
86      psol = gr_int_dyn(tmp_var)      ps = gr_int_dyn(tmp_var)
87    
88      call nf95_close(ncid)      call nf95_close(ncid)
89    
90      psol(:iim, :) = psol(:iim, :) &      ! Adapt the surface pressure to "phis", with the hypsometric equation:
91        ps(:iim, :) = ps(:iim, :) &
92           * (1. + (z(:iim, :) - phis(:iim, :)) / 287. / tsol_2d(:iim, :))           * (1. + (z(:iim, :) - phis(:iim, :)) / 287. / tsol_2d(:iim, :))
     psol(iim + 1, :) = psol(1, :)  
93    
94      psol(:, 1) = SUM(aire_2d(:iim, 1) * psol(:iim, 1)) / apoln      ps(iim + 1, :) = ps(1, :)
95      psol(:, jjm + 1) = SUM(aire_2d(:iim, jjm + 1) * psol(:iim, jjm + 1)) &      ps(:, 1) = SUM(aire_2d(:iim, 1) * ps(:iim, 1)) / apoln
96           / apols      ps(:, jjm + 1) = SUM(aire_2d(:iim, jjm + 1) * ps(:iim, jjm + 1)) / apols
97    
98    END SUBROUTINE start_init_dyn    END SUBROUTINE start_init_dyn
99    

Legend:
Removed from v.73  
changed lines
  Added in v.139

  ViewVC Help
Powered by ViewVC 1.1.21