1 | MODULE lmdz_wrf_variables_mod |
---|
2 | ! Module to initialize LMDZ variables to be accessible from WRF |
---|
3 | |
---|
4 | IMPLICIT NONE |
---|
5 | |
---|
6 | ! L. Fita, November 2013. Making them accessible. |
---|
7 | REAL, ALLOCATABLE, DIMENSION(:), SAVE :: albedo |
---|
8 | !$OMP THREADPRIVATE(albedo) |
---|
9 | REAL, ALLOCATABLE, DIMENSION(:), SAVE :: sst |
---|
10 | !$OMP THREADPRIVATE(sst) |
---|
11 | !! REAL, ALLOCATABLE, DIMENSION(:), SAVE :: snow |
---|
12 | !!!$OMP THREADPRIVATE(snow) |
---|
13 | ! REAL, ALLOCATABLE, DIMENSION(:), SAVE :: run_off_lic |
---|
14 | !!$OMP THREADPRIVATE(run_off_lic) |
---|
15 | LOGICAL,SAVE :: read_continents=.FALSE. |
---|
16 | !$OMP THREADPRIVATE(read_continents) |
---|
17 | REAL, ALLOCATABLE, DIMENSION(:), SAVE :: restart_runoff |
---|
18 | !$OMP THREADPRIVATE(restart_runoff) |
---|
19 | !! REAL, ALLOCATABLE, DIMENSION(:), SAVE :: run_off_lic_0 |
---|
20 | !!$OMP THREADPRIVATE(run_off_lic_0) |
---|
21 | ! REAL, ALLOCATABLE, DIMENSION(:), SAVE :: tsurf_lim |
---|
22 | ! REAL, ALLOCATABLE, DIMENSION(:), SAVE :: z0_lim |
---|
23 | ! REAL, ALLOCATABLE, DIMENSION(:), SAVE :: alb_lim |
---|
24 | REAL, ALLOCATABLE, DIMENSION(:), SAVE :: phy_glo |
---|
25 | !$OMP THREADPRIVATE(phy_glo) |
---|
26 | |
---|
27 | ! This is already initialized by phys_state_var_mod |
---|
28 | ! REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: pctsrf |
---|
29 | REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: pct_glo |
---|
30 | !$OMP THREADPRIVATE(pct_glo) |
---|
31 | REAL, ALLOCATABLE, DIMENSION(:), SAVE :: sst_glo |
---|
32 | !$OMP THREADPRIVATE(sst_glo) |
---|
33 | REAL, ALLOCATABLE, DIMENSION(:), SAVE :: alb_glo |
---|
34 | !$OMP THREADPRIVATE(alb_glo) |
---|
35 | REAL, ALLOCATABLE, DIMENSION(:), SAVE :: rug_glo |
---|
36 | !$OMP THREADPRIVATE(rug_glo) |
---|
37 | |
---|
38 | !! REAL, ALLOCATABLE, DIMENSION(:), SAVE :: qsol |
---|
39 | !$OMP THREADPRIVATE(qsol) |
---|
40 | !! REAL, ALLOCATABLE, DIMENSION(:), SAVE :: fder |
---|
41 | !$OMP THREADPRIVATE(fder) |
---|
42 | !! REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: snow |
---|
43 | !!$OMP THREADPRIVATE(snow) |
---|
44 | !! REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: qsurf |
---|
45 | !$OMP THREADPRIVATE(qsurf) |
---|
46 | !! REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: evap |
---|
47 | !$OMP THREADPRIVATE(evap) |
---|
48 | !! REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: rugos |
---|
49 | !$OMP THREADPRIVATE(rugos) |
---|
50 | !! REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: agesno |
---|
51 | !$OMP THREADPRIVATE(agesno) |
---|
52 | !! REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE :: ftsoil |
---|
53 | !$OMP THREADPRIVATE(ftsoil) |
---|
54 | |
---|
55 | REAL, ALLOCATABLE, DIMENSION(:), SAVE :: qsol_rst |
---|
56 | !$OMP THREADPRIVATE(qsol_rst) |
---|
57 | REAL, ALLOCATABLE, DIMENSION(:), SAVE :: fder_rst |
---|
58 | !$OMP THREADPRIVATE(fder_rst) |
---|
59 | REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: snow_rst |
---|
60 | !$OMP THREADPRIVATE(snow_rst) |
---|
61 | REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: qsurf_rst |
---|
62 | !$OMP THREADPRIVATE(qsurf_rst) |
---|
63 | REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: evap_rst |
---|
64 | !$OMP THREADPRIVATE(evap_rst) |
---|
65 | REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: rugos_rst |
---|
66 | !$OMP THREADPRIVATE(rugos_rst) |
---|
67 | REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: agesno_rst |
---|
68 | !$OMP THREADPRIVATE(agesno_rst) |
---|
69 | REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE :: ftsoil_rst |
---|
70 | !$OMP THREADPRIVATE(ftsoil_rst) |
---|
71 | |
---|
72 | CONTAINS |
---|
73 | |
---|
74 | SUBROUTINE lmdz_vars_init(klon) |
---|
75 | ! Subroutine to initialize limit variables |
---|
76 | |
---|
77 | USE mod_grid_phy_lmdz, ONLY: klon_glo |
---|
78 | USE indice_sol_mod |
---|
79 | |
---|
80 | IMPLICIT NONE |
---|
81 | |
---|
82 | INCLUDE "dimensions.h" |
---|
83 | INCLUDE "dimsoil.h" |
---|
84 | |
---|
85 | INTEGER, INTENT(IN) :: klon |
---|
86 | |
---|
87 | IF (ALLOCATED(albedo)) DEALLOCATE(albedo) |
---|
88 | ALLOCATE(albedo(klon)) |
---|
89 | IF (ALLOCATED(sst)) DEALLOCATE(sst) |
---|
90 | ALLOCATE(sst(klon)) |
---|
91 | !! IF (ALLOCATED(snow)) DEALLOCATE(snow) |
---|
92 | !! ALLOCATE(snow(klon)) |
---|
93 | !! IF (ALLOCATED(run_off_lic)) DEALLOCATE(run_off_lic) |
---|
94 | !! ALLOCATE(run_off_lic(klon)) |
---|
95 | IF (ALLOCATED(phy_glo)) DEALLOCATE(phy_glo) |
---|
96 | ALLOCATE(phy_glo(klon)) |
---|
97 | |
---|
98 | IF (ALLOCATED(restart_runoff)) DEALLOCATE(restart_runoff) |
---|
99 | ALLOCATE(restart_runoff(klon)) |
---|
100 | !! IF (ALLOCATED(run_off_lic_0)) DEALLOCATE(run_off_lic_0) |
---|
101 | !! ALLOCATE(run_off_lic_0(klon)) |
---|
102 | ! IF (ALLOCATED(tsurf_lim)) DEALLOCATE(tsurf_lim) |
---|
103 | ! ALLOCATE(tsurf_lim(klon)) |
---|
104 | ! IF (ALLOCATED(z0_lim)) DEALLOCATE(z0_lim) |
---|
105 | ! ALLOCATE(z0_lim(klon)) |
---|
106 | ! IF (ALLOCATED(alb_lim)) DEALLOCATE(alb_lim) |
---|
107 | ! ALLOCATE(alb_lim(klon)) |
---|
108 | |
---|
109 | ! This is already initialized by phys_state_var_mod |
---|
110 | ! IF (ALLOCATED(pctsrf)) DEALLOCATE(pctsrf) |
---|
111 | ! ALLOCATE(pctsrf(klon,nbsrf)) |
---|
112 | IF (ALLOCATED(pct_glo)) DEALLOCATE(pct_glo) |
---|
113 | ALLOCATE(pct_glo(klon_glo,nbsrf)) |
---|
114 | IF (ALLOCATED(sst_glo)) DEALLOCATE(sst_glo) |
---|
115 | ALLOCATE(sst_glo(klon_glo)) |
---|
116 | IF (ALLOCATED(alb_glo)) DEALLOCATE(alb_glo) |
---|
117 | ALLOCATE(alb_glo(klon_glo)) |
---|
118 | IF (ALLOCATED(rug_glo)) DEALLOCATE(rug_glo) |
---|
119 | ALLOCATE(rug_glo(klon_glo)) |
---|
120 | |
---|
121 | !! IF (ALLOCATED(qsol)) DEALLOCATE(qsol) |
---|
122 | !! ALLOCATE(qsol(klon)) |
---|
123 | !! IF (ALLOCATED(fder)) DEALLOCATE(fder) |
---|
124 | !! ALLOCATE(fder(klon)) |
---|
125 | !! IF (ALLOCATED(snow)) DEALLOCATE(snow) |
---|
126 | !! ALLOCATE(snow(klon, nbsrf)) |
---|
127 | !! IF (ALLOCATED(qsurf)) DEALLOCATE(qsurf) |
---|
128 | !! ALLOCATE(qsurf(klon, nbsrf)) |
---|
129 | !! IF (ALLOCATED(evap)) DEALLOCATE(evap) |
---|
130 | !! ALLOCATE(evap(klon, nbsrf)) |
---|
131 | !! IF (ALLOCATED(rugos)) DEALLOCATE(rugos) |
---|
132 | !! ALLOCATE(rugos(klon, nbsrf)) |
---|
133 | !! IF (ALLOCATED(agesno)) DEALLOCATE(agesno) |
---|
134 | !! ALLOCATE(agesno(klon, nbsrf)) |
---|
135 | !! IF (ALLOCATED(ftsoil)) DEALLOCATE(ftsoil) |
---|
136 | !! ALLOCATE(ftsoil(klon, nsoilmx, nbsrf)) |
---|
137 | |
---|
138 | IF (ALLOCATED(qsol_rst)) DEALLOCATE(qsol_rst) |
---|
139 | ALLOCATE(qsol_rst(klon)) |
---|
140 | IF (ALLOCATED(fder_rst)) DEALLOCATE(fder_rst) |
---|
141 | ALLOCATE(fder_rst(klon)) |
---|
142 | IF (ALLOCATED(snow_rst)) DEALLOCATE(snow_rst) |
---|
143 | ALLOCATE(snow_rst(klon, nbsrf)) |
---|
144 | IF (ALLOCATED(qsurf_rst)) DEALLOCATE(qsurf_rst) |
---|
145 | ALLOCATE(qsurf_rst(klon, nbsrf)) |
---|
146 | IF (ALLOCATED(evap_rst)) DEALLOCATE(evap_rst) |
---|
147 | ALLOCATE(evap_rst(klon, nbsrf)) |
---|
148 | IF (ALLOCATED(rugos_rst)) DEALLOCATE(rugos_rst) |
---|
149 | ALLOCATE(rugos_rst(klon, nbsrf)) |
---|
150 | IF (ALLOCATED(agesno_rst)) DEALLOCATE(agesno_rst) |
---|
151 | ALLOCATE(agesno_rst(klon, nbsrf)) |
---|
152 | IF (ALLOCATED(ftsoil_rst)) DEALLOCATE(ftsoil_rst) |
---|
153 | ALLOCATE(ftsoil_rst(klon, nsoilmx, nbsrf)) |
---|
154 | |
---|
155 | RETURN |
---|
156 | |
---|
157 | END SUBROUTINE lmdz_vars_init |
---|
158 | |
---|
159 | END MODULE lmdz_wrf_variables_mod |
---|