/[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 225 - (hide annotations)
Mon Oct 16 12:35:41 2017 UTC (6 years, 7 months ago) by guez
Original Path: trunk/Sources/dyn3d/start_init_phys_m.f
File size: 2519 byte(s)
LMDZE is now in Fortran 2003 (use of allocatable arguments).

gradsdef was not used.

Change names: [uv]10m to [uv]10m_srf in clmain, y[uv]1 to
[uv]1lay. Remove useless complication: zx_alf[12]. Do not modify
[uv]1lay after initial definition from [uv].

Add [uv]10m_srf to output.

Change names in physiq: [uv]10m to [uv]10m_srf, z[uv]10m to [uv]10m,
corresponding to NetCDF output names.

Remove unused complication couchelimite and useless variable inirnpb
in phytrac.

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     use conf_dat2d_m, only: conf_dat2d
13 guez 49 use dimens_m, only: iim, jjm
14 guez 139 use dynetat0_m, only: rlonu, rlatv
15 guez 49 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 225 REAL, ALLOCATABLE:: 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 99 ! Surface temperature:
60 guez 48 call nf95_inq_varid(ncid, 'ST', varid)
61     call nf95_get_var(ncid, varid, var_ana)
62 guez 3 CALL conf_dat2d(lon_ini, lat_ini, lon_rad, lat_rad, var_ana)
63     CALL inter_barxy(lon_rad, lat_rad(:jml_phys -1), var_ana, rlonu(:iim), &
64     rlatv, tmp_var)
65 guez 43 tsol_2d = gr_int_dyn(tmp_var)
66 guez 3
67 guez 99 ! Soil moisture:
68 guez 48 call nf95_inq_varid(ncid, 'CDSW', varid)
69     call nf95_get_var(ncid, varid, var_ana)
70 guez 3 CALL conf_dat2d(lon_ini, lat_ini, lon_rad, lat_rad, var_ana)
71     CALL inter_barxy(lon_rad, lat_rad(:jml_phys -1), var_ana, rlonu(:iim), &
72     rlatv, tmp_var)
73 guez 43 qsol_2d = gr_int_dyn(tmp_var)
74 guez 3
75 guez 48 call nf95_close(ncid)
76 guez 3
77     END SUBROUTINE start_init_phys
78    
79     END MODULE start_init_phys_m

  ViewVC Help
Powered by ViewVC 1.1.21