1 | ! |
---|
2 | ! $Id: phys_local_var_mod.F90 1507 2011-04-15 10:44:31Z idelkadi $ |
---|
3 | ! |
---|
4 | MODULE phys_local_var_mod |
---|
5 | |
---|
6 | ! Variables locales pour effectuer les appels en serie |
---|
7 | !====================================================================== |
---|
8 | ! |
---|
9 | ! |
---|
10 | !====================================================================== |
---|
11 | ! Declaration des variables |
---|
12 | |
---|
13 | REAL, SAVE, ALLOCATABLE :: t_seri(:,:), q_seri(:,:) |
---|
14 | !$OMP THREADPRIVATE(t_seri, q_seri) |
---|
15 | REAL, SAVE, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:) |
---|
16 | !$OMP THREADPRIVATE(ql_seri,qs_seri) |
---|
17 | REAL, SAVE, ALLOCATABLE :: u_seri(:,:), v_seri(:,:) |
---|
18 | !$OMP THREADPRIVATE(u_seri, v_seri) |
---|
19 | |
---|
20 | REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:) |
---|
21 | !$OMP THREADPRIVATE(tr_seri) |
---|
22 | REAL, SAVE, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:) |
---|
23 | !$OMP THREADPRIVATE(d_t_dyn, d_q_dyn) |
---|
24 | REAL, SAVE, ALLOCATABLE :: d_u_dyn(:,:), d_v_dyn(:,:) |
---|
25 | !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn) |
---|
26 | REAL, SAVE, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:) |
---|
27 | !$OMP THREADPRIVATE(d_t_con,d_q_con) |
---|
28 | REAL, SAVE, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:) |
---|
29 | !$OMP THREADPRIVATE(d_u_con,d_v_con) |
---|
30 | REAL, SAVE, ALLOCATABLE :: d_t_wake(:,:),d_q_wake(:,:) |
---|
31 | !$OMP THREADPRIVATE( d_t_wake,d_q_wake) |
---|
32 | REAL, SAVE, ALLOCATABLE :: d_t_lsc(:,:),d_q_lsc(:,:),d_ql_lsc(:,:) |
---|
33 | !$OMP THREADPRIVATE(d_t_lsc,d_q_lsc,d_ql_lsc) |
---|
34 | REAL, SAVE, ALLOCATABLE :: d_t_ajsb(:,:), d_q_ajsb(:,:) |
---|
35 | !$OMP THREADPRIVATE(d_t_ajsb, d_q_ajsb) |
---|
36 | REAL, SAVE, ALLOCATABLE :: d_t_ajs(:,:), d_q_ajs(:,:) |
---|
37 | !$OMP THREADPRIVATE(d_t_ajs, d_q_ajs) |
---|
38 | REAL, SAVE, ALLOCATABLE :: d_u_ajs(:,:), d_v_ajs(:,:) |
---|
39 | !$OMP THREADPRIVATE(d_u_ajs, d_v_ajs) |
---|
40 | REAL, SAVE, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:) |
---|
41 | !$OMP THREADPRIVATE(d_t_eva,d_q_eva) |
---|
42 | REAL, SAVE, ALLOCATABLE :: d_t_lscst(:,:),d_q_lscst(:,:) |
---|
43 | !$OMP THREADPRIVATE(d_t_lscst,d_q_lscst) |
---|
44 | REAL, SAVE, ALLOCATABLE :: d_t_lscth(:,:),d_q_lscth(:,:) |
---|
45 | !$OMP THREADPRIVATE(d_t_lscth,d_q_lscth) |
---|
46 | REAL, SAVE, ALLOCATABLE :: plul_th(:),plul_st(:) |
---|
47 | !$OMP THREADPRIVATE(plul_th,plul_st) |
---|
48 | !tendances dues a oro et lif |
---|
49 | REAL, SAVE, ALLOCATABLE :: d_t_oli(:,:) |
---|
50 | !$OMP THREADPRIVATE(d_t_oli) |
---|
51 | REAL, SAVE, ALLOCATABLE :: d_u_oli(:,:), d_v_oli(:,:) |
---|
52 | !$OMP THREADPRIVATE(d_u_oli, d_v_oli) |
---|
53 | REAL, SAVE, ALLOCATABLE :: d_t_vdf(:,:), d_q_vdf(:,:) |
---|
54 | !$OMP THREADPRIVATE( d_t_vdf, d_q_vdf) |
---|
55 | REAL, SAVE, ALLOCATABLE :: d_u_vdf(:,:), d_v_vdf(:,:) |
---|
56 | !$OMP THREADPRIVATE(d_u_vdf, d_v_vdf) |
---|
57 | REAL, SAVE, ALLOCATABLE :: d_t_oro(:,:) |
---|
58 | !$OMP THREADPRIVATE(d_t_oro) |
---|
59 | REAL, SAVE, ALLOCATABLE :: d_u_oro(:,:), d_v_oro(:,:) |
---|
60 | !$OMP THREADPRIVATE(d_u_oro, d_v_oro) |
---|
61 | REAL, SAVE, ALLOCATABLE :: d_t_lif(:,:) |
---|
62 | !$OMP THREADPRIVATE(d_t_lif) |
---|
63 | REAL, SAVE, ALLOCATABLE :: d_u_lif(:,:), d_v_lif(:,:) |
---|
64 | !$OMP THREADPRIVATE(d_u_lif, d_v_lif) |
---|
65 | ! Tendances Ondes de G non oro (runs strato). |
---|
66 | REAL, SAVE, ALLOCATABLE :: d_u_hin(:,:) |
---|
67 | !$OMP THREADPRIVATE(d_u_hin) |
---|
68 | REAL, SAVE, ALLOCATABLE :: d_v_hin(:,:) |
---|
69 | !$OMP THREADPRIVATE(d_v_hin) |
---|
70 | REAL, SAVE, ALLOCATABLE :: d_t_hin(:,:) |
---|
71 | !$OMP THREADPRIVATE(d_t_hin) |
---|
72 | |
---|
73 | ! tendance du a la conersion Ec -> E thermique |
---|
74 | REAL, SAVE, ALLOCATABLE :: d_t_ec(:,:) |
---|
75 | !$OMP THREADPRIVATE(d_t_ec) |
---|
76 | REAL, SAVE, ALLOCATABLE :: d_ts(:,:), d_tr(:,:,:) |
---|
77 | !$OMP THREADPRIVATE(d_ts, d_tr) |
---|
78 | |
---|
79 | ! diagnostique pour le rayonnement |
---|
80 | REAL, SAVE, ALLOCATABLE :: topswad_aero(:), solswad_aero(:) ! diag |
---|
81 | !$OMP THREADPRIVATE(topswad_aero,solswad_aero) |
---|
82 | REAL, SAVE, ALLOCATABLE :: topswai_aero(:), solswai_aero(:) ! diag |
---|
83 | !$OMP THREADPRIVATE(topswai_aero,solswai_aero) |
---|
84 | REAL, SAVE, ALLOCATABLE :: topswad0_aero(:), solswad0_aero(:) ! diag |
---|
85 | !$OMP THREADPRIVATE(topswad0_aero,solswad0_aero) |
---|
86 | REAL, SAVE, ALLOCATABLE :: topsw_aero(:,:), solsw_aero(:,:) ! diag |
---|
87 | !$OMP THREADPRIVATE(topsw_aero,solsw_aero) |
---|
88 | REAL, SAVE, ALLOCATABLE :: topsw0_aero(:,:), solsw0_aero(:,:) ! diag |
---|
89 | !$OMP THREADPRIVATE(topsw0_aero,solsw0_aero) |
---|
90 | REAL, SAVE, ALLOCATABLE :: topswcf_aero(:,:), solswcf_aero(:,:) ! diag |
---|
91 | !$OMP THREADPRIVATE(topswcf_aero,solswcf_aero) |
---|
92 | REAL, SAVE, ALLOCATABLE :: tausum_aero(:,:,:) |
---|
93 | !$OMP THREADPRIVATE(tausum_aero) |
---|
94 | REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:) |
---|
95 | !$OMP THREADPRIVATE(tau3d_aero) |
---|
96 | REAL, SAVE, ALLOCATABLE :: scdnc(:,:) |
---|
97 | !$OMP THREADPRIVATE(scdnc) |
---|
98 | REAL, SAVE, ALLOCATABLE :: cldncl(:) |
---|
99 | !$OMP THREADPRIVATE(cldncl) |
---|
100 | REAL, SAVE, ALLOCATABLE :: reffclwtop(:) |
---|
101 | !$OMP THREADPRIVATE(reffclwtop) |
---|
102 | REAL, SAVE, ALLOCATABLE :: lcc(:) |
---|
103 | !$OMP THREADPRIVATE(lcc) |
---|
104 | REAL, SAVE, ALLOCATABLE :: reffclws(:,:) |
---|
105 | !$OMP THREADPRIVATE(reffclws) |
---|
106 | REAL, SAVE, ALLOCATABLE :: reffclwc(:,:) |
---|
107 | !$OMP THREADPRIVATE(reffclwc) |
---|
108 | REAL, SAVE, ALLOCATABLE :: cldnvi(:) |
---|
109 | !$OMP THREADPRIVATE(cldnvi) |
---|
110 | REAL, SAVE, ALLOCATABLE :: lcc3d(:,:) |
---|
111 | !$OMP THREADPRIVATE(lcc3d) |
---|
112 | REAL, SAVE, ALLOCATABLE :: lcc3dcon(:,:) |
---|
113 | !$OMP THREADPRIVATE(lcc3dcon) |
---|
114 | REAL, SAVE, ALLOCATABLE :: lcc3dstra(:,:) |
---|
115 | !$OMP THREADPRIVATE(lcc3dstra) |
---|
116 | REAL, SAVE, ALLOCATABLE :: od550aer(:) |
---|
117 | !$OMP THREADPRIVATE(od550aer) |
---|
118 | REAL, SAVE, ALLOCATABLE :: absvisaer(:) |
---|
119 | !$OMP THREADPRIVATE(absvisaer) |
---|
120 | REAL, SAVE, ALLOCATABLE :: od865aer(:) |
---|
121 | !$OMP THREADPRIVATE(od865aer) |
---|
122 | REAL, SAVE, ALLOCATABLE :: ec550aer(:,:) |
---|
123 | !$OMP THREADPRIVATE(ec550aer) |
---|
124 | REAL, SAVE, ALLOCATABLE :: od550lt1aer(:) |
---|
125 | !$OMP THREADPRIVATE(od550lt1aer) |
---|
126 | REAL, SAVE, ALLOCATABLE :: sconcso4(:) |
---|
127 | !$OMP THREADPRIVATE(sconcso4) |
---|
128 | REAL, SAVE, ALLOCATABLE :: sconcoa(:) |
---|
129 | !$OMP THREADPRIVATE(sconcoa) |
---|
130 | REAL, SAVE, ALLOCATABLE :: sconcbc(:) |
---|
131 | !$OMP THREADPRIVATE(sconcbc) |
---|
132 | REAL, SAVE, ALLOCATABLE :: sconcss(:) |
---|
133 | !$OMP THREADPRIVATE(sconcss) |
---|
134 | REAL, SAVE, ALLOCATABLE :: sconcdust(:) |
---|
135 | !$OMP THREADPRIVATE(sconcdust) |
---|
136 | REAL, SAVE, ALLOCATABLE :: concso4(:,:) |
---|
137 | !$OMP THREADPRIVATE(concso4) |
---|
138 | REAL, SAVE, ALLOCATABLE :: concoa(:,:) |
---|
139 | !$OMP THREADPRIVATE(concoa) |
---|
140 | REAL, SAVE, ALLOCATABLE :: concbc(:,:) |
---|
141 | !$OMP THREADPRIVATE(concbc) |
---|
142 | REAL, SAVE, ALLOCATABLE :: concss(:,:) |
---|
143 | !$OMP THREADPRIVATE(concss) |
---|
144 | REAL, SAVE, ALLOCATABLE :: concdust(:,:) |
---|
145 | !$OMP THREADPRIVATE(concdust) |
---|
146 | REAL, SAVE, ALLOCATABLE :: loadso4(:) |
---|
147 | !$OMP THREADPRIVATE(loadso4) |
---|
148 | REAL, SAVE, ALLOCATABLE :: loadoa(:) |
---|
149 | !$OMP THREADPRIVATE(loadoa) |
---|
150 | REAL, SAVE, ALLOCATABLE :: loadbc(:) |
---|
151 | !$OMP THREADPRIVATE(loadbc) |
---|
152 | REAL, SAVE, ALLOCATABLE :: loadss(:) |
---|
153 | !$OMP THREADPRIVATE(loadss) |
---|
154 | REAL, SAVE, ALLOCATABLE :: loaddust(:) |
---|
155 | !$OMP THREADPRIVATE(loaddust) |
---|
156 | REAL, SAVE, ALLOCATABLE :: load_tmp1(:) |
---|
157 | !$OMP THREADPRIVATE(load_tmp1) |
---|
158 | REAL, SAVE, ALLOCATABLE :: load_tmp2(:) |
---|
159 | !$OMP THREADPRIVATE(load_tmp2) |
---|
160 | REAL, SAVE, ALLOCATABLE :: load_tmp3(:) |
---|
161 | !$OMP THREADPRIVATE(load_tmp3) |
---|
162 | REAL, SAVE, ALLOCATABLE :: load_tmp4(:) |
---|
163 | !$OMP THREADPRIVATE(load_tmp4) |
---|
164 | REAL, SAVE, ALLOCATABLE :: load_tmp5(:) |
---|
165 | !$OMP THREADPRIVATE(load_tmp5) |
---|
166 | REAL, SAVE, ALLOCATABLE :: load_tmp6(:) |
---|
167 | !$OMP THREADPRIVATE(load_tmp6) |
---|
168 | REAL, SAVE, ALLOCATABLE :: load_tmp7(:) |
---|
169 | !$OMP THREADPRIVATE(load_tmp7) |
---|
170 | |
---|
171 | CONTAINS |
---|
172 | |
---|
173 | !====================================================================== |
---|
174 | SUBROUTINE phys_local_var_init |
---|
175 | use dimphy |
---|
176 | use infotrac, ONLY : nbtr |
---|
177 | USE aero_mod |
---|
178 | |
---|
179 | IMPLICIT NONE |
---|
180 | #include "indicesol.h" |
---|
181 | allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev)) |
---|
182 | allocate(u_seri(klon,klev),v_seri(klon,klev)) |
---|
183 | |
---|
184 | allocate(tr_seri(klon,klev,nbtr)) |
---|
185 | allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev)) |
---|
186 | allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev)) |
---|
187 | allocate(d_t_con(klon,klev),d_q_con(klon,klev)) |
---|
188 | allocate(d_u_con(klon,klev),d_v_con(klon,klev)) |
---|
189 | allocate(d_t_wake(klon,klev),d_q_wake(klon,klev)) |
---|
190 | allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev)) |
---|
191 | allocate(d_ql_lsc(klon,klev)) |
---|
192 | allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev)) |
---|
193 | allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev)) |
---|
194 | allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev)) |
---|
195 | allocate(d_t_eva(klon,klev),d_q_eva(klon,klev)) |
---|
196 | allocate(d_t_lscst(klon,klev),d_q_lscst(klon,klev)) |
---|
197 | allocate(d_t_lscth(klon,klev),d_q_lscth(klon,klev)) |
---|
198 | allocate(plul_st(klon),plul_th(klon)) |
---|
199 | allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev)) |
---|
200 | allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev)) |
---|
201 | allocate(d_t_oli(klon,klev),d_t_oro(klon,klev)) |
---|
202 | allocate(d_u_oli(klon,klev),d_v_oli(klon,klev)) |
---|
203 | allocate(d_u_oro(klon,klev),d_v_oro(klon,klev)) |
---|
204 | allocate(d_t_lif(klon,klev),d_t_ec(klon,klev)) |
---|
205 | allocate(d_u_lif(klon,klev),d_v_lif(klon,klev)) |
---|
206 | allocate(d_ts(klon,nbsrf), d_tr(klon,klev,nbtr)) |
---|
207 | allocate(topswad_aero(klon), solswad_aero(klon)) |
---|
208 | allocate(topswai_aero(klon), solswai_aero(klon)) |
---|
209 | allocate(topswad0_aero(klon), solswad0_aero(klon)) |
---|
210 | allocate(topsw_aero(klon,naero_grp), solsw_aero(klon,naero_grp)) |
---|
211 | allocate(topsw0_aero(klon,naero_grp), solsw0_aero(klon,naero_grp)) |
---|
212 | allocate(topswcf_aero(klon,3), solswcf_aero(klon,3)) |
---|
213 | allocate(d_u_hin(klon,klev),d_v_hin(klon,klev),d_t_hin(klon,klev)) |
---|
214 | allocate(tausum_aero(klon,nwave,naero_spc)) |
---|
215 | allocate(tau3d_aero(klon,klev,nwave,naero_spc)) |
---|
216 | allocate(scdnc(klon, klev)) |
---|
217 | allocate(cldncl(klon)) |
---|
218 | allocate(reffclwtop(klon)) |
---|
219 | allocate(lcc(klon)) |
---|
220 | allocate(reffclws(klon, klev)) |
---|
221 | allocate(reffclwc(klon, klev)) |
---|
222 | allocate(cldnvi(klon)) |
---|
223 | allocate(lcc3d(klon, klev)) |
---|
224 | allocate(lcc3dcon(klon, klev)) |
---|
225 | allocate(lcc3dstra(klon, klev)) |
---|
226 | allocate(od550aer(klon)) |
---|
227 | allocate(od865aer(klon)) |
---|
228 | allocate(absvisaer(klon)) |
---|
229 | allocate(ec550aer(klon,klev)) |
---|
230 | allocate(od550lt1aer(klon)) |
---|
231 | allocate(sconcso4(klon)) |
---|
232 | allocate(sconcoa(klon)) |
---|
233 | allocate(sconcbc(klon)) |
---|
234 | allocate(sconcss(klon)) |
---|
235 | allocate(sconcdust(klon)) |
---|
236 | allocate(concso4(klon,klev)) |
---|
237 | allocate(concoa(klon,klev)) |
---|
238 | allocate(concbc(klon,klev)) |
---|
239 | allocate(concss(klon,klev)) |
---|
240 | allocate(concdust(klon,klev)) |
---|
241 | allocate(loadso4(klon)) |
---|
242 | allocate(loadoa(klon)) |
---|
243 | allocate(loadbc(klon)) |
---|
244 | allocate(loadss(klon)) |
---|
245 | allocate(loaddust(klon)) |
---|
246 | allocate(load_tmp1(klon)) |
---|
247 | allocate(load_tmp2(klon)) |
---|
248 | allocate(load_tmp3(klon)) |
---|
249 | allocate(load_tmp4(klon)) |
---|
250 | allocate(load_tmp5(klon)) |
---|
251 | allocate(load_tmp6(klon)) |
---|
252 | allocate(load_tmp7(klon)) |
---|
253 | |
---|
254 | END SUBROUTINE phys_local_var_init |
---|
255 | |
---|
256 | !====================================================================== |
---|
257 | SUBROUTINE phys_local_var_end |
---|
258 | use dimphy |
---|
259 | IMPLICIT NONE |
---|
260 | #include "indicesol.h" |
---|
261 | deallocate(t_seri,q_seri,ql_seri,qs_seri) |
---|
262 | deallocate(u_seri,v_seri) |
---|
263 | |
---|
264 | deallocate(tr_seri) |
---|
265 | deallocate(d_t_dyn,d_q_dyn) |
---|
266 | deallocate(d_u_dyn,d_v_dyn) |
---|
267 | deallocate(d_t_con,d_q_con) |
---|
268 | deallocate(d_u_con,d_v_con) |
---|
269 | deallocate(d_t_wake,d_q_wake) |
---|
270 | deallocate(d_t_lsc,d_q_lsc) |
---|
271 | deallocate(d_ql_lsc) |
---|
272 | deallocate(d_t_ajsb,d_q_ajsb) |
---|
273 | deallocate(d_t_ajs,d_q_ajs) |
---|
274 | deallocate(d_u_ajs,d_v_ajs) |
---|
275 | deallocate(d_t_eva,d_q_eva) |
---|
276 | deallocate(d_t_lscst,d_q_lscst) |
---|
277 | deallocate(d_t_lscth,d_q_lscth) |
---|
278 | deallocate(plul_th,plul_th) |
---|
279 | deallocate(d_t_vdf,d_q_vdf) |
---|
280 | deallocate(d_u_vdf,d_v_vdf) |
---|
281 | deallocate(d_t_oli,d_t_oro) |
---|
282 | deallocate(d_u_oli,d_v_oli) |
---|
283 | deallocate(d_u_oro,d_v_oro) |
---|
284 | deallocate(d_t_lif,d_t_ec) |
---|
285 | deallocate(d_u_lif,d_v_lif) |
---|
286 | deallocate(d_ts, d_tr) |
---|
287 | deallocate(topswad_aero,solswad_aero) |
---|
288 | deallocate(topswai_aero,solswai_aero) |
---|
289 | deallocate(topswad0_aero,solswad0_aero) |
---|
290 | deallocate(topsw_aero,solsw_aero) |
---|
291 | deallocate(topsw0_aero,solsw0_aero) |
---|
292 | deallocate(topswcf_aero,solswcf_aero) |
---|
293 | deallocate(tausum_aero) |
---|
294 | deallocate(tau3d_aero) |
---|
295 | deallocate(scdnc) |
---|
296 | deallocate(cldncl) |
---|
297 | deallocate(reffclwtop) |
---|
298 | deallocate(lcc) |
---|
299 | deallocate(reffclws) |
---|
300 | deallocate(reffclwc) |
---|
301 | deallocate(cldnvi) |
---|
302 | deallocate(lcc3d) |
---|
303 | deallocate(lcc3dcon) |
---|
304 | deallocate(lcc3dstra) |
---|
305 | deallocate(od550aer) |
---|
306 | deallocate(od865aer) |
---|
307 | deallocate(absvisaer) |
---|
308 | deallocate(ec550aer) |
---|
309 | deallocate(od550lt1aer) |
---|
310 | deallocate(sconcso4) |
---|
311 | deallocate(sconcoa) |
---|
312 | deallocate(sconcbc) |
---|
313 | deallocate(sconcss) |
---|
314 | deallocate(sconcdust) |
---|
315 | deallocate(concso4) |
---|
316 | deallocate(concoa) |
---|
317 | deallocate(concbc) |
---|
318 | deallocate(concss) |
---|
319 | deallocate(concdust) |
---|
320 | deallocate(loadso4) |
---|
321 | deallocate(loadoa) |
---|
322 | deallocate(loadbc) |
---|
323 | deallocate(loadss) |
---|
324 | deallocate(loaddust) |
---|
325 | deallocate(load_tmp1) |
---|
326 | deallocate(load_tmp2) |
---|
327 | deallocate(load_tmp3) |
---|
328 | deallocate(load_tmp4) |
---|
329 | deallocate(load_tmp5) |
---|
330 | deallocate(load_tmp6) |
---|
331 | deallocate(load_tmp7) |
---|
332 | deallocate(d_u_hin,d_v_hin,d_t_hin) |
---|
333 | |
---|
334 | END SUBROUTINE phys_local_var_end |
---|
335 | |
---|
336 | END MODULE phys_local_var_mod |
---|