1 | ! |
---|
2 | ! $Id: phys_local_var_mod.F90 2003 2014-04-04 12:51:02Z fhourdin $ |
---|
3 | ! |
---|
4 | MODULE phys_local_var_mod |
---|
5 | ! Variables locales pour effectuer les appels en serie |
---|
6 | !====================================================================== |
---|
7 | ! |
---|
8 | ! |
---|
9 | !====================================================================== |
---|
10 | ! Declaration des variables |
---|
11 | |
---|
12 | REAL, SAVE, ALLOCATABLE :: t_seri(:,:), q_seri(:,:) |
---|
13 | !$OMP THREADPRIVATE(t_seri, q_seri) |
---|
14 | REAL, SAVE, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:) |
---|
15 | !$OMP THREADPRIVATE(ql_seri,qs_seri) |
---|
16 | REAL, SAVE, ALLOCATABLE :: u_seri(:,:), v_seri(:,:) |
---|
17 | !$OMP THREADPRIVATE(u_seri, v_seri) |
---|
18 | |
---|
19 | REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:) |
---|
20 | !$OMP THREADPRIVATE(tr_seri) |
---|
21 | REAL, SAVE, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:) |
---|
22 | !$OMP THREADPRIVATE(d_t_dyn, d_q_dyn) |
---|
23 | REAL, SAVE, ALLOCATABLE :: d_u_dyn(:,:), d_v_dyn(:,:) |
---|
24 | !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn) |
---|
25 | !!!! |
---|
26 | REAL, SAVE, ALLOCATABLE :: d_tr_dyn(:,:,:) |
---|
27 | !$OMP THREADPRIVATE(d_tr_dyn) |
---|
28 | !!!! |
---|
29 | REAL, SAVE, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:) |
---|
30 | !$OMP THREADPRIVATE(d_t_con,d_q_con) |
---|
31 | REAL, SAVE, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:) |
---|
32 | !$OMP THREADPRIVATE(d_u_con,d_v_con) |
---|
33 | REAL, SAVE, ALLOCATABLE :: d_t_wake(:,:),d_q_wake(:,:) |
---|
34 | !$OMP THREADPRIVATE( d_t_wake,d_q_wake) |
---|
35 | REAL, SAVE, ALLOCATABLE :: d_t_lsc(:,:),d_q_lsc(:,:),d_ql_lsc(:,:) |
---|
36 | !$OMP THREADPRIVATE(d_t_lsc,d_q_lsc,d_ql_lsc) |
---|
37 | REAL, SAVE, ALLOCATABLE :: d_t_ajsb(:,:), d_q_ajsb(:,:) |
---|
38 | !$OMP THREADPRIVATE(d_t_ajsb, d_q_ajsb) |
---|
39 | REAL, SAVE, ALLOCATABLE :: d_t_ajs(:,:), d_q_ajs(:,:) |
---|
40 | !$OMP THREADPRIVATE(d_t_ajs, d_q_ajs) |
---|
41 | REAL, SAVE, ALLOCATABLE :: d_u_ajs(:,:), d_v_ajs(:,:) |
---|
42 | !$OMP THREADPRIVATE(d_u_ajs, d_v_ajs) |
---|
43 | REAL, SAVE, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:) |
---|
44 | !$OMP THREADPRIVATE(d_t_eva,d_q_eva) |
---|
45 | REAL, SAVE, ALLOCATABLE :: d_t_lscst(:,:),d_q_lscst(:,:) |
---|
46 | !$OMP THREADPRIVATE(d_t_lscst,d_q_lscst) |
---|
47 | REAL, SAVE, ALLOCATABLE :: d_t_lscth(:,:),d_q_lscth(:,:) |
---|
48 | !$OMP THREADPRIVATE(d_t_lscth,d_q_lscth) |
---|
49 | REAL, SAVE, ALLOCATABLE :: plul_th(:),plul_st(:) |
---|
50 | !$OMP THREADPRIVATE(plul_th,plul_st) |
---|
51 | !tendances dues a oro et lif |
---|
52 | REAL, SAVE, ALLOCATABLE :: d_t_oli(:,:) |
---|
53 | !$OMP THREADPRIVATE(d_t_oli) |
---|
54 | REAL, SAVE, ALLOCATABLE :: d_u_oli(:,:), d_v_oli(:,:) |
---|
55 | !$OMP THREADPRIVATE(d_u_oli, d_v_oli) |
---|
56 | REAL, SAVE, ALLOCATABLE :: d_t_vdf(:,:), d_q_vdf(:,:), d_t_diss(:,:) |
---|
57 | !$OMP THREADPRIVATE( d_t_vdf, d_q_vdf,d_t_diss) |
---|
58 | REAL, SAVE, ALLOCATABLE :: d_u_vdf(:,:), d_v_vdf(:,:) |
---|
59 | !$OMP THREADPRIVATE(d_u_vdf, d_v_vdf) |
---|
60 | REAL, SAVE, ALLOCATABLE :: d_t_oro(:,:) |
---|
61 | !$OMP THREADPRIVATE(d_t_oro) |
---|
62 | REAL, SAVE, ALLOCATABLE :: d_u_oro(:,:), d_v_oro(:,:) |
---|
63 | !$OMP THREADPRIVATE(d_u_oro, d_v_oro) |
---|
64 | REAL, SAVE, ALLOCATABLE :: d_t_lif(:,:) |
---|
65 | !$OMP THREADPRIVATE(d_t_lif) |
---|
66 | REAL, SAVE, ALLOCATABLE :: d_u_lif(:,:), d_v_lif(:,:) |
---|
67 | !$OMP THREADPRIVATE(d_u_lif, d_v_lif) |
---|
68 | ! Tendances Ondes de G non oro (runs strato). |
---|
69 | REAL, SAVE, ALLOCATABLE :: d_u_hin(:,:) |
---|
70 | !$OMP THREADPRIVATE(d_u_hin) |
---|
71 | REAL, SAVE, ALLOCATABLE :: d_v_hin(:,:) |
---|
72 | !$OMP THREADPRIVATE(d_v_hin) |
---|
73 | REAL, SAVE, ALLOCATABLE :: d_t_hin(:,:) |
---|
74 | !$OMP THREADPRIVATE(d_t_hin) |
---|
75 | |
---|
76 | ! tendance du a la conersion Ec -> E thermique |
---|
77 | REAL, SAVE, ALLOCATABLE :: d_t_ec(:,:) |
---|
78 | !$OMP THREADPRIVATE(d_t_ec) |
---|
79 | REAL, SAVE, ALLOCATABLE :: d_ts(:,:), d_tr(:,:,:) |
---|
80 | !$OMP THREADPRIVATE(d_ts, d_tr) |
---|
81 | |
---|
82 | ! diagnostique pour le rayonnement |
---|
83 | REAL, SAVE, ALLOCATABLE :: topswad_aero(:), solswad_aero(:) ! diag |
---|
84 | !$OMP THREADPRIVATE(topswad_aero,solswad_aero) |
---|
85 | REAL, SAVE, ALLOCATABLE :: topswai_aero(:), solswai_aero(:) ! diag |
---|
86 | !$OMP THREADPRIVATE(topswai_aero,solswai_aero) |
---|
87 | REAL, SAVE, ALLOCATABLE :: topswad0_aero(:), solswad0_aero(:) ! diag |
---|
88 | !$OMP THREADPRIVATE(topswad0_aero,solswad0_aero) |
---|
89 | REAL, SAVE, ALLOCATABLE :: topsw_aero(:,:), solsw_aero(:,:) ! diag |
---|
90 | !$OMP THREADPRIVATE(topsw_aero,solsw_aero) |
---|
91 | REAL, SAVE, ALLOCATABLE :: topsw0_aero(:,:), solsw0_aero(:,:) ! diag |
---|
92 | !$OMP THREADPRIVATE(topsw0_aero,solsw0_aero) |
---|
93 | REAL, SAVE, ALLOCATABLE :: topswcf_aero(:,:), solswcf_aero(:,:) ! diag |
---|
94 | !$OMP THREADPRIVATE(topswcf_aero,solswcf_aero) |
---|
95 | ! Special RRTM |
---|
96 | REAL, SAVE, ALLOCATABLE :: ZLWFT0_i(:,:), ZSWFT0_i(:,:) ! diag |
---|
97 | !$OMP THREADPRIVATE(ZLWFT0_i,ZSWFT0_i) |
---|
98 | REAL, SAVE, ALLOCATABLE :: ZFLDN0(:,:), ZFLUP0(:,:) ! diag |
---|
99 | !$OMP THREADPRIVATE(ZFLDN0,ZFLUP0) |
---|
100 | REAL, SAVE, ALLOCATABLE :: ZFSDN0(:,:), ZFSUP0(:,:) ! diag |
---|
101 | !$OMP THREADPRIVATE(ZFSDN0,ZFSUP0) |
---|
102 | ! |
---|
103 | REAL, SAVE, ALLOCATABLE :: tausum_aero(:,:,:) |
---|
104 | !$OMP THREADPRIVATE(tausum_aero) |
---|
105 | REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:) |
---|
106 | !$OMP THREADPRIVATE(tau3d_aero) |
---|
107 | REAL, SAVE, ALLOCATABLE :: scdnc(:,:) |
---|
108 | !$OMP THREADPRIVATE(scdnc) |
---|
109 | REAL, SAVE, ALLOCATABLE :: cldncl(:) |
---|
110 | !$OMP THREADPRIVATE(cldncl) |
---|
111 | REAL, SAVE, ALLOCATABLE :: reffclwtop(:) |
---|
112 | !$OMP THREADPRIVATE(reffclwtop) |
---|
113 | REAL, SAVE, ALLOCATABLE :: lcc(:) |
---|
114 | !$OMP THREADPRIVATE(lcc) |
---|
115 | REAL, SAVE, ALLOCATABLE :: reffclws(:,:) |
---|
116 | !$OMP THREADPRIVATE(reffclws) |
---|
117 | REAL, SAVE, ALLOCATABLE :: reffclwc(:,:) |
---|
118 | !$OMP THREADPRIVATE(reffclwc) |
---|
119 | REAL, SAVE, ALLOCATABLE :: cldnvi(:) |
---|
120 | !$OMP THREADPRIVATE(cldnvi) |
---|
121 | REAL, SAVE, ALLOCATABLE :: lcc3d(:,:) |
---|
122 | !$OMP THREADPRIVATE(lcc3d) |
---|
123 | REAL, SAVE, ALLOCATABLE :: lcc3dcon(:,:) |
---|
124 | !$OMP THREADPRIVATE(lcc3dcon) |
---|
125 | REAL, SAVE, ALLOCATABLE :: lcc3dstra(:,:) |
---|
126 | !$OMP THREADPRIVATE(lcc3dstra) |
---|
127 | REAL, SAVE, ALLOCATABLE :: od550aer(:) |
---|
128 | !$OMP THREADPRIVATE(od550aer) |
---|
129 | REAL, SAVE, ALLOCATABLE :: absvisaer(:) |
---|
130 | !$OMP THREADPRIVATE(absvisaer) |
---|
131 | REAL, SAVE, ALLOCATABLE :: od865aer(:) |
---|
132 | !$OMP THREADPRIVATE(od865aer) |
---|
133 | REAL, SAVE, ALLOCATABLE :: ec550aer(:,:) |
---|
134 | !$OMP THREADPRIVATE(ec550aer) |
---|
135 | REAL, SAVE, ALLOCATABLE :: od550lt1aer(:) |
---|
136 | !$OMP THREADPRIVATE(od550lt1aer) |
---|
137 | REAL, SAVE, ALLOCATABLE :: sconcso4(:) |
---|
138 | !$OMP THREADPRIVATE(sconcso4) |
---|
139 | REAL, SAVE, ALLOCATABLE :: sconcoa(:) |
---|
140 | !$OMP THREADPRIVATE(sconcoa) |
---|
141 | REAL, SAVE, ALLOCATABLE :: sconcbc(:) |
---|
142 | !$OMP THREADPRIVATE(sconcbc) |
---|
143 | REAL, SAVE, ALLOCATABLE :: sconcss(:) |
---|
144 | !$OMP THREADPRIVATE(sconcss) |
---|
145 | REAL, SAVE, ALLOCATABLE :: sconcdust(:) |
---|
146 | !$OMP THREADPRIVATE(sconcdust) |
---|
147 | REAL, SAVE, ALLOCATABLE :: concso4(:,:) |
---|
148 | !$OMP THREADPRIVATE(concso4) |
---|
149 | REAL, SAVE, ALLOCATABLE :: concoa(:,:) |
---|
150 | !$OMP THREADPRIVATE(concoa) |
---|
151 | REAL, SAVE, ALLOCATABLE :: concbc(:,:) |
---|
152 | !$OMP THREADPRIVATE(concbc) |
---|
153 | REAL, SAVE, ALLOCATABLE :: concss(:,:) |
---|
154 | !$OMP THREADPRIVATE(concss) |
---|
155 | REAL, SAVE, ALLOCATABLE :: concdust(:,:) |
---|
156 | !$OMP THREADPRIVATE(concdust) |
---|
157 | REAL, SAVE, ALLOCATABLE :: loadso4(:) |
---|
158 | !$OMP THREADPRIVATE(loadso4) |
---|
159 | REAL, SAVE, ALLOCATABLE :: loadoa(:) |
---|
160 | !$OMP THREADPRIVATE(loadoa) |
---|
161 | REAL, SAVE, ALLOCATABLE :: loadbc(:) |
---|
162 | !$OMP THREADPRIVATE(loadbc) |
---|
163 | REAL, SAVE, ALLOCATABLE :: loadss(:) |
---|
164 | !$OMP THREADPRIVATE(loadss) |
---|
165 | REAL, SAVE, ALLOCATABLE :: loaddust(:) |
---|
166 | !$OMP THREADPRIVATE(loaddust) |
---|
167 | REAL, SAVE, ALLOCATABLE :: load_tmp1(:) |
---|
168 | !$OMP THREADPRIVATE(load_tmp1) |
---|
169 | REAL, SAVE, ALLOCATABLE :: load_tmp2(:) |
---|
170 | !$OMP THREADPRIVATE(load_tmp2) |
---|
171 | REAL, SAVE, ALLOCATABLE :: load_tmp3(:) |
---|
172 | !$OMP THREADPRIVATE(load_tmp3) |
---|
173 | REAL, SAVE, ALLOCATABLE :: load_tmp4(:) |
---|
174 | !$OMP THREADPRIVATE(load_tmp4) |
---|
175 | REAL, SAVE, ALLOCATABLE :: load_tmp5(:) |
---|
176 | !$OMP THREADPRIVATE(load_tmp5) |
---|
177 | REAL, SAVE, ALLOCATABLE :: load_tmp6(:) |
---|
178 | !$OMP THREADPRIVATE(load_tmp6) |
---|
179 | REAL, SAVE, ALLOCATABLE :: load_tmp7(:) |
---|
180 | !$OMP THREADPRIVATE(load_tmp7) |
---|
181 | |
---|
182 | !IM ajout variables CFMIP2/CMIP5 |
---|
183 | REAL,ALLOCATABLE,SAVE :: topswad_aerop(:), solswad_aerop(:) |
---|
184 | !$OMP THREADPRIVATE(topswad_aerop, solswad_aerop) |
---|
185 | REAL,ALLOCATABLE,SAVE :: topswai_aerop(:), solswai_aerop(:) |
---|
186 | !$OMP THREADPRIVATE(topswai_aerop, solswai_aerop) |
---|
187 | REAL,ALLOCATABLE,SAVE :: topswad0_aerop(:), solswad0_aerop(:) |
---|
188 | !$OMP THREADPRIVATE(topswad0_aerop, solswad0_aerop) |
---|
189 | REAL,ALLOCATABLE,SAVE :: topsw_aerop(:,:), topsw0_aerop(:,:) |
---|
190 | !$OMP THREADPRIVATE(topsw_aerop, topsw0_aerop) |
---|
191 | REAL,ALLOCATABLE,SAVE :: solsw_aerop(:,:), solsw0_aerop(:,:) |
---|
192 | !$OMP THREADPRIVATE(solsw_aerop, solsw0_aerop) |
---|
193 | REAL,ALLOCATABLE,SAVE :: topswcf_aerop(:,:), solswcf_aerop(:,:) |
---|
194 | !$OMP THREADPRIVATE(topswcf_aerop, solswcf_aerop) |
---|
195 | |
---|
196 | |
---|
197 | !Ajout de celles nécessaires au phys_output_write_mod |
---|
198 | REAL, SAVE, ALLOCATABLE :: slp(:) |
---|
199 | !$OMP THREADPRIVATE(slp) |
---|
200 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp |
---|
201 | !$OMP THREADPRIVATE(sens, flwp, fiwp) |
---|
202 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake, bils |
---|
203 | !$OMP THREADPRIVATE(ale_wake, alp_wake, bils) |
---|
204 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh |
---|
205 | !$OMP THREADPRIVATE(cdragm, cdragh) |
---|
206 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m, qsol |
---|
207 | !$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m, qsol) |
---|
208 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldhjn, cldljn, cldmjn,cldtjn |
---|
209 | !$OMP THREADPRIVATE(cldhjn, cldljn, cldmjn, cldtjn) |
---|
210 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: JrNt |
---|
211 | !$OMP THREADPRIVATE(JrNt) |
---|
212 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw |
---|
213 | !$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw) |
---|
214 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m |
---|
215 | !$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m) |
---|
216 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_lcl, s_pblh, s_pblt, s_therm |
---|
217 | !$OMP THREADPRIVATE(s_lcl, s_pblh, s_pblt, s_therm) |
---|
218 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: slab_wfbils |
---|
219 | !$OMP THREADPRIVATE(slab_wfbils) |
---|
220 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: tpot, tpote, ue, uq, ve, vq, zxffonte |
---|
221 | !$OMP THREADPRIVATE(tpot, tpote, ue, uq, ve, vq, zxffonte) |
---|
222 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfqcalving |
---|
223 | !$OMP THREADPRIVATE(zxfqcalving) |
---|
224 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte |
---|
225 | !$OMP THREADPRIVATE(zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte) |
---|
226 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc |
---|
227 | !$OMP THREADPRIVATE(zxqsurf, rain_lsc) |
---|
228 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wake_h, wbeff, zmax_th, zq2m, zt2m |
---|
229 | !$OMP THREADPRIVATE(wake_h, wbeff, zmax_th, zq2m, zt2m) |
---|
230 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: weak_inversion |
---|
231 | !$OMP THREADPRIVATE(weak_inversion) |
---|
232 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_bl_stat,alp_bl_conv,alp_bl_det |
---|
233 | !$OMP THREADPRIVATE(ale_bl_stat,alp_bl_conv,alp_bl_det) |
---|
234 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_fluct_m,alp_bl_fluct_tke |
---|
235 | !$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke) |
---|
236 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_stat, n2, s2 |
---|
237 | !$OMP THREADPRIVATE(alp_bl_stat, n2, s2) |
---|
238 | REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: proba_notrig, random_notrig |
---|
239 | !$OMP THREADPRIVATE(proba_notrig, random_notrig) |
---|
240 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: fsolsw, wfbils, wfbilo |
---|
241 | !$OMP THREADPRIVATE(fsolsw, wfbils, wfbilo) |
---|
242 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t2m, fevap, fluxlat, fsollw,evap_pot |
---|
243 | !$OMP THREADPRIVATE(t2m, fevap, fluxlat, fsollw,evap_pot) |
---|
244 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd, dnwd0, upwd, omega |
---|
245 | !$OMP THREADPRIVATE(dnwd, dnwd0, upwd, omega) |
---|
246 | ! REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th |
---|
247 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: lambda_th |
---|
248 | !$OMP THREADPRIVATE(lambda_th) |
---|
249 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc |
---|
250 | !$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc) |
---|
251 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq, ref_ice, theta, zphi |
---|
252 | !$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi) |
---|
253 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq_pi, ref_ice_pi |
---|
254 | !$OMP THREADPRIVATE(ref_liq_pi, ref_ice_pi) |
---|
255 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg, zx_rh |
---|
256 | !$OMP THREADPRIVATE(wake_omg, zx_rh) |
---|
257 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: frugs, agesno |
---|
258 | !$OMP THREADPRIVATE(frugs, agesno) |
---|
259 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca |
---|
260 | !$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca) |
---|
261 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: Vprecip, zw2 |
---|
262 | !$OMP THREADPRIVATE(Vprecip, zw2) |
---|
263 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmfd, pmfu |
---|
264 | !$OMP THREADPRIVATE(pmfd, pmfu) |
---|
265 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: fluxt, fluxu, fluxv |
---|
266 | !$OMP THREADPRIVATE(fluxt, fluxu, fluxv) |
---|
267 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: uwriteSTD, vwriteSTD, wwriteSTD |
---|
268 | !$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD) |
---|
269 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD |
---|
270 | !$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD) |
---|
271 | |
---|
272 | ! ug et d'autres encore: |
---|
273 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wdtrainA, wdtrainM |
---|
274 | !$OMP THREADPRIVATE(wdtrainA, wdtrainM) |
---|
275 | REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec |
---|
276 | !$OMP THREADPRIVATE(beta_prec) |
---|
277 | REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rneb,rnebjn |
---|
278 | !$OMP THREADPRIVATE(rneb,rnebjn) |
---|
279 | |
---|
280 | ! variables de sorties MM |
---|
281 | REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxsnow,snowhgt,qsnow,to_ice |
---|
282 | REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: sissnow,runoff,albsol3_lic |
---|
283 | !$OMP THREADPRIVATE(zxsnow,snowhgt,qsnow,to_ice) |
---|
284 | !$OMP THREADPRIVATE(sissnow,runoff,albsol3_lic) |
---|
285 | |
---|
286 | CONTAINS |
---|
287 | |
---|
288 | !====================================================================== |
---|
289 | SUBROUTINE phys_local_var_init |
---|
290 | USE dimphy |
---|
291 | USE infotrac, ONLY : nbtr |
---|
292 | USE aero_mod |
---|
293 | USE indice_sol_mod |
---|
294 | USE phys_output_var_mod |
---|
295 | USE phys_state_var_mod |
---|
296 | |
---|
297 | IMPLICIT NONE |
---|
298 | allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev)) |
---|
299 | allocate(u_seri(klon,klev),v_seri(klon,klev)) |
---|
300 | |
---|
301 | allocate(tr_seri(klon,klev,nbtr)) |
---|
302 | allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev)) |
---|
303 | allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev)) |
---|
304 | allocate(d_tr_dyn(klon,klev,nbtr)) !RomP |
---|
305 | allocate(d_t_con(klon,klev),d_q_con(klon,klev)) |
---|
306 | allocate(d_u_con(klon,klev),d_v_con(klon,klev)) |
---|
307 | allocate(d_t_wake(klon,klev),d_q_wake(klon,klev)) |
---|
308 | allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev)) |
---|
309 | allocate(d_ql_lsc(klon,klev)) |
---|
310 | allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev)) |
---|
311 | allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev)) |
---|
312 | allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev)) |
---|
313 | allocate(d_t_eva(klon,klev),d_q_eva(klon,klev)) |
---|
314 | allocate(d_t_lscst(klon,klev),d_q_lscst(klon,klev)) |
---|
315 | allocate(d_t_lscth(klon,klev),d_q_lscth(klon,klev)) |
---|
316 | allocate(plul_st(klon),plul_th(klon)) |
---|
317 | allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev),d_t_diss(klon,klev)) |
---|
318 | allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev)) |
---|
319 | allocate(d_t_oli(klon,klev),d_t_oro(klon,klev)) |
---|
320 | allocate(d_u_oli(klon,klev),d_v_oli(klon,klev)) |
---|
321 | allocate(d_u_oro(klon,klev),d_v_oro(klon,klev)) |
---|
322 | allocate(d_t_lif(klon,klev),d_t_ec(klon,klev)) |
---|
323 | allocate(d_u_lif(klon,klev),d_v_lif(klon,klev)) |
---|
324 | allocate(d_ts(klon,nbsrf), d_tr(klon,klev,nbtr)) |
---|
325 | ! Special RRTM |
---|
326 | allocate(ZLWFT0_i(klon,klev+1),ZSWFT0_i(klon,klev+1),ZFLDN0(klon,klev+1)) |
---|
327 | allocate(ZFLUP0(klon,klev+1),ZFSDN0(klon,klev+1),ZFSUP0(klon,klev+1)) |
---|
328 | ! |
---|
329 | allocate(topswad_aero(klon), solswad_aero(klon)) |
---|
330 | allocate(topswai_aero(klon), solswai_aero(klon)) |
---|
331 | allocate(topswad0_aero(klon), solswad0_aero(klon)) |
---|
332 | allocate(topsw_aero(klon,naero_grp), solsw_aero(klon,naero_grp)) |
---|
333 | allocate(topsw0_aero(klon,naero_grp), solsw0_aero(klon,naero_grp)) |
---|
334 | allocate(topswcf_aero(klon,3), solswcf_aero(klon,3)) |
---|
335 | allocate(d_u_hin(klon,klev),d_v_hin(klon,klev),d_t_hin(klon,klev)) |
---|
336 | ! allocate(tausum_aero(klon,nwave,naero_spc)) |
---|
337 | ! allocate(tau3d_aero(klon,klev,nwave,naero_spc)) |
---|
338 | !--correction mini bug OB |
---|
339 | allocate(tausum_aero(klon,nwave,naero_tot)) |
---|
340 | allocate(tau3d_aero(klon,klev,nwave,naero_tot)) |
---|
341 | allocate(scdnc(klon, klev)) |
---|
342 | allocate(cldncl(klon)) |
---|
343 | allocate(reffclwtop(klon)) |
---|
344 | allocate(lcc(klon)) |
---|
345 | allocate(reffclws(klon, klev)) |
---|
346 | allocate(reffclwc(klon, klev)) |
---|
347 | allocate(cldnvi(klon)) |
---|
348 | allocate(lcc3d(klon, klev)) |
---|
349 | allocate(lcc3dcon(klon, klev)) |
---|
350 | allocate(lcc3dstra(klon, klev)) |
---|
351 | allocate(od550aer(klon)) |
---|
352 | allocate(od865aer(klon)) |
---|
353 | allocate(absvisaer(klon)) |
---|
354 | allocate(ec550aer(klon,klev)) |
---|
355 | allocate(od550lt1aer(klon)) |
---|
356 | allocate(sconcso4(klon)) |
---|
357 | allocate(sconcoa(klon)) |
---|
358 | allocate(sconcbc(klon)) |
---|
359 | allocate(sconcss(klon)) |
---|
360 | allocate(sconcdust(klon)) |
---|
361 | allocate(concso4(klon,klev)) |
---|
362 | allocate(concoa(klon,klev)) |
---|
363 | allocate(concbc(klon,klev)) |
---|
364 | allocate(concss(klon,klev)) |
---|
365 | allocate(concdust(klon,klev)) |
---|
366 | allocate(loadso4(klon)) |
---|
367 | allocate(loadoa(klon)) |
---|
368 | allocate(loadbc(klon)) |
---|
369 | allocate(loadss(klon)) |
---|
370 | allocate(loaddust(klon)) |
---|
371 | allocate(load_tmp1(klon)) |
---|
372 | allocate(load_tmp2(klon)) |
---|
373 | allocate(load_tmp3(klon)) |
---|
374 | allocate(load_tmp4(klon)) |
---|
375 | allocate(load_tmp5(klon)) |
---|
376 | allocate(load_tmp6(klon)) |
---|
377 | allocate(load_tmp7(klon)) |
---|
378 | |
---|
379 | !IM ajout variables CFMIP2/CMIP5 |
---|
380 | ALLOCATE(topswad_aerop(klon), solswad_aerop(klon)) |
---|
381 | ALLOCATE(topswai_aerop(klon), solswai_aerop(klon)) |
---|
382 | ALLOCATE(topswad0_aerop(klon), solswad0_aerop(klon)) |
---|
383 | ALLOCATE(topsw_aerop(klon,naero_grp), topsw0_aerop(klon,naero_grp)) |
---|
384 | ALLOCATE(solsw_aerop(klon,naero_grp), solsw0_aerop(klon,naero_grp)) |
---|
385 | ALLOCATE(topswcf_aerop(klon,naero_grp), solswcf_aerop(klon,naero_grp)) |
---|
386 | |
---|
387 | ! FH Ajout de celles nécessaires au phys_output_write_mod |
---|
388 | |
---|
389 | ALLOCATE(slp(klon)) |
---|
390 | ALLOCATE(ale_wake(klon), alp_wake(klon), bils(klon)) |
---|
391 | ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon)) |
---|
392 | ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon), qsol(klon)) |
---|
393 | ALLOCATE(cldhjn(klon), cldljn(klon), cldmjn(klon), cldtjn(klon)) |
---|
394 | ALLOCATE(JrNt(klon)) |
---|
395 | ALLOCATE(dthmin(klon), evap(klon), fder(klon), plcl(klon), plfc(klon)) |
---|
396 | ALLOCATE(prw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon)) |
---|
397 | ALLOCATE(s_lcl(klon)) |
---|
398 | ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon)) |
---|
399 | ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon)) |
---|
400 | ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon)) |
---|
401 | ALLOCATE(zxfqcalving(klon), zxfluxlat(klon), zxrugs(klon)) |
---|
402 | ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon)) |
---|
403 | ALLOCATE(rain_lsc(klon), wake_h(klon), wbeff(klon), zmax_th(klon)) |
---|
404 | ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon)) |
---|
405 | ALLOCATE(sens(klon), flwp(klon), fiwp(klon)) |
---|
406 | ALLOCATE(ale_bl_stat(klon), alp_bl_conv(klon), alp_bl_det(klon)) |
---|
407 | ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon)) |
---|
408 | ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon)) |
---|
409 | ALLOCATE(proba_notrig(klon), random_notrig(klon)) |
---|
410 | |
---|
411 | ALLOCATE(dnwd(klon, klev), dnwd0(klon, klev)) |
---|
412 | ! ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev)) |
---|
413 | ALLOCATE(upwd(klon, klev), omega(klon, klev)) |
---|
414 | ! ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev)) |
---|
415 | ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev)) |
---|
416 | ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev)) |
---|
417 | ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev)) |
---|
418 | ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev)) |
---|
419 | ALLOCATE(ref_liq_pi(klon, klev), ref_ice_pi(klon, klev)) |
---|
420 | ALLOCATE(zphi(klon, klev), wake_omg(klon, klev), zx_rh(klon, klev)) |
---|
421 | ALLOCATE(pmfd(klon, klev), pmfu(klon, klev)) |
---|
422 | |
---|
423 | ALLOCATE(t2m(klon, nbsrf), fevap(klon, nbsrf), fluxlat(klon, nbsrf)) |
---|
424 | ALLOCATE(frugs(klon, nbsrf), agesno(klon, nbsrf), fsollw(klon, nbsrf)) |
---|
425 | ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf), wfbilo(klon, nbsrf)) |
---|
426 | ALLOCATE(evap_pot(klon, nbsrf)) |
---|
427 | |
---|
428 | ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1), prfl(klon, klev+1)) |
---|
429 | ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1)) |
---|
430 | ALLOCATE(zw2(klon, klev+1)) |
---|
431 | |
---|
432 | ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf)) |
---|
433 | ALLOCATE(fluxt(klon, klev, nbsrf)) |
---|
434 | |
---|
435 | ALLOCATE(uwriteSTD(klon,nlevSTD,nfiles), vwriteSTD(klon,nlevSTD,nfiles)) |
---|
436 | ALLOCATE(wwriteSTD(klon,nlevSTD,nfiles), phiwriteSTD(klon,nlevSTD,nfiles)) |
---|
437 | ALLOCATE(qwriteSTD(klon,nlevSTD,nfiles), twriteSTD(klon,nlevSTD,nfiles)) |
---|
438 | ALLOCATE(rhwriteSTD(klon,nlevSTD,nfiles)) |
---|
439 | |
---|
440 | ! ug et d'autres encore: |
---|
441 | ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev)) |
---|
442 | ALLOCATE(beta_prec(klon,klev)) |
---|
443 | ALLOCATE(rneb(klon,klev),rnebjn(klon,klev)) |
---|
444 | |
---|
445 | |
---|
446 | ALLOCATE (zxsnow(klon),snowhgt(klon),qsnow(klon),to_ice(klon)) |
---|
447 | ALLOCATE (sissnow(klon),runoff(klon),albsol3_lic(klon)) |
---|
448 | |
---|
449 | |
---|
450 | |
---|
451 | END SUBROUTINE phys_local_var_init |
---|
452 | |
---|
453 | !====================================================================== |
---|
454 | SUBROUTINE phys_local_var_end |
---|
455 | USE dimphy |
---|
456 | USE indice_sol_mod |
---|
457 | IMPLICIT NONE |
---|
458 | deallocate(t_seri,q_seri,ql_seri,qs_seri) |
---|
459 | deallocate(u_seri,v_seri) |
---|
460 | |
---|
461 | deallocate(tr_seri) |
---|
462 | deallocate(d_t_dyn,d_q_dyn) |
---|
463 | deallocate(d_u_dyn,d_v_dyn) |
---|
464 | deallocate(d_tr_dyn) !RomP |
---|
465 | deallocate(d_t_con,d_q_con) |
---|
466 | deallocate(d_u_con,d_v_con) |
---|
467 | deallocate(d_t_wake,d_q_wake) |
---|
468 | deallocate(d_t_lsc,d_q_lsc) |
---|
469 | deallocate(d_ql_lsc) |
---|
470 | deallocate(d_t_ajsb,d_q_ajsb) |
---|
471 | deallocate(d_t_ajs,d_q_ajs) |
---|
472 | deallocate(d_u_ajs,d_v_ajs) |
---|
473 | deallocate(d_t_eva,d_q_eva) |
---|
474 | deallocate(d_t_lscst,d_q_lscst) |
---|
475 | deallocate(d_t_lscth,d_q_lscth) |
---|
476 | deallocate(plul_st,plul_th) |
---|
477 | deallocate(d_t_vdf,d_q_vdf,d_t_diss) |
---|
478 | deallocate(d_u_vdf,d_v_vdf) |
---|
479 | deallocate(d_t_oli,d_t_oro) |
---|
480 | deallocate(d_u_oli,d_v_oli) |
---|
481 | deallocate(d_u_oro,d_v_oro) |
---|
482 | deallocate(d_t_lif,d_t_ec) |
---|
483 | deallocate(d_u_lif,d_v_lif) |
---|
484 | deallocate(d_ts, d_tr) |
---|
485 | deallocate(topswad_aero,solswad_aero) |
---|
486 | deallocate(topswai_aero,solswai_aero) |
---|
487 | deallocate(topswad0_aero,solswad0_aero) |
---|
488 | deallocate(topsw_aero,solsw_aero) |
---|
489 | deallocate(topsw0_aero,solsw0_aero) |
---|
490 | deallocate(topswcf_aero,solswcf_aero) |
---|
491 | deallocate(tausum_aero) |
---|
492 | deallocate(tau3d_aero) |
---|
493 | deallocate(scdnc) |
---|
494 | deallocate(cldncl) |
---|
495 | deallocate(reffclwtop) |
---|
496 | deallocate(lcc) |
---|
497 | deallocate(reffclws) |
---|
498 | deallocate(reffclwc) |
---|
499 | deallocate(cldnvi) |
---|
500 | deallocate(lcc3d) |
---|
501 | deallocate(lcc3dcon) |
---|
502 | deallocate(lcc3dstra) |
---|
503 | deallocate(od550aer) |
---|
504 | deallocate(od865aer) |
---|
505 | deallocate(absvisaer) |
---|
506 | deallocate(ec550aer) |
---|
507 | deallocate(od550lt1aer) |
---|
508 | deallocate(sconcso4) |
---|
509 | deallocate(sconcoa) |
---|
510 | deallocate(sconcbc) |
---|
511 | deallocate(sconcss) |
---|
512 | deallocate(sconcdust) |
---|
513 | deallocate(concso4) |
---|
514 | deallocate(concoa) |
---|
515 | deallocate(concbc) |
---|
516 | deallocate(concss) |
---|
517 | deallocate(concdust) |
---|
518 | deallocate(loadso4) |
---|
519 | deallocate(loadoa) |
---|
520 | deallocate(loadbc) |
---|
521 | deallocate(loadss) |
---|
522 | deallocate(loaddust) |
---|
523 | deallocate(load_tmp1) |
---|
524 | deallocate(load_tmp2) |
---|
525 | deallocate(load_tmp3) |
---|
526 | deallocate(load_tmp4) |
---|
527 | deallocate(load_tmp5) |
---|
528 | deallocate(load_tmp6) |
---|
529 | deallocate(load_tmp7) |
---|
530 | deallocate(d_u_hin,d_v_hin,d_t_hin) |
---|
531 | |
---|
532 | !IM ajout variables CFMIP2/CMIP5 |
---|
533 | deallocate(topswad_aerop, solswad_aerop) |
---|
534 | deallocate(topswai_aerop, solswai_aerop) |
---|
535 | deallocate(topswad0_aerop, solswad0_aerop) |
---|
536 | deallocate(topsw_aerop, topsw0_aerop) |
---|
537 | deallocate(solsw_aerop, solsw0_aerop) |
---|
538 | deallocate(topswcf_aerop, solswcf_aerop) |
---|
539 | |
---|
540 | |
---|
541 | ! FH Ajout de celles nécessaires au phys_output_write_mod |
---|
542 | DEALLOCATE(slp) |
---|
543 | DEALLOCATE(ale_wake, alp_wake, bils) |
---|
544 | DEALLOCATE(cdragm, cdragh, cldh, cldl) |
---|
545 | DEALLOCATE(cldm, cldq, cldt, qsat2m, qsol) |
---|
546 | DEALLOCATE(cldljn, cldmjn, cldhjn, cldtjn, JrNt) |
---|
547 | DEALLOCATE(dthmin, evap, fder, plcl, plfc) |
---|
548 | DEALLOCATE(prw, zustar, zu10m, zv10m, rh2m, s_lcl) |
---|
549 | DEALLOCATE(s_pblh, s_pblt, s_therm) |
---|
550 | DEALLOCATE(slab_wfbils, tpot, tpote, ue) |
---|
551 | DEALLOCATE(uq, ve, vq, zxffonte) |
---|
552 | DEALLOCATE(zxfqcalving, zxfluxlat, zxrugs) |
---|
553 | DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf) |
---|
554 | DEALLOCATE(rain_lsc, wake_h, wbeff, zmax_th) |
---|
555 | DEALLOCATE(zq2m, zt2m, weak_inversion) |
---|
556 | DEALLOCATE(sens, flwp, fiwp) |
---|
557 | DEALLOCATE(ale_bl_stat,alp_bl_conv,alp_bl_det) |
---|
558 | DEALLOCATE(alp_bl_fluct_m,alp_bl_fluct_tke) |
---|
559 | DEALLOCATE(alp_bl_stat, n2, s2) |
---|
560 | DEALLOCATE(proba_notrig, random_notrig) |
---|
561 | |
---|
562 | DEALLOCATE(dnwd, dnwd0) |
---|
563 | ! DEALLOCATE(upwd, omega, coefh) |
---|
564 | DEALLOCATE(upwd, omega) |
---|
565 | ! DEALLOCATE(coefm, lambda_th, cldemi) |
---|
566 | DEALLOCATE(lambda_th, cldemi) |
---|
567 | DEALLOCATE(cldfra, cldtau, fiwc) |
---|
568 | DEALLOCATE(fl, re, flwc) |
---|
569 | DEALLOCATE(ref_liq, ref_ice, theta) |
---|
570 | DEALLOCATE(ref_liq_pi, ref_ice_pi) |
---|
571 | DEALLOCATE(zphi, wake_omg, zx_rh) |
---|
572 | DEALLOCATE(pmfd, pmfu) |
---|
573 | |
---|
574 | DEALLOCATE(t2m, fevap, fluxlat) |
---|
575 | DEALLOCATE(frugs, agesno, fsollw, evap_pot) |
---|
576 | DEALLOCATE(fsolsw, wfbils, wfbilo) |
---|
577 | |
---|
578 | DEALLOCATE(pmflxr, pmflxs, prfl) |
---|
579 | DEALLOCATE(psfl, fraca, Vprecip) |
---|
580 | DEALLOCATE(zw2) |
---|
581 | |
---|
582 | DEALLOCATE(fluxu, fluxv) |
---|
583 | DEALLOCATE(fluxt) |
---|
584 | |
---|
585 | DEALLOCATE(uwriteSTD, vwriteSTD) |
---|
586 | DEALLOCATE(wwriteSTD, phiwriteSTD) |
---|
587 | DEALLOCATE(qwriteSTD, twriteSTD, rhwriteSTD) |
---|
588 | |
---|
589 | ! ug et d'autres encore: |
---|
590 | DEALLOCATE(wdtrainA, wdtrainM) |
---|
591 | DEALLOCATE(beta_prec) |
---|
592 | DEALLOCATE(rneb) |
---|
593 | DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic) |
---|
594 | |
---|
595 | END SUBROUTINE phys_local_var_end |
---|
596 | |
---|
597 | END MODULE phys_local_var_mod |
---|