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

Contents of /trunk/dyn3d/start_init_phys_m.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 32 - (show 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 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 flincom, only: flininfo, flinopen_nozoom, flinclo
15 use flinget_m, only: flinget
16 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 CALL flinopen_nozoom(iml_phys, jml_phys, &
55 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