/[lmdze]/trunk/libf/dyn3d/start_init_phys_m.f90
ViewVC logotype

Annotation of /trunk/libf/dyn3d/start_init_phys_m.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (hide annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
File size: 3178 byte(s)
Initial import
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     REAL, ALLOCATABLE, SAVE, DIMENSION(:, :):: qsol_2d
9    
10     CONTAINS
11    
12     SUBROUTINE start_init_phys(tsol_2d)
13    
14     USE ioipsl, only: flininfo, flinopen_nozoom, flinget, flinclo
15     use conf_dat2d_m, only: conf_dat2d
16     use inter_barxy_m, only: inter_barxy
17     use gr_int_dyn_m, only: gr_int_dyn
18     use comgeom, only: rlonu, rlatv
19     use dimens_m, only: iim, jjm
20    
21     REAL, intent(out):: tsol_2d(:, :)
22    
23     ! LOCAL
24    
25     INTEGER fid_phys, iml_phys, jml_phys
26     REAL, ALLOCATABLE, DIMENSION(:, :):: lon_phys, lat_phys
27     REAL:: date, dt
28     REAL, DIMENSION(:), ALLOCATABLE:: levphys_ini
29     !ac
30     INTEGER:: itau(1)
31     INTEGER:: llm_tmp, ttm_tmp
32    
33     CHARACTER(len=120) physfname
34     LOGICAL:: check=.TRUE.
35    
36     REAL, ALLOCATABLE:: lon_rad(:), lat_rad(:)
37     REAL, ALLOCATABLE:: lon_ini(:), lat_ini(:)
38     REAL, ALLOCATABLE:: var_ana(:, :)
39     real tmp_var(iim, jjm + 1)
40    
41     !-----------------------------------
42    
43     print *, "Call sequence information: start_init_phys"
44     if (any(shape(tsol_2d) /= (/iim + 1, jjm + 1/))) stop "start_init_phys"
45     physfname = 'ECPHY.nc'
46     IF ( check ) print *, 'Opening the surface analysis'
47     CALL flininfo(physfname, iml_phys, jml_phys, llm_tmp, ttm_tmp, fid_phys)
48    
49     ALLOCATE(lat_phys(iml_phys, jml_phys))
50     ALLOCATE(lon_phys(iml_phys, jml_phys))
51     ALLOCATE(levphys_ini(llm_tmp))
52    
53     CALL flinopen_nozoom(physfname, iml_phys, jml_phys, &
54     llm_tmp, lon_phys, lat_phys, levphys_ini, ttm_tmp, &
55     itau, date, dt, fid_phys)
56    
57     DEALLOCATE(levphys_ini)
58    
59     ! Allocate the space we will need to get the data out of this file
60     ALLOCATE(var_ana(iml_phys, jml_phys))
61    
62     ! In case we have a file which is in degrees we do the transformation
63     ALLOCATE(lon_rad(iml_phys))
64     ALLOCATE(lon_ini(iml_phys))
65    
66     IF ( MAXVAL(lon_phys(:, :)) > 2.0 * ASIN(1.0) ) THEN
67     lon_ini(:) = lon_phys(:, 1) * 2.0 * ASIN(1.0) / 180.0
68     ELSE
69     lon_ini(:) = lon_phys(:, 1)
70     ENDIF
71    
72     ALLOCATE(lat_rad(jml_phys))
73     ALLOCATE(lat_ini(jml_phys))
74    
75     IF ( MAXVAL(lat_phys(:, :)) > 2.0 * ASIN(1.0) ) THEN
76     lat_ini(:) = lat_phys(1, :) * 2.0 * ASIN(1.0) / 180.0
77     ELSE
78     lat_ini(:) = lat_phys(1, :)
79     ENDIF
80    
81     ! We get the two standard varibales
82     ! Surface temperature
83     ! 'ST' : Surface temperature
84     CALL flinget(fid_phys, 'ST', iml_phys, jml_phys, &
85     llm_tmp, ttm_tmp, 1, 1, var_ana)
86     CALL conf_dat2d(lon_ini, lat_ini, lon_rad, lat_rad, var_ana)
87     CALL inter_barxy(lon_rad, lat_rad(:jml_phys -1), var_ana, rlonu(:iim), &
88     rlatv, tmp_var)
89    
90     tsol_2d(:, :) = gr_int_dyn(tmp_var)
91    
92     ALLOCATE(qsol_2d(iim + 1, jjm + 1))
93     ! Soil moisture
94     CALL flinget(fid_phys, 'CDSW', iml_phys, jml_phys, &
95     llm_tmp, ttm_tmp, 1, 1, var_ana)
96     CALL conf_dat2d(lon_ini, lat_ini, lon_rad, lat_rad, var_ana)
97     CALL inter_barxy(lon_rad, lat_rad(:jml_phys -1), var_ana, rlonu(:iim), &
98     rlatv, tmp_var)
99     qsol_2d(:, :) = gr_int_dyn(tmp_var)
100    
101     CALL flinclo(fid_phys)
102    
103     END SUBROUTINE start_init_phys
104    
105     END MODULE start_init_phys_m

  ViewVC Help
Powered by ViewVC 1.1.21