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

Diff of /trunk/dyn3d/startdyn.f

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

revision 68 by guez, Wed Nov 14 16:59:30 2012 UTC revision 73 by guez, Fri Nov 15 17:48:30 2013 UTC
# Line 1  Line 1 
1  MODULE startdyn  MODULE startdyn
2    
3    ! From startvar.F, version 1.4    ! From startvar.F, version 1.4
4    ! 2006/01/27 15:14:22 Fairhead    ! January 27th, 2006 15:14:22
5    
6    INTEGER iml_dyn, jml_dyn, llm_dyn    INTEGER iml_dyn, jml_dyn, llm_dyn
7    
8    REAL, ALLOCATABLE:: lon_ini(:), lat_ini(:)    REAL, pointer:: lon_ini(:), lat_ini(:)
9    ! (longitude and latitude from the input file, converted to rad)    ! longitude and latitude from the input file, converted to rad
10    
11    real, ALLOCATABLE:: levdyn_ini(:)    real, pointer:: levdyn_ini(:)
12    
13  CONTAINS  CONTAINS
14    
15    SUBROUTINE start_init_dyn(tsol_2d, psol)    SUBROUTINE start_init_dyn(tsol_2d, psol)
16    
17      USE flininfo_m, only: flininfo      use comgeom, only: rlonu, rlatv, aire_2d, apoln, apols
     USE flinopen_nozoom_m, only: flinopen_nozoom  
     use comgeom, only: aire_2d, apoln, apols  
18      use conf_dat2d_m, only: conf_dat2d      use conf_dat2d_m, only: conf_dat2d
     use inter_barxy_m, only: inter_barxy  
     use comgeom, only: rlonu, rlatv  
19      use dimens_m, only: iim, jjm      use dimens_m, only: iim, jjm
20      use gr_int_dyn_m, only: gr_int_dyn      use gr_int_dyn_m, only: gr_int_dyn
21      use start_init_orog_m, only: phis      use inter_barxy_m, only: inter_barxy
     use nr_util, only: assert, pi  
22      use netcdf, only: nf90_nowrite      use netcdf, only: nf90_nowrite
23      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, &
24             nf95_gw_var, find_coord
25        use nr_util, only: assert, pi
26        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      REAL, intent(out):: psol(:, :) ! (iim + 1, jjm + 1) surface pressure, in Pa
30    
31      ! Local:      ! Local:
32    
33      REAL date, dt      INTEGER ncid, varid
     INTEGER itau(1), ncid, varid, fid_dyn, ttm_dyn  
34      REAL, ALLOCATABLE:: lon_rad(:), lat_rad(:)      REAL, ALLOCATABLE:: lon_rad(:), lat_rad(:)
   
     REAL, ALLOCATABLE:: lon_dyn(:, :), lat_dyn(:, :)  
     ! (longitude and latitude from the input file, in rad or degrees)  
   
35      REAL, ALLOCATABLE:: var_ana(:, :)      REAL, ALLOCATABLE:: var_ana(:, :)
36      real z(iim + 1, jjm + 1)      real z(iim + 1, jjm + 1)
37      real tmp_var(iim, jjm + 1)      real tmp_var(iim, jjm + 1)
# Line 51  CONTAINS Line 44  CONTAINS
44      call assert((/size(tsol_2d, 2), size(psol, 2)/) == jjm + 1, &      call assert((/size(tsol_2d, 2), size(psol, 2)/) == jjm + 1, &
45           "start_init_dyn size 2")           "start_init_dyn size 2")
46    
     CALL flininfo('ECDYN.nc', iml_dyn, jml_dyn, llm_dyn, ttm_dyn, fid_dyn)  
     print *, "iml_dyn = ", iml_dyn, ", jml_dyn = ", jml_dyn, &  
          ", llm_dyn = ", llm_dyn, ", ttm_dyn = ", ttm_dyn  
   
     ALLOCATE(lat_dyn(iml_dyn, jml_dyn))  
     allocate(lon_dyn(iml_dyn, jml_dyn), levdyn_ini(llm_dyn))  
   
     CALL flinopen_nozoom(iml_dyn, jml_dyn, llm_dyn, lon_dyn, lat_dyn, &  
          levdyn_ini, ttm_dyn, itau, date, dt, fid_dyn)  
   
     ALLOCATE(var_ana(iml_dyn, jml_dyn), lon_rad(iml_dyn), lon_ini(iml_dyn))  
   
     IF (MAXVAL(lon_dyn) > pi) THEN  
        ! Assume "lon_dyn" is in degrees  
        lon_ini = lon_dyn(:, 1) * pi / 180.  
     ELSE  
        lon_ini = lon_dyn(:, 1)  
     ENDIF  
   
     ALLOCATE(lat_rad(jml_dyn), lat_ini(jml_dyn))  
   
     IF (MAXVAL(lat_dyn) > pi) THEN  
        lat_ini = lat_dyn(1, :) * pi / 180.  
     ELSE  
        lat_ini = lat_dyn(1, :)  
     ENDIF  
   
47      call nf95_open('ECDYN.nc', nf90_nowrite, ncid)      call nf95_open('ECDYN.nc', nf90_nowrite, ncid)
48    
49        call find_coord(ncid, varid=varid, std_name="longitude")
50        call nf95_gw_var(ncid, varid, lon_ini)
51        lon_ini = lon_ini * pi / 180. ! convert to rad
52        iml_dyn = size(lon_ini)
53        print *, "iml_dyn = ", iml_dyn
54    
55        call find_coord(ncid, varid=varid, std_name="latitude")
56        call nf95_gw_var(ncid, varid, lat_ini)
57        lat_ini = lat_ini * pi / 180. ! convert to rad
58        jml_dyn = size(lat_ini)
59        print *, "jml_dyn = ", jml_dyn
60    
61        call nf95_inq_varid(ncid, "level", varid)
62        call nf95_gw_var(ncid, varid, levdyn_ini)
63        llm_dyn = size(levdyn_ini)
64        print *, "llm_dyn = ", llm_dyn
65    
66        ALLOCATE(var_ana(iml_dyn, jml_dyn), lon_rad(iml_dyn), lat_rad(jml_dyn))
67    
68      ! 'Z': Surface geopotential      ! 'Z': Surface geopotential
69      call nf95_inq_varid(ncid, 'Z', varid)      call nf95_inq_varid(ncid, 'Z', varid)
70      call nf95_get_var(ncid, varid, var_ana)      call nf95_get_var(ncid, varid, var_ana)

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

  ViewVC Help
Powered by ViewVC 1.1.21