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

Annotation of /trunk/dyn3d/start_init_phys_m.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 76 - (hide annotations)
Fri Nov 15 18:45:49 2013 UTC (10 years, 6 months ago) by guez
Original Path: trunk/dyn3d/start_init_phys_m.f90
File size: 2600 byte(s)
Moved everything out of libf.
1 guez 3 MODULE start_init_phys_m
2    
3     ! From startvar.F, version 1.4
4     ! 2006/01/27 15:14:22 Fairhead
5    
6     IMPLICIT NONE
7    
8     CONTAINS
9    
10 guez 43 SUBROUTINE start_init_phys(tsol_2d, qsol_2d)
11 guez 3
12 guez 49 use comgeom, only: rlonu, rlatv
13 guez 3 use conf_dat2d_m, only: conf_dat2d
14 guez 49 use dimens_m, only: iim, jjm
15     use gr_int_dyn_m, only: gr_int_dyn
16 guez 3 use inter_barxy_m, only: inter_barxy
17 guez 48 use netcdf, only: nf90_nowrite
18 guez 49 use netcdf95, only: nf95_open, nf95_close, nf95_get_var, nf95_inq_varid, &
19 guez 64 nf95_gw_var, find_coord
20 guez 49 use nr_util, only: assert, pi
21 guez 3
22 guez 43 REAL, intent(out):: tsol_2d(:, :), qsol_2d(:, :) ! (iim + 1, jjm + 1)
23 guez 3
24 guez 42 ! Variables local to the procedure:
25 guez 3
26 guez 49 INTEGER iml_phys, jml_phys, ncid, varid
27 guez 3 REAL, ALLOCATABLE:: lon_rad(:), lat_rad(:)
28 guez 49 REAL, pointer:: lon_ini(:), lat_ini(:) ! longitude and latitude in rad
29 guez 3 REAL, ALLOCATABLE:: var_ana(:, :)
30     real tmp_var(iim, jjm + 1)
31    
32     !-----------------------------------
33    
34     print *, "Call sequence information: start_init_phys"
35 guez 43
36     call assert((/size(tsol_2d, 1), size(qsol_2d, 1)/) == iim + 1, &
37     "start_init_phys 1")
38     call assert((/size(tsol_2d, 2), size(qsol_2d, 2)/) == jjm + 1, &
39     "start_init_phys 2")
40    
41 guez 49 call nf95_open('ECPHY.nc', nf90_nowrite, ncid)
42 guez 3
43 guez 64 call find_coord(ncid, varid=varid, std_name="longitude")
44 guez 49 call nf95_gw_var(ncid, varid, lon_ini)
45     lon_ini = lon_ini * pi / 180. ! convert to rad
46     iml_phys = size(lon_ini)
47 guez 3
48 guez 64 call find_coord(ncid, varid=varid, std_name="latitude")
49 guez 49 call nf95_gw_var(ncid, varid, lat_ini)
50     lat_ini = lat_ini * pi / 180. ! convert to rad
51     jml_phys = size(lat_ini)
52 guez 3
53     ! Allocate the space we will need to get the data out of this file
54     ALLOCATE(var_ana(iml_phys, jml_phys))
55    
56     ALLOCATE(lon_rad(iml_phys))
57     ALLOCATE(lat_rad(jml_phys))
58    
59 guez 42 ! We get the two standard variables
60     ! 'ST': surface temperature
61 guez 48 call nf95_inq_varid(ncid, 'ST', varid)
62     call nf95_get_var(ncid, varid, var_ana)
63 guez 3 CALL conf_dat2d(lon_ini, lat_ini, lon_rad, lat_rad, var_ana)
64     CALL inter_barxy(lon_rad, lat_rad(:jml_phys -1), var_ana, rlonu(:iim), &
65     rlatv, tmp_var)
66 guez 43 tsol_2d = gr_int_dyn(tmp_var)
67 guez 3
68     ! Soil moisture
69 guez 48 call nf95_inq_varid(ncid, 'CDSW', varid)
70     call nf95_get_var(ncid, varid, var_ana)
71 guez 3 CALL conf_dat2d(lon_ini, lat_ini, lon_rad, lat_rad, var_ana)
72     CALL inter_barxy(lon_rad, lat_rad(:jml_phys -1), var_ana, rlonu(:iim), &
73     rlatv, tmp_var)
74 guez 43 qsol_2d = gr_int_dyn(tmp_var)
75 guez 3
76 guez 48 call nf95_close(ncid)
77 guez 49 deallocate(lon_ini, lat_ini) ! pointers
78 guez 3
79     END SUBROUTINE start_init_phys
80    
81     END MODULE start_init_phys_m

  ViewVC Help
Powered by ViewVC 1.1.21