/[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 32 - (hide annotations)
Tue Apr 6 17:52:58 2010 UTC (14 years, 1 month ago) by guez
Original Path: trunk/libf/dyn3d/start_init_phys_m.f90
File size: 3192 byte(s)
Split "stringop.f90" into single-procedure files. Gathered files in directory
"IOIPSL/Stringop".

Split "flincom.f90" into "flincom.f90" and "flinget.f90". Removed
unused procedures from module "flincom". Removed unused argument
"filename" of procedure "flinopen_nozoom".

Removed unused files.

Split "grid_change.f90" into "grid_change.f90" and
"gr_phy_write_3d.f90".

Removed unused procedures from modules "calendar", "ioipslmpp",
"grid_atob", "gath_cpl" and "getincom". Removed unused procedures in
files "ppm3d.f" and "thermcell.f".

Split "mathelp.f90" into "mathelp.f90" and "mathop.f90".

Removed unused variable "dpres" of module "comvert".

Use argument "itau" instead of local variables "iadvtr" and "first" to
control algorithm in procedure "fluxstokenc".

Removed unused arguments of procedure "integrd".

Removed useless computations at the end of procedure "leapfrog".

Merged common block "matrfil" into module "parafilt".

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

  ViewVC Help
Powered by ViewVC 1.1.21