source: LMDZ6/branches/Amaury_dev/libf/phylmd/phys_local_var_mod.F90 @ 5219

Last change on this file since 5219 was 5219, checked in by abarral, 14 hours ago

Merge r5150 from trunk which had been missed in previous merges

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 68.0 KB
Line 
1
2! $Id: phys_local_var_mod.F90 5219 2024-09-23 12:25:05Z abarral $
3
4MODULE phys_local_var_mod
5  USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_STRATAER
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  ! SN 15/07/2024 ISO 4D
18  REAL, SAVE, ALLOCATABLE :: qx_seri(:, :, :)
19  !$OMP THREADPRIVATE(qx_seri)
20  ! SN
21  REAL, SAVE, ALLOCATABLE :: qbs_seri(:, :)
22  !$OMP THREADPRIVATE(qbs_seri)
23  REAL, SAVE, ALLOCATABLE :: u_seri(:, :), v_seri(:, :)
24  !$OMP THREADPRIVATE(u_seri, v_seri)
25  REAL, SAVE, ALLOCATABLE :: rneb_seri(:, :)
26  !$OMP THREADPRIVATE(rneb_seri)
27  REAL, SAVE, ALLOCATABLE :: d_rneb_dyn(:, :)
28  !$OMP THREADPRIVATE(d_rneb_dyn)
29  REAL, SAVE, ALLOCATABLE :: l_mixmin(:, :, :), l_mix(:, :, :), wprime(:, :, :)
30  !$OMP THREADPRIVATE(l_mixmin, l_mix, wprime)
31  REAL, SAVE, ALLOCATABLE :: pbl_eps(:, :, :)
32  !$OMP THREADPRIVATE(pbl_eps)
33  REAL, SAVE, ALLOCATABLE :: tke_shear(:, :, :), tke_buoy(:, :, :), tke_trans(:, :, :)
34  !$OMP THREADPRIVATE(tke_shear,tke_buoy,tke_trans)
35  REAL, SAVE, ALLOCATABLE :: tr_seri(:, :, :)
36  !$OMP THREADPRIVATE(tr_seri)
37  REAL, SAVE, ALLOCATABLE :: rhcl(:, :)
38  !$OMP THREADPRIVATE(rhcl)
39  REAL, SAVE, ALLOCATABLE :: d_t_dyn(:, :), d_q_dyn(:, :)
40  !$OMP THREADPRIVATE(d_t_dyn, d_q_dyn)
41  REAL, SAVE, ALLOCATABLE :: d_ql_dyn(:, :), d_qs_dyn(:, :), d_qbs_dyn(:, :)
42  !$OMP THREADPRIVATE(d_ql_dyn, d_qs_dyn, d_qbs_dyn)
43  REAL, SAVE, ALLOCATABLE :: d_q_dyn2d(:), d_ql_dyn2d(:), d_qs_dyn2d(:), d_qbs_dyn2d(:)
44  !$OMP THREADPRIVATE(d_q_dyn2d, d_ql_dyn2d, d_qs_dyn2d, d_qbs_dyn2d)
45  REAL, SAVE, ALLOCATABLE :: d_u_dyn(:, :), d_v_dyn(:, :)
46  !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn)
47  REAL, SAVE, ALLOCATABLE :: d_tr_dyn(:, :, :)
48  !$OMP THREADPRIVATE(d_tr_dyn)
49  REAL, SAVE, ALLOCATABLE :: d_t_con(:, :), d_q_con(:, :), d_q_con_zmasse(:, :)
50  !$OMP THREADPRIVATE(d_t_con,d_q_con,d_q_con_zmasse)
51  REAL, SAVE, ALLOCATABLE :: d_u_con(:, :), d_v_con(:, :)
52  !$OMP THREADPRIVATE(d_u_con,d_v_con)
53  REAL, SAVE, ALLOCATABLE :: d_t_wake(:, :), d_q_wake(:, :)
54  !$OMP THREADPRIVATE( d_t_wake,d_q_wake)
55  REAL, SAVE, ALLOCATABLE :: d_t_lsc(:, :), d_q_lsc(:, :), d_ql_lsc(:, :), d_qi_lsc(:, :)
56  !$OMP THREADPRIVATE(d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc)
57  REAL, SAVE, ALLOCATABLE :: d_t_lwr(:, :), d_t_lw0(:, :), d_t_swr(:, :), d_t_sw0(:, :)
58  !$OMP THREADPRIVATE(d_t_lwr,d_t_lw0,d_t_swr,d_t_sw0)
59  REAL, SAVE, ALLOCATABLE :: d_t_ajsb(:, :), d_q_ajsb(:, :)
60  !$OMP THREADPRIVATE(d_t_ajsb, d_q_ajsb)
61  REAL, SAVE, ALLOCATABLE :: d_t_ajs(:, :), d_q_ajs(:, :)
62  !$OMP THREADPRIVATE(d_t_ajs, d_q_ajs)
63  REAL, SAVE, ALLOCATABLE :: d_u_ajs(:, :), d_v_ajs(:, :)
64  !$OMP THREADPRIVATE(d_u_ajs, d_v_ajs)
65  !nrlmd<
66  REAL, SAVE, ALLOCATABLE :: d_t_ajs_w(:, :), d_q_ajs_w(:, :)
67  !$OMP THREADPRIVATE(d_t_ajs_w, d_q_ajs_w)
68  REAL, SAVE, ALLOCATABLE :: d_t_ajs_x(:, :), d_q_ajs_x(:, :)
69  !$OMP THREADPRIVATE(d_t_ajs_x, d_q_ajs_x)
70  !>nrlmd
71  REAL, SAVE, ALLOCATABLE :: d_t_eva(:, :), d_q_eva(:, :), d_ql_eva(:, :), d_qi_eva(:, :)
72  !$OMP THREADPRIVATE(d_t_eva,d_q_eva,d_ql_eva,d_qi_eva)
73  ! SN 15/07/2024 ISO 4D
74  REAL, SAVE, ALLOCATABLE :: d_qx_eva(:, :, :)
75  !$OMP THREADPRIVATE(d_qx_eva)
76  ! SN
77  REAL, SAVE, ALLOCATABLE :: d_t_lscst(:, :), d_q_lscst(:, :)
78  !$OMP THREADPRIVATE(d_t_lscst,d_q_lscst)
79  REAL, SAVE, ALLOCATABLE :: d_t_lscth(:, :), d_q_lscth(:, :)
80  !$OMP THREADPRIVATE(d_t_lscth,d_q_lscth)
81  REAL, SAVE, ALLOCATABLE :: plul_th(:), plul_st(:)
82  !$OMP THREADPRIVATE(plul_th,plul_st)
83  !tendances dues a oro et lif
84  REAL, SAVE, ALLOCATABLE :: d_t_oli(:, :)
85  !$OMP THREADPRIVATE(d_t_oli)
86  REAL, SAVE, ALLOCATABLE :: d_u_oli(:, :), d_v_oli(:, :)
87  !$OMP THREADPRIVATE(d_u_oli, d_v_oli)
88  REAL, SAVE, ALLOCATABLE :: d_t_vdf(:, :), d_q_vdf(:, :), d_qbs_vdf(:, :), d_t_diss(:, :)
89  !$OMP THREADPRIVATE( d_t_vdf, d_q_vdf, d_qbs_vdf, d_t_diss)
90  REAL, SAVE, ALLOCATABLE :: d_u_vdf(:, :), d_v_vdf(:, :)
91  !$OMP THREADPRIVATE(d_u_vdf, d_v_vdf)
92  !nrlmd+jyg<
93  REAL, SAVE, ALLOCATABLE :: d_t_vdf_w(:, :), d_q_vdf_w(:, :)
94  !$OMP THREADPRIVATE( d_t_vdf_w, d_q_vdf_w)
95  REAL, SAVE, ALLOCATABLE :: d_t_vdf_x(:, :), d_q_vdf_x(:, :)
96  !$OMP THREADPRIVATE( d_t_vdf_x, d_q_vdf_x)
97  REAL, SAVE, ALLOCATABLE :: d_t_bsss(:, :), d_q_bsss(:, :), d_qbs_bsss(:, :)
98  !$OMP THREADPRIVATE( d_t_bsss,d_q_bsss, d_qbs_bsss)
99  !>nrlmd+jyg
100  REAL, SAVE, ALLOCATABLE :: d_t_oro(:, :)
101  !$OMP THREADPRIVATE(d_t_oro)
102  REAL, SAVE, ALLOCATABLE :: d_u_oro(:, :), d_v_oro(:, :)
103  !$OMP THREADPRIVATE(d_u_oro, d_v_oro)
104  REAL, SAVE, ALLOCATABLE :: d_t_oro_gw(:, :)
105  !$OMP THREADPRIVATE(d_t_oro_gw)
106  REAL, SAVE, ALLOCATABLE :: d_u_oro_gw(:, :), d_v_oro_gw(:, :)
107  !$OMP THREADPRIVATE(d_u_oro_gw, d_v_oro_gw)
108  REAL, SAVE, ALLOCATABLE :: d_t_lif(:, :)
109  !$OMP THREADPRIVATE(d_t_lif)
110  REAL, SAVE, ALLOCATABLE :: d_u_lif(:, :), d_v_lif(:, :)
111  !$OMP THREADPRIVATE(d_u_lif, d_v_lif)
112  ! Tendances Ondes de G non oro (runs strato).
113  REAL, SAVE, ALLOCATABLE :: du_gwd_hines(:, :)
114  !$OMP THREADPRIVATE(du_gwd_hines)
115  REAL, SAVE, ALLOCATABLE :: dv_gwd_hines(:, :)
116  !$OMP THREADPRIVATE(dv_gwd_hines)
117  REAL, SAVE, ALLOCATABLE :: dv_gwd_rando(:, :)
118  !$OMP THREADPRIVATE(dv_gwd_rando)
119  REAL, SAVE, ALLOCATABLE :: dv_gwd_front(:, :)
120  !$OMP THREADPRIVATE(dv_gwd_front)
121  REAL, SAVE, ALLOCATABLE :: east_gwstress(:, :)
122  !$OMP THREADPRIVATE(east_gwstress)
123  REAL, SAVE, ALLOCATABLE :: west_gwstress(:, :)
124  !$OMP THREADPRIVATE(west_gwstress)
125  REAL, SAVE, ALLOCATABLE :: d_t_hin(:, :)
126  !$OMP THREADPRIVATE(d_t_hin)
127  ! tendance due a l'oxydation du methane
128  REAL, SAVE, ALLOCATABLE :: d_q_ch4(:, :)
129  !$OMP THREADPRIVATE(d_q_ch4)
130#ifdef ISO
131      REAL, SAVE, ALLOCATABLE :: xt_seri(:,:,:)
132      !$OMP THREADPRIVATE( xt_seri)
133      REAL, SAVE, ALLOCATABLE :: xtl_seri(:,:,:)
134      !$OMP THREADPRIVATE( xtl_seri)
135      REAL, SAVE, ALLOCATABLE :: xts_seri(:,:,:)
136      !$OMP THREADPRIVATE( xts_seri)
137      REAL, SAVE, ALLOCATABLE :: xtbs_seri(:,:,:)
138      !$OMP THREADPRIVATE( xtbs_seri)
139      REAL, SAVE, ALLOCATABLE :: d_xt_eva(:,:,:)
140      !$OMP THREADPRIVATE( d_xt_eva)
141      REAL, SAVE, ALLOCATABLE :: d_xtl_eva(:,:,:)
142      !$OMP THREADPRIVATE( d_xtl_eva)
143      REAL, SAVE, ALLOCATABLE :: d_xti_eva(:,:,:)
144      !$OMP THREADPRIVATE( d_xti_eva)
145      REAL, SAVE, ALLOCATABLE :: d_xt_vdf(:,:,:)
146      !$OMP THREADPRIVATE( d_xt_vdf)
147      REAL, SAVE, ALLOCATABLE :: d_xt_dyn(:,:,:)
148      !$OMP THREADPRIVATE( d_xt_dyn)
149      REAL, SAVE, ALLOCATABLE :: d_xtl_dyn(:,:,:), d_xts_dyn(:,:,:), d_xtbs_dyn(:,:,:)
150      !$OMP THREADPRIVATE(d_xtl_dyn, d_xts_dyn, d_xtbs_dyn)
151      REAL, SAVE, ALLOCATABLE :: d_xt_con(:,:,:)
152      !$OMP THREADPRIVATE( d_xt_con)
153      REAL, SAVE, ALLOCATABLE :: d_xt_wake(:,:,:)
154      !$OMP THREADPRIVATE( d_xt_wake)
155      REAL, SAVE, ALLOCATABLE :: d_xt_lsc(:,:,:),d_xtl_lsc(:,:,:),d_xti_lsc(:,:,:)
156      !$OMP THREADPRIVATE( d_xt_lsc,d_xtl_lsc,d_xti_lsc)
157      REAL, SAVE, ALLOCATABLE :: d_xt_ajsb(:,:,:)
158      !$OMP THREADPRIVATE( d_xt_ajsb)
159      REAL, SAVE, ALLOCATABLE :: d_xt_ajs(:,:,:)
160      !$OMP THREADPRIVATE( d_xt_ajs)
161      REAL, SAVE, ALLOCATABLE :: d_xt_ajs_w(:,:,:), d_xt_ajs_x(:,:,:)
162      !$OMP THREADPRIVATE(d_xt_ajs_w, d_xt_ajs_x)
163      REAL, SAVE, ALLOCATABLE :: d_xt_vdf_w(:,:,:), d_xt_vdf_x(:,:,:)
164      !$OMP THREADPRIVATE(d_xt_vdf_w, d_xt_vdf_x)
165      REAL, SAVE, ALLOCATABLE :: d_xt_ch4(:,:,:)
166      !$OMP THREADPRIVATE( d_xt_ch4)
167      REAL, SAVE, ALLOCATABLE :: d_xt_prod_nucl(:,:,:)
168      !$OMP THREADPRIVATE( d_xt_prod_nucl)
169      REAL, SAVE, ALLOCATABLE :: d_xt_cosmo(:,:,:)
170      !$OMP THREADPRIVATE( d_xt_cosmo)
171      REAL, SAVE, ALLOCATABLE :: d_xt_decroiss(:,:,:)
172      !$OMP THREADPRIVATE( d_xt_decroiss)
173#endif
174
175  ! tendance du a la conersion Ec -> E thermique
176  REAL, SAVE, ALLOCATABLE :: d_t_ec(:, :)
177  !$OMP THREADPRIVATE(d_t_ec)
178  REAL, SAVE, ALLOCATABLE :: d_ts(:, :), d_tr(:, :, :)
179  !$OMP THREADPRIVATE(d_ts, d_tr)
180
181  ! diagnostique pour le rayonnement
182  REAL, SAVE, ALLOCATABLE :: topswad_aero(:), solswad_aero(:)      ! diag
183  !$OMP THREADPRIVATE(topswad_aero,solswad_aero)
184  REAL, SAVE, ALLOCATABLE :: topswai_aero(:), solswai_aero(:)      ! diag
185  !$OMP THREADPRIVATE(topswai_aero,solswai_aero)
186  REAL, SAVE, ALLOCATABLE :: topswad0_aero(:), solswad0_aero(:)     ! diag
187  !$OMP THREADPRIVATE(topswad0_aero,solswad0_aero)
188  REAL, SAVE, ALLOCATABLE :: topsw_aero(:, :), solsw_aero(:, :)      ! diag
189  !$OMP THREADPRIVATE(topsw_aero,solsw_aero)
190  REAL, SAVE, ALLOCATABLE :: topsw0_aero(:, :), solsw0_aero(:, :)     ! diag
191  !$OMP THREADPRIVATE(topsw0_aero,solsw0_aero)
192  REAL, SAVE, ALLOCATABLE :: topswcf_aero(:, :), solswcf_aero(:, :)  ! diag
193  !$OMP THREADPRIVATE(topswcf_aero,solswcf_aero)
194  ! LW radiation diagnostics CK
195  REAL, SAVE, ALLOCATABLE :: toplwad_aero(:), sollwad_aero(:)      ! diag
196  !$OMP THREADPRIVATE(toplwad_aero,sollwad_aero)
197  REAL, SAVE, ALLOCATABLE :: toplwai_aero(:), sollwai_aero(:)      ! diag
198  !$OMP THREADPRIVATE(toplwai_aero,sollwai_aero)
199  REAL, SAVE, ALLOCATABLE :: toplwad0_aero(:), sollwad0_aero(:)     ! diag
200  !$OMP THREADPRIVATE(toplwad0_aero,sollwad0_aero)
201  ! Special RRTM
202  REAL, SAVE, ALLOCATABLE :: ZLWFT0_i(:, :), ZSWFT0_i(:, :)      ! diag
203  !$OMP THREADPRIVATE(ZLWFT0_i,ZSWFT0_i)
204  REAL, SAVE, ALLOCATABLE :: ZFLDN0(:, :), ZFLUP0(:, :)      ! diag
205  !$OMP THREADPRIVATE(ZFLDN0,ZFLUP0)
206  REAL, SAVE, ALLOCATABLE :: ZFSDN0(:, :), ZFSUP0(:, :)      ! diag
207  !$OMP THREADPRIVATE(ZFSDN0,ZFSUP0)
208
209  REAL, SAVE, ALLOCATABLE :: stratomask(:, :)
210  !$OMP THREADPRIVATE(stratomask)
211  REAL, SAVE, ALLOCATABLE :: tausum_aero(:, :, :)
212  !$OMP THREADPRIVATE(tausum_aero)
213  REAL, SAVE, ALLOCATABLE :: drytausum_aero(:, :)
214  !$OMP THREADPRIVATE(drytausum_aero)
215  REAL, SAVE, ALLOCATABLE :: tau3d_aero(:, :, :, :)
216  !$OMP THREADPRIVATE(tau3d_aero)
217  REAL, SAVE, ALLOCATABLE :: dNovrN(:)
218  !$OMP THREADPRIVATE(dNovrN)
219  REAL, SAVE, ALLOCATABLE :: zfice(:, :)
220  !$OMP THREADPRIVATE(zfice)
221  REAL, SAVE, ALLOCATABLE :: od443aer(:)
222  !$OMP THREADPRIVATE(od443aer)
223  REAL, SAVE, ALLOCATABLE :: od550aer(:)
224  !$OMP THREADPRIVATE(od550aer)
225  REAL, SAVE, ALLOCATABLE :: dryod550aer(:)
226  !$OMP THREADPRIVATE(dryod550aer)
227  REAL, SAVE, ALLOCATABLE :: abs550aer(:)
228  !$OMP THREADPRIVATE(abs550aer)
229  REAL, SAVE, ALLOCATABLE :: od865aer(:)
230  !$OMP THREADPRIVATE(od865aer)
231  REAL, SAVE, ALLOCATABLE :: ec550aer(:, :)
232  !$OMP THREADPRIVATE(ec550aer)
233  REAL, SAVE, ALLOCATABLE :: od550lt1aer(:)
234  !$OMP THREADPRIVATE(od550lt1aer)
235  REAL, SAVE, ALLOCATABLE :: sconcso4(:)
236  !$OMP THREADPRIVATE(sconcso4)
237  REAL, SAVE, ALLOCATABLE :: sconcno3(:)
238  !$OMP THREADPRIVATE(sconcno3)
239  REAL, SAVE, ALLOCATABLE :: sconcoa(:)
240  !$OMP THREADPRIVATE(sconcoa)
241  REAL, SAVE, ALLOCATABLE :: sconcbc(:)
242  !$OMP THREADPRIVATE(sconcbc)
243  REAL, SAVE, ALLOCATABLE :: sconcss(:)
244  !$OMP THREADPRIVATE(sconcss)
245  REAL, SAVE, ALLOCATABLE :: sconcdust(:)
246  !$OMP THREADPRIVATE(sconcdust)
247  REAL, SAVE, ALLOCATABLE :: concso4(:, :)
248  !$OMP THREADPRIVATE(concso4)
249  REAL, SAVE, ALLOCATABLE :: concno3(:, :)
250  !$OMP THREADPRIVATE(concno3)
251  REAL, SAVE, ALLOCATABLE :: concoa(:, :)
252  !$OMP THREADPRIVATE(concoa)
253  REAL, SAVE, ALLOCATABLE :: concbc(:, :)
254  !$OMP THREADPRIVATE(concbc)
255  REAL, SAVE, ALLOCATABLE :: concss(:, :)
256  !$OMP THREADPRIVATE(concss)
257  REAL, SAVE, ALLOCATABLE :: concdust(:, :)
258  !$OMP THREADPRIVATE(concdust)
259  REAL, SAVE, ALLOCATABLE :: loadso4(:)
260  !$OMP THREADPRIVATE(loadso4)
261  REAL, SAVE, ALLOCATABLE :: loadoa(:)
262  !$OMP THREADPRIVATE(loadoa)
263  REAL, SAVE, ALLOCATABLE :: loadbc(:)
264  !$OMP THREADPRIVATE(loadbc)
265  REAL, SAVE, ALLOCATABLE :: loadss(:)
266  !$OMP THREADPRIVATE(loadss)
267  REAL, SAVE, ALLOCATABLE :: loaddust(:)
268  !$OMP THREADPRIVATE(loaddust)
269  REAL, SAVE, ALLOCATABLE :: loadno3(:)
270  !$OMP THREADPRIVATE(loadno3)
271  REAL, SAVE, ALLOCATABLE :: load_tmp1(:), load_tmp2(:)
272  !$OMP THREADPRIVATE(load_tmp1, load_tmp2)
273  REAL, SAVE, ALLOCATABLE :: load_tmp3(:), load_tmp4(:)
274  !$OMP THREADPRIVATE(load_tmp3, load_tmp4)
275  REAL, SAVE, ALLOCATABLE :: load_tmp5(:), load_tmp6(:)
276  !$OMP THREADPRIVATE(load_tmp5, load_tmp6)
277  REAL, SAVE, ALLOCATABLE :: load_tmp7(:), load_tmp8(:)
278  !$OMP THREADPRIVATE(load_tmp7, load_tmp8)
279  REAL, SAVE, ALLOCATABLE :: load_tmp9(:), load_tmp10(:)
280  !$OMP THREADPRIVATE(load_tmp9, load_tmp10)
281
282  !IM ajout variables CFMIP2/CMIP5
283  REAL, ALLOCATABLE, SAVE :: topswad_aerop(:), solswad_aerop(:)
284  !$OMP THREADPRIVATE(topswad_aerop, solswad_aerop)
285  REAL, ALLOCATABLE, SAVE :: topswai_aerop(:), solswai_aerop(:)
286  !$OMP THREADPRIVATE(topswai_aerop, solswai_aerop)
287  REAL, ALLOCATABLE, SAVE :: topswad0_aerop(:), solswad0_aerop(:)
288  !$OMP THREADPRIVATE(topswad0_aerop, solswad0_aerop)
289  REAL, ALLOCATABLE, SAVE :: topsw_aerop(:, :), topsw0_aerop(:, :)
290  !$OMP THREADPRIVATE(topsw_aerop, topsw0_aerop)
291  REAL, ALLOCATABLE, SAVE :: solsw_aerop(:, :), solsw0_aerop(:, :)
292  !$OMP THREADPRIVATE(solsw_aerop, solsw0_aerop)
293  REAL, ALLOCATABLE, SAVE :: topswcf_aerop(:, :), solswcf_aerop(:, :)
294  !$OMP THREADPRIVATE(topswcf_aerop, solswcf_aerop)
295
296  ! additional LW variables CK
297  REAL, ALLOCATABLE, SAVE :: toplwad_aerop(:), sollwad_aerop(:)
298  !$OMP THREADPRIVATE(toplwad_aerop, sollwad_aerop)
299  REAL, ALLOCATABLE, SAVE :: toplwai_aerop(:), sollwai_aerop(:)
300  !$OMP THREADPRIVATE(toplwai_aerop, sollwai_aerop)
301  REAL, ALLOCATABLE, SAVE :: toplwad0_aerop(:), sollwad0_aerop(:)
302  !$OMP THREADPRIVATE(toplwad0_aerop, sollwad0_aerop)
303
304  !AI 08 2023 ajout pour Ecrad
305  REAL, ALLOCATABLE, SAVE :: topswad_aero_s2(:), solswad_aero_s2(:)
306  !$OMP THREADPRIVATE(topswad_aero_s2, solswad_aero_s2)
307  REAL, ALLOCATABLE, SAVE :: topswai_aero_s2(:), solswai_aero_s2(:)
308  !$OMP THREADPRIVATE(topswai_aero_s2, solswai_aero_s2)
309  REAL, ALLOCATABLE, SAVE :: topswad0_aero_s2(:), solswad0_aero_s2(:)
310  !$OMP THREADPRIVATE(topswad0_aero_s2, solswad0_aero_s2)
311  REAL, ALLOCATABLE, SAVE :: topsw_aero_s2(:, :), topsw0_aero_s2(:, :)
312  !$OMP THREADPRIVATE(topsw_aero_s2, topsw0_aero_s2)
313  REAL, ALLOCATABLE, SAVE :: solsw_aero_s2(:, :), solsw0_aero_s2(:, :)
314  !$OMP THREADPRIVATE(solsw_aero_s2, solsw0_aero_s2)
315  REAL, ALLOCATABLE, SAVE :: topswcf_aero_s2(:, :), solswcf_aero_s2(:, :)
316  !$OMP THREADPRIVATE(topswcf_aero_s2, solswcf_aero_s2)
317  ! additional LW variables CK
318  REAL, ALLOCATABLE, SAVE :: toplwad_aero_s2(:), sollwad_aero_s2(:)
319  !$OMP THREADPRIVATE(toplwad_aero_s2, sollwad_aero_s2)
320  REAL, ALLOCATABLE, SAVE :: toplwai_aero_s2(:), sollwai_aero_s2(:)
321  !$OMP THREADPRIVATE(toplwai_aero_s2, sollwai_aero_s2)
322  REAL, ALLOCATABLE, SAVE :: toplwad0_aero_s2(:), sollwad0_aero_s2(:)
323  !$OMP THREADPRIVATE(toplwad0_aero_s2, sollwad0_aero_s2)
324
325  !Ajout de celles n??cessaires au phys_output_write_mod
326  REAL, SAVE, ALLOCATABLE :: tal1(:), pal1(:), pab1(:), pab2(:)
327  !$OMP THREADPRIVATE(tal1, pal1, pab1, pab2)
328  REAL, SAVE, ALLOCATABLE :: ptstar(:), pt0(:), slp(:)
329  !$OMP THREADPRIVATE(ptstar, pt0, slp)
330  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: sens, flwp, fiwp
331  !$OMP THREADPRIVATE(sens, flwp, fiwp)
332  !!
333  !FC
334  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: zxfluxt, zxfluxq
335  !$OMP THREADPRIVATE(zxfluxt, zxfluxq)
336  !FC
337  !!         Wake variables
338  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: alp_wake
339  !$OMP THREADPRIVATE(alp_wake)
340  !!jyg!      REAL,ALLOCATABLE,SAVE,DIMENSION(:)            :: wake_h,wake_k
341  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: wake_h
342  INTEGER, ALLOCATABLE, SAVE, DIMENSION(:) :: wake_k
343  !$OMP THREADPRIVATE(wake_h,wake_k)
344  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: wake_omg
345  !$OMP THREADPRIVATE(wake_omg)
346  REAL, SAVE, ALLOCATABLE, DIMENSION(:, :) :: d_deltat_wk, d_deltaq_wk
347  !$OMP THREADPRIVATE(d_deltat_wk, d_deltaq_wk)
348  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: d_s_wk, d_s_a_wk, d_dens_wk, d_dens_a_wk
349  !$OMP THREADPRIVATE(d_s_wk, d_s_a_wk, d_dens_wk, d_dens_a_wk)
350  REAL, SAVE, ALLOCATABLE, DIMENSION(:, :) :: d_deltat_wk_gw, d_deltaq_wk_gw
351  !$OMP THREADPRIVATE(d_deltat_wk_gw, d_deltaq_wk_gw)
352  REAL, SAVE, ALLOCATABLE, DIMENSION(:, :) :: d_deltat_vdf, d_deltaq_vdf
353  !$OMP THREADPRIVATE(d_deltat_vdf, d_deltaq_vdf)
354  !!!      REAL,ALLOCATABLE,SAVE,DIMENSION(:)          :: d_s_vdf, d_dens_vdf
355  !!!$OMP THREADPRIVATE(d_s_vdf, d_dens_vdf)
356  REAL, SAVE, ALLOCATABLE, DIMENSION(:, :) :: d_deltat_the, d_deltaq_the
357  !$OMP THREADPRIVATE(d_deltat_the, d_deltaq_the)
358  !!!      REAL,ALLOCATABLE,SAVE,DIMENSION(:)          :: d_s_the, d_dens_the
359  !!!$OMP THREADPRIVATE(d_s_the, d_dens_the)
360  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: d_deltat_ajs_cv, d_deltaq_ajs_cv
361  !$OMP THREADPRIVATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)
362#ifdef ISO
363    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:,:)          :: d_deltaxt_wk
364!$OMP THREADPRIVATE(d_deltaxt_wk)
365    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:,:)          :: d_deltaxt_wk_gw
366!$OMP THREADPRIVATE(d_deltaxt_wk_gw)
367    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:,:)          ::  d_deltaxt_the
368!$OMP THREADPRIVATE(d_deltaxt_the)
369    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:,:)          ::  d_deltaxt_vdf
370!$OMP THREADPRIVATE(d_deltaxt_vdf)
371      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)           ::  d_deltaxt_ajs_cv
372!$OMP THREADPRIVATE(d_deltaxt_ajs_cv)
373#endif                       
374  !!         End of Wake variables
375  !!
376  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: bils
377  !$OMP THREADPRIVATE(bils)
378  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: cdragm, cdragh
379  !$OMP THREADPRIVATE(cdragm, cdragh)
380  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m
381  !$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m)
382  !AS: cldhjn, cldljn, cldmjn,cldtjn pas utilisés en tant que variables, juste noms de diagnostics
383  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: JrNt
384  !$OMP THREADPRIVATE(JrNt)
385  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: dthmin, evap, snowerosion, fder, plcl, plfc, prw, prlw, prsw, prbsw, water_budget
386  !$OMP THREADPRIVATE(dthmin, evap, snowerosion, fder, plcl, plfc, prw, prlw, prsw, prbsw, water_budget)
387  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zustar, zu10m, zv10m, rh2m
388  !$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m)
389  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: s_lcl, s_pblh, s_pblt, s_therm
390  !$OMP THREADPRIVATE(s_lcl, s_pblh, s_pblt, s_therm)
391
392  !nrlmd+jyg<
393  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: s_pblh_x, s_pblh_w
394  !$OMP THREADPRIVATE(s_pblh_x, s_pblh_w)
395  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: s_lcl_x, s_lcl_w
396  !$OMP THREADPRIVATE(s_lcl_x, s_lcl_w)
397  !>nrlmd+jyg
398
399  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: slab_wfbils
400  !$OMP THREADPRIVATE(slab_wfbils)
401  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: tpot, tpote, ue, uq, uwat, ve, vq, vwat, zxffonte
402  !$OMP THREADPRIVATE(tpot, tpote, ue, uq, uwat, ve, vq, vwat, zxffonte)
403  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxustartlic, zxrhoslic, zxqsaltlic, tempsmoothlic
404  !$OMP THREADPRIVATE(zxustartlic, zxrhoslic, zxqsaltlic, tempsmoothlic)
405  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxfqcalving
406  !$OMP THREADPRIVATE(zxfqcalving)
407  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxfluxlat, zxtsol, snow_lsc, zxfqfonte
408  !$OMP THREADPRIVATE(zxfluxlat, zxtsol, snow_lsc, zxfqfonte)
409!SN runoffdiag
410  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxrunofflic, runoff_diag
411  !$OMP THREADPRIVATE(zxrunofflic, runoff_diag)
412  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxqsurf, rain_lsc, rain_num
413  !$OMP THREADPRIVATE(zxqsurf, rain_lsc, rain_num)
414#ifdef ISO
415      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtevap,xtprw
416!$OMP THREADPRIVATE(xtevap,xtprw)
417      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: h1_diag
418      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtrunoff_diag
419!$OMP THREADPRIVATE(h1_diagv,xtrunoff_diag)
420      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zxfxtcalving
421!$OMP THREADPRIVATE(zxfxtcalving)
422      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtsnow_lsc, zxfxtfonte
423!$OMP THREADPRIVATE(xtsnow_lsc, zxfxtfonte)
424      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zxxtrunofflic
425!$OMP THREADPRIVATE(zxxtrunofflic)
426      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtrain_lsc
427!$OMP THREADPRIVATE(xtrain_lsc)
428#endif
429
430  !jyg+nrlmd<
431  !!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
432  !                                                                          c
433  !       Declarations liees a la couche limite differentiee w-x             c
434  !                                                                          c
435  !!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
436  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: sens_x, sens_w
437  !$OMP THREADPRIVATE(sens_x, sens_w)
438  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxfluxlat_x, zxfluxlat_w
439  !$OMP THREADPRIVATE(zxfluxlat_x, zxfluxlat_w)
440  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: delta_qsurf
441  !$OMP THREADPRIVATE(delta_qsurf)
442  !jyg<
443  !!! Entrees supplementaires couche-limite
444  !!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t_x, t_w
445  !!!$OMP THREADPRIVATE(t_x, t_w)
446  !!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: q_x, q_w
447  !!!$OMP THREADPRIVATE(q_x, q_w)
448  !>jyg
449  !!! Sorties ferret
450  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: dtvdf_x, dtvdf_w
451  !$OMP THREADPRIVATE(dtvdf_x, dtvdf_w)
452  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: dqvdf_x, dqvdf_w
453  !$OMP THREADPRIVATE(dqvdf_x, dqvdf_w)
454  ! Variables supplementaires dans physiq.F relative au splitting de la surface
455  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: pbl_tke_input
456  !$OMP THREADPRIVATE(pbl_tke_input)
457  ! Entree supplementaire Thermiques :
458  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: t_therm, q_therm, u_therm, v_therm
459  !$OMP THREADPRIVATE(t_therm, q_therm, u_therm, v_therm)
460  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: cdragh_x, cdragh_w
461  !$OMP THREADPRIVATE(cdragh_x, cdragh_w)
462  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: cdragm_x, cdragm_w
463  !$OMP THREADPRIVATE(cdragm_x, cdragm_w)
464  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: kh, kh_x, kh_w
465  !$OMP THREADPRIVATE(kh, kh_x, kh_w)
466#ifdef ISO
467      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: dxtvdf_x, dxtvdf_w
468!$OMP THREADPRIVATE(dxtvdf_x, dxtvdf_w)
469      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: xt_therm
470!$OMP THREADPRIVATE(xt_therm)
471#endif
472  !!!
473  !!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
474  LOGICAL, SAVE, ALLOCATABLE :: ptconv(:, :)
475  !$OMP THREADPRIVATE(ptconv)
476  REAL, SAVE, ALLOCATABLE :: ratqsc(:, :)
477  !$OMP THREADPRIVATE(ratqsc)
478  !>jyg+nrlmd
479
480  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: wbeff, convoccur, zmax_th, zq2m, zt2m
481  !$OMP THREADPRIVATE(wbeff, convoccur, zmax_th, zq2m, zt2m)
482  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zt2m_min_mon, zt2m_max_mon
483  !$OMP THREADPRIVATE(zt2m_min_mon, zt2m_max_mon)
484  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: t2m_min_mon, t2m_max_mon
485  !$OMP THREADPRIVATE(t2m_min_mon, t2m_max_mon)
486  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: weak_inversion
487  !$OMP THREADPRIVATE(weak_inversion)
488  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: alp_bl_conv, alp_bl_det
489  !$OMP THREADPRIVATE(alp_bl_conv,alp_bl_det)
490  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: alp_bl_fluct_m, alp_bl_fluct_tke
491  !$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke)
492  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: alp_bl_stat, n2, s2, strig, zcong, zlcl_th
493  !$OMP THREADPRIVATE(alp_bl_stat, n2, s2, strig, zcong, zlcl_th)
494  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: proba_notrig, random_notrig
495  !$OMP THREADPRIVATE(proba_notrig, random_notrig)
496  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: fsolsw, wfbils
497  !$OMP THREADPRIVATE(fsolsw, wfbils)
498  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: wfevap
499  !$OMP THREADPRIVATE(wfevap)
500  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: t2m, fluxlat, fsollw, evap_pot
501  !$OMP THREADPRIVATE(t2m, fluxlat, fsollw,evap_pot)
502  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: dnwd0, omega
503  !$OMP THREADPRIVATE(dnwd0, omega)
504  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: epmax_diag ! epmax_cape
505  !$OMP THREADPRIVATE(epmax_diag)
506
507  !  Deep convective variables used in phytrac
508  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: ep ! epmax_cape
509  !$OMP THREADPRIVATE(ep)
510  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: dnwd, upwd
511  !$OMP THREADPRIVATE(dnwd, upwd)
512  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: pmflxr, pmflxs
513  !$OMP THREADPRIVATE(pmflxr, pmflxs)
514  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: wdtrainA, wdtrainS, wdtrainM
515  !$OMP THREADPRIVATE(wdtrainA, wdtrainS, wdtrainM)
516  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: da, mp
517  !$OMP THREADPRIVATE(da, mp)
518  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: wght_cvfd
519  !$OMP THREADPRIVATE(wght_cvfd)
520  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: phi, phi2, elij, epmlmMm
521  !$OMP THREADPRIVATE(phi, phi2, elij, epmlmMm)
522  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: d1a, dam
523  !$OMP THREADPRIVATE(d1a, dam)
524  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: ev
525  !$OMP THREADPRIVATE(ev)
526  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: qtaa
527  !$OMP THREADPRIVATE(qtaa)
528  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: clw
529  !$OMP THREADPRIVATE(clw)
530  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: eplaMm
531  !$OMP THREADPRIVATE(eplaMm)
532  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: sij
533  !$OMP THREADPRIVATE(sij)
534#ifdef ISO
535      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtwdtrainA
536!$OMP THREADPRIVATE(xtwdtrainA)
537      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtev
538!$OMP THREADPRIVATE(xtev)
539      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xttaa
540!$OMP THREADPRIVATE(xttaa)
541      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtclw
542!$OMP THREADPRIVATE(xtclw)
543#ifdef DIAGISO
544      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: qlp
545!$OMP THREADPRIVATE(qlp)
546      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: qvp
547!$OMP THREADPRIVATE(qvp)
548      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_detrainement
549!$OMP THREADPRIVATE(fq_detrainement)
550      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_ddft
551!$OMP THREADPRIVATE(fq_ddft)
552      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_fluxmasse
553!$OMP THREADPRIVATE(fq_fluxmasse)
554      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_evapprecip
555!$OMP THREADPRIVATE(fq_evapprecip)
556      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: f_detrainement
557!$OMP THREADPRIVATE(f_detrainement)
558      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: q_detrainement
559!$OMP THREADPRIVATE(q_detrainement)
560      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xt_detrainement
561!$OMP THREADPRIVATE(xt_detrainement)
562      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtlp
563!$OMP THREADPRIVATE(xtlp)
564      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtvp
565!$OMP THREADPRIVATE(xtvp)
566      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: q_the
567!$OMP THREADPRIVATE(q_the)
568      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xt_the
569!$OMP THREADPRIVATE(xt_the)
570      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_detrainement
571!$OMP THREADPRIVATE(fxt_detrainement)
572      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_ddft
573!$OMP THREADPRIVATE(fxt_ddft)
574      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_fluxmasse
575!$OMP THREADPRIVATE(fxt_fluxmasse)
576      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_evapprecip
577!$OMP THREADPRIVATE(fxt_evapprecip)
578#endif
579#endif
580
581  !      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th
582  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: lambda_th
583  !$OMP THREADPRIVATE(lambda_th)
584  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc
585  !$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc)
586  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: qlth, qith, qsith, wiceth
587  !$OMP THREADPRIVATE(qlth, qith, qsith, wiceth)
588  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: ref_liq, ref_ice, theta, zphi
589  !$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi)
590  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: ref_liq_pi, ref_ice_pi
591  !$OMP THREADPRIVATE(ref_liq_pi, ref_ice_pi)
592  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: zx_rh, zx_rhl, zx_rhi
593  !$OMP THREADPRIVATE(zx_rh, zx_rhl, zx_rhi)
594  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: prfl, psfl, fraca, bsfl
595  !$OMP THREADPRIVATE(prfl, psfl, fraca, bsfl)
596  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: Vprecip, zw2
597  !$OMP THREADPRIVATE(Vprecip, zw2)
598  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: pmfd, pmfu
599  !$OMP THREADPRIVATE(pmfd, pmfu)
600  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: fluxt, fluxu, fluxv
601  !$OMP THREADPRIVATE(fluxt, fluxu, fluxv)
602  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: uwriteSTD, vwriteSTD, wwriteSTD
603  !$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD)
604  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD
605  !$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD)
606
607
608  ! ug et d'autres encore:
609  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: beta_prec
610  !$OMP THREADPRIVATE(beta_prec)
611  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: rneb, rnebjn, rneblsvol
612  !$OMP THREADPRIVATE(rneb,rnebjn,rneblsvol)
613  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: pfraclr, pfracld
614  !$OMP THREADPRIVATE(pfraclr,pfracld)
615  REAL, SAVE, ALLOCATABLE :: cldfraliq(:, :)
616  !$OMP THREADPRIVATE(cldfraliq)
617  REAL, SAVE, ALLOCATABLE :: mean_icefracturb(:, :)
618  !$OMP THREADPRIVATE(mean_icefracturb)
619  REAL, SAVE, ALLOCATABLE :: sigma2_icefracturb(:, :)
620  !$OMP THREADPRIVATE(sigma2_icefracturb)
621
622  ! variables de sorties MM
623  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxsnow, snowhgt, qsnow, to_ice
624  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: sissnow, runoff, albsol3_lic
625  !$OMP THREADPRIVATE(zxsnow,snowhgt,qsnow,to_ice)
626  !$OMP THREADPRIVATE(sissnow,runoff,albsol3_lic)
627#ifdef ISO
628      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: zxxtsnow
629!$OMP THREADPRIVATE(zxxtsnow)     
630      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: xtVprecip,xtVprecipi
631!$OMP THREADPRIVATE(xtVprecip,xtVprecipi)
632      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: pxtrfl, pxtsfl
633!$OMP THREADPRIVATE(pxtrfl, pxtsfl)
634#endif
635
636  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: p_tropopause, z_tropopause, t_tropopause
637  !$OMP THREADPRIVATE(p_tropopause, z_tropopause, t_tropopause)
638
639  INTEGER, ALLOCATABLE, SAVE, DIMENSION(:, :) :: zn2mout
640  !$OMP THREADPRIVATE(zn2mout)
641
642  REAL, SAVE, ALLOCATABLE :: qclr(:, :)
643  !$OMP THREADPRIVATE(qclr)
644  REAL, SAVE, ALLOCATABLE :: qcld(:, :)
645  !$OMP THREADPRIVATE(qcld)
646  REAL, SAVE, ALLOCATABLE :: qss(:, :)
647  !$OMP THREADPRIVATE(qss)
648  REAL, SAVE, ALLOCATABLE :: qvc(:, :)
649  !$OMP THREADPRIVATE(qvc)
650  REAL, SAVE, ALLOCATABLE :: rnebclr(:, :)
651  !$OMP THREADPRIVATE(rnebclr)
652  REAL, SAVE, ALLOCATABLE :: rnebss(:, :)
653  !$OMP THREADPRIVATE(rnebss)
654  REAL, SAVE, ALLOCATABLE :: gamma_ss(:, :)
655  !$OMP THREADPRIVATE(gamma_ss)
656  REAL, SAVE, ALLOCATABLE :: N1_ss(:, :)
657  !$OMP THREADPRIVATE(N1_ss)
658  REAL, SAVE, ALLOCATABLE :: N2_ss(:, :)
659  !$OMP THREADPRIVATE(N2_ss)
660  REAL, SAVE, ALLOCATABLE :: drneb_sub(:, :)
661  !$OMP THREADPRIVATE(drneb_sub)
662  REAL, SAVE, ALLOCATABLE :: drneb_con(:, :)
663  !$OMP THREADPRIVATE(drneb_con)
664  REAL, SAVE, ALLOCATABLE :: drneb_tur(:, :)
665  !$OMP THREADPRIVATE(drneb_tur)
666  REAL, SAVE, ALLOCATABLE :: drneb_avi(:, :)
667  !$OMP THREADPRIVATE(drneb_avi)
668  REAL, SAVE, ALLOCATABLE :: zqsatl(:, :)
669  !$OMP THREADPRIVATE(zqsatl)
670  REAL, SAVE, ALLOCATABLE :: zqsats(:, :)
671  !$OMP THREADPRIVATE(zqsats)
672  REAL, SAVE, ALLOCATABLE :: Tcontr(:, :)
673  !$OMP THREADPRIVATE(Tcontr)
674  REAL, SAVE, ALLOCATABLE :: qcontr(:, :)
675  !$OMP THREADPRIVATE(qcontr)
676  REAL, SAVE, ALLOCATABLE :: qcontr2(:, :)
677  !$OMP THREADPRIVATE(qcontr2)
678  REAL, SAVE, ALLOCATABLE :: fcontrN(:, :)
679  !$OMP THREADPRIVATE(fcontrN)
680  REAL, SAVE, ALLOCATABLE :: fcontrP(:, :)
681  !$OMP THREADPRIVATE(fcontrP)
682  REAL, SAVE, ALLOCATABLE :: distcltop(:, :)
683  !$OMP THREADPRIVATE(distcltop)
684  REAL, SAVE, ALLOCATABLE :: temp_cltop(:, :)
685  !$OMP THREADPRIVATE(temp_cltop)
686
687
688  !--POPRECIP variables
689  REAL, SAVE, ALLOCATABLE :: qraindiag(:, :)
690  !$OMP THREADPRIVATE(qraindiag)
691  REAL, SAVE, ALLOCATABLE :: qsnowdiag(:, :)
692  !$OMP THREADPRIVATE(qsnowdiag)
693  REAL, SAVE, ALLOCATABLE :: dqreva(:, :)
694  !$OMP THREADPRIVATE(dqreva)
695  REAL, SAVE, ALLOCATABLE :: dqrauto(:, :)
696  !$OMP THREADPRIVATE(dqrauto)
697  REAL, SAVE, ALLOCATABLE :: dqrcol(:, :)
698  !$OMP THREADPRIVATE(dqrcol)
699  REAL, SAVE, ALLOCATABLE :: dqrmelt(:, :)
700  !$OMP THREADPRIVATE(dqrmelt)
701  REAL, SAVE, ALLOCATABLE :: dqrfreez(:, :)
702  !$OMP THREADPRIVATE(dqrfreez)
703  REAL, SAVE, ALLOCATABLE :: dqssub(:, :)
704  !$OMP THREADPRIVATE(dqssub)
705  REAL, SAVE, ALLOCATABLE :: dqsauto(:, :)
706  !$OMP THREADPRIVATE(dqsauto)
707  REAL, SAVE, ALLOCATABLE :: dqsagg(:, :)
708  !$OMP THREADPRIVATE(dqsagg)
709  REAL, SAVE, ALLOCATABLE :: dqsrim(:, :)
710  !$OMP THREADPRIVATE(dqsrim)
711  REAL, SAVE, ALLOCATABLE :: dqsmelt(:, :)
712  !$OMP THREADPRIVATE(dqsmelt)
713  REAL, SAVE, ALLOCATABLE :: dqsfreez(:, :)
714  !$OMP THREADPRIVATE(dqsfreez)
715
716  ! variables for stratospheric aerosol
717  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: d_q_emiss
718  !$OMP THREADPRIVATE(d_q_emiss)
719  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: R2SO4
720  !$OMP THREADPRIVATE(R2SO4)
721  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: R2SO4B
722  !$OMP THREADPRIVATE(R2SO4B)
723  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: DENSO4
724  !$OMP THREADPRIVATE(DENSO4)
725  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: DENSO4B
726  !$OMP THREADPRIVATE(DENSO4B)
727  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: f_r_wet
728  !$OMP THREADPRIVATE(f_r_wet)
729  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: f_r_wetB
730  !$OMP THREADPRIVATE(f_r_wetB)
731  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: decfluxaer
732  !$OMP THREADPRIVATE(decfluxaer)
733  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: mdw
734  !$OMP THREADPRIVATE(mdw)
735  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: OCS_lifetime
736  !$OMP THREADPRIVATE(OCS_lifetime)
737  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: SO2_lifetime
738  !$OMP THREADPRIVATE(SO2_lifetime)
739  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: H2SO4_lifetime
740  !$OMP THREADPRIVATE(H2SO4_lifetime)
741  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: O3_clim
742  !$OMP THREADPRIVATE(O3_clim)
743  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: alpha_bin
744  !$OMP THREADPRIVATE(alpha_bin)
745  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: piz_bin
746  !$OMP THREADPRIVATE(piz_bin)
747  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: cg_bin
748  !$OMP THREADPRIVATE(cg_bin)
749  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: tau_strat_550
750  !$OMP THREADPRIVATE(tau_strat_550)
751  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: tau_strat_1020
752  !$OMP THREADPRIVATE(tau_strat_1020)
753  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: tausum_strat
754  !$OMP THREADPRIVATE(tausum_strat)
755  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: surf_PM25_sulf
756  !$OMP THREADPRIVATE(surf_PM25_sulf)
757  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: vsed_aer
758  !$OMP THREADPRIVATE(vsed_aer)
759  !     Sulfate aerosol concentration (dry mixing ratio) (condensed H2SO4 mmr)
760  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: sulfmmr
761  !$OMP THREADPRIVATE(sulfmmr)
762  !     SAD all aerosols (cm2/cm3)
763  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: SAD_sulfate
764  !$OMP THREADPRIVATE(SAD_sulfate)
765  !     Effective radius of wet surface aerosols (cm)
766      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: reff_sulfate
767!$OMP THREADPRIVATE(reff_sulfate)
768!     sulfate MMR in different modes (based on sulfmmr, it must be dry mmr)
769  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: sulfmmr_mode
770  !$OMP THREADPRIVATE(sulfmmr_mode)
771  !     particle concentration in different modes (part/m3)
772  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: nd_mode
773  !$OMP THREADPRIVATE(nd_mode)
774
775  !---3D budget variables
776  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_nucl
777  !$OMP THREADPRIVATE(budg_3D_nucl)
778  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_cond_evap
779  !$OMP THREADPRIVATE(budg_3D_cond_evap)
780  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_ocs_to_so2
781  !$OMP THREADPRIVATE(budg_3D_ocs_to_so2)
782  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_so2_to_h2so4
783  !$OMP THREADPRIVATE(budg_3D_so2_to_h2so4)
784  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_backgr_ocs
785  !$OMP THREADPRIVATE(budg_3D_backgr_ocs)
786  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_backgr_so2
787  !$OMP THREADPRIVATE(budg_3D_backgr_so2)
788
789  !---2D budget variables
790  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_ocs
791  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_so2
792  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_h2so4
793  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_part
794  !$OMP THREADPRIVATE(budg_dep_dry_ocs,budg_dep_dry_so2,budg_dep_dry_h2so4,budg_dep_dry_part)
795  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_ocs
796  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_so2
797  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_h2so4
798  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_part
799  !$OMP THREADPRIVATE(budg_dep_wet_ocs,budg_dep_wet_so2,budg_dep_wet_h2so4,budg_dep_wet_part)
800  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_ocs
801  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_so2
802  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_h2so4
803  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_part
804  !$OMP THREADPRIVATE(budg_emi_ocs,budg_emi_so2,budg_emi_h2so4,budg_emi_part)
805  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_ocs_to_so2
806  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_so2_to_h2so4
807  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_h2so4_to_part
808  !$OMP THREADPRIVATE(budg_ocs_to_so2,budg_so2_to_h2so4,budg_h2so4_to_part)
809  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_sed_part
810  !$OMP THREADPRIVATE(budg_sed_part)
811
812CONTAINS
813
814  !======================================================================
815  SUBROUTINE phys_local_var_init
816    USE dimphy
817    USE infotrac_phy, ONLY: nbtr, nqtot
818#ifdef ISO
819USE infotrac_phy, ONLY: ntraciso=>ntiso,niso
820#endif
821    USE aero_mod
822    USE indice_sol_mod
823    USE phys_output_var_mod
824    USE phys_state_var_mod
825    USE infotrac_phy, ONLY: nbtr_bin
826
827    IMPLICIT NONE
828    ALLOCATE(t_seri(klon, klev), q_seri(klon, klev), ql_seri(klon, klev), qs_seri(klon, klev), qbs_seri(klon, klev))
829    ! SN 4D ISO
830    ALLOCATE(qx_seri(klon, klev, nqtot))
831    ! SN
832    ALLOCATE(u_seri(klon, klev), v_seri(klon, klev))
833    ALLOCATE(l_mixmin(klon, klev + 1, nbsrf), l_mix(klon, klev + 1, nbsrf), wprime(klon, klev + 1, nbsrf))
834    ALLOCATE(pbl_eps(klon, klev + 1, nbsrf + 1))
835    ALLOCATE(tke_shear(klon, klev + 1, nbsrf), tke_buoy(klon, klev + 1, nbsrf), tke_trans(klon, klev + 1, nbsrf))
836    pbl_eps(:, :, :) = 0.
837    tke_shear(:, :, :) = 0.; tke_buoy(:, :, :) = 0.; tke_trans(:, :, :) = 0.
838    l_mix(:, :, :) = 0.;l_mixmin(:, :, :) = 0.;wprime(:, :, :) = 0. ! doit etre initialse car pas toujours remplis
839    ALLOCATE(rhcl(klon, klev))
840    ALLOCATE(tr_seri(klon, klev, nbtr))
841    ALLOCATE(d_t_dyn(klon, klev), d_q_dyn(klon, klev))
842    ALLOCATE(d_ql_dyn(klon, klev), d_qs_dyn(klon, klev), d_qbs_dyn(klon, klev))
843    ALLOCATE(d_q_dyn2d(klon), d_ql_dyn2d(klon), d_qs_dyn2d(klon), d_qbs_dyn2d(klon))
844    ALLOCATE(d_u_dyn(klon, klev), d_v_dyn(klon, klev))
845    ALLOCATE(d_tr_dyn(klon, klev, nbtr))                   !RomP
846    ALLOCATE(d_t_con(klon, klev), d_q_con(klon, klev), d_q_con_zmasse(klon, klev))
847    ALLOCATE(d_u_con(klon, klev), d_v_con(klon, klev))
848    ALLOCATE(d_t_wake(klon, klev), d_q_wake(klon, klev))
849    ALLOCATE(d_t_lsc(klon, klev), d_q_lsc(klon, klev))
850    ALLOCATE(d_t_lwr(klon, klev), d_t_lw0(klon, klev))
851    ALLOCATE(d_t_swr(klon, klev), d_t_sw0(klon, klev))
852    ALLOCATE(d_ql_lsc(klon, klev), d_qi_lsc(klon, klev))
853    ALLOCATE(d_t_ajsb(klon, klev), d_q_ajsb(klon, klev))
854    ALLOCATE(d_t_ajs(klon, klev), d_q_ajs(klon, klev))
855    !nrlmd<
856    ALLOCATE(d_t_ajs_w(klon, klev), d_q_ajs_w(klon, klev))
857    ALLOCATE(d_t_ajs_x(klon, klev), d_q_ajs_x(klon, klev))
858    !>nrlmd
859    ALLOCATE(d_u_ajs(klon, klev), d_v_ajs(klon, klev))
860    ALLOCATE(d_t_eva(klon, klev), d_q_eva(klon, klev))
861    ! SN 4D ISO
862    ALLOCATE(d_qx_eva(klon, klev, nqtot))
863    ! SN
864    ALLOCATE(d_ql_eva(klon, klev), d_qi_eva(klon, klev))
865    ALLOCATE(d_t_lscst(klon, klev), d_q_lscst(klon, klev))
866    ALLOCATE(d_t_lscth(klon, klev), d_q_lscth(klon, klev))
867    ALLOCATE(plul_st(klon), plul_th(klon))
868    ALLOCATE(d_t_vdf(klon, klev), d_q_vdf(klon, klev), d_t_diss(klon, klev))
869    ALLOCATE (d_qbs_vdf(klon, klev))
870    ALLOCATE(d_t_bsss(klon, klev), d_q_bsss(klon, klev), d_qbs_bsss(klon, klev))
871    ALLOCATE(d_t_vdf_w(klon, klev), d_q_vdf_w(klon, klev))
872    ALLOCATE(d_t_vdf_x(klon, klev), d_q_vdf_x(klon, klev))
873#ifdef ISO
874      allocate(xt_seri(ntraciso,klon,klev))
875      allocate(xtl_seri(ntraciso,klon,klev))
876      allocate(xts_seri(ntraciso,klon,klev))
877      allocate(xtbs_seri(ntraciso,klon,klev))
878      allocate(d_xt_dyn(ntraciso,klon,klev))
879      allocate(d_xtl_dyn(ntraciso,klon,klev))
880      allocate(d_xts_dyn(ntraciso,klon,klev))
881      allocate(d_xtbs_dyn(ntraciso,klon,klev))
882      allocate(d_xt_con(ntraciso,klon,klev))
883      allocate(d_xt_wake(ntraciso,klon,klev))
884      allocate(d_xt_lsc(ntraciso,klon,klev))
885      allocate(d_xtl_lsc(ntraciso,klon,klev))
886      allocate(d_xti_lsc(ntraciso,klon,klev))
887      allocate(d_xt_ajsb(ntraciso,klon,klev))
888      allocate(d_xt_ajs(ntraciso,klon,klev))
889      allocate(d_xt_ajs_w(ntraciso,klon,klev))
890      allocate(d_xt_ajs_x(ntraciso,klon,klev))
891      allocate(d_xt_eva(ntraciso,klon,klev))
892      allocate(d_xtl_eva(ntraciso,klon,klev))
893      allocate(d_xti_eva(ntraciso,klon,klev))
894      allocate(d_xt_vdf(ntraciso,klon,klev)) 
895      allocate(d_xt_vdf_w(ntraciso,klon,klev))
896      allocate(d_xt_vdf_x(ntraciso,klon,klev))
897      allocate(d_xt_ch4(ntraciso,klon,klev))
898      allocate(d_xt_prod_nucl(ntraciso,klon,klev))
899      allocate(d_xt_cosmo(ntraciso,klon,klev))
900      allocate(d_xt_decroiss(ntraciso,klon,klev))
901#endif
902
903    ALLOCATE(d_u_vdf(klon, klev), d_v_vdf(klon, klev))
904    ALLOCATE(d_t_oli(klon, klev), d_t_oro(klon, klev))
905    ALLOCATE(d_u_oli(klon, klev), d_v_oli(klon, klev))
906    ALLOCATE(d_u_oro(klon, klev), d_v_oro(klon, klev))
907    ALLOCATE(d_u_oro_gw(klon, klev), d_v_oro_gw(klon, klev))
908    ALLOCATE(d_t_oro_gw(klon, klev))
909    ALLOCATE(d_t_lif(klon, klev), d_t_ec(klon, klev))
910    ALLOCATE(d_u_lif(klon, klev), d_v_lif(klon, klev))
911    ALLOCATE(d_ts(klon, nbsrf), d_tr(klon, klev, nbtr))
912
913    ! Special RRTM
914    ALLOCATE(ZLWFT0_i(klon, klev + 1), ZSWFT0_i(klon, klev + 1), ZFLDN0(klon, klev + 1))
915    ZFLDN0 = 0.
916    ALLOCATE(ZFLUP0(klon, klev + 1), ZFSDN0(klon, klev + 1), ZFSUP0(klon, klev + 1))
917
918    ALLOCATE(topswad_aero(klon), solswad_aero(klon))
919    ALLOCATE(topswai_aero(klon), solswai_aero(klon))
920    ALLOCATE(topswad0_aero(klon), solswad0_aero(klon))
921    ALLOCATE(toplwad_aero(klon), sollwad_aero(klon))
922    ALLOCATE(toplwai_aero(klon), sollwai_aero(klon))
923    ALLOCATE(toplwad0_aero(klon), sollwad0_aero(klon))
924    ALLOCATE(topsw_aero(klon, naero_grp), solsw_aero(klon, naero_grp))
925    ALLOCATE(topsw0_aero(klon, naero_grp), solsw0_aero(klon, naero_grp))
926    ALLOCATE(topswcf_aero(klon, 3), solswcf_aero(klon, 3))
927    ALLOCATE(du_gwd_hines(klon, klev), dv_gwd_hines(klon, klev))
928    ALLOCATE(dv_gwd_rando(klon, klev), dv_gwd_front(klon, klev))
929    ALLOCATE(east_gwstress(klon, klev), west_gwstress(klon, klev))
930    east_gwstress(:, :) = 0 !ym missing init
931    west_gwstress(:, :) = 0 !ym missing init
932    ALLOCATE(d_t_hin(klon, klev))
933    ALLOCATE(d_q_ch4(klon, klev))
934    ALLOCATE(stratomask(klon, klev))
935    ALLOCATE(tausum_aero(klon, nwave, naero_tot))
936    ALLOCATE(drytausum_aero(klon, naero_tot))
937    ALLOCATE(tau3d_aero(klon, klev, nwave, naero_tot))
938    ALLOCATE(dNovrN(klon))
939    ALLOCATE(zfice(klon, klev))
940    ALLOCATE(od443aer(klon))
941    ALLOCATE(od550aer(klon))
942    ALLOCATE(od865aer(klon))
943    ALLOCATE(dryod550aer(klon))
944    dryod550aer(:) = 0.
945    ALLOCATE(abs550aer(klon))
946    abs550aer(:) = 0.
947    ALLOCATE(ec550aer(klon, klev))
948    ALLOCATE(od550lt1aer(klon))
949    ALLOCATE(sconcso4(klon))
950    ALLOCATE(sconcno3(klon))
951    ALLOCATE(sconcoa(klon))
952    ALLOCATE(sconcbc(klon))
953    ALLOCATE(sconcss(klon))
954    ALLOCATE(sconcdust(klon))
955    ALLOCATE(concso4(klon, klev))
956    ALLOCATE(concno3(klon, klev))
957    ALLOCATE(concoa(klon, klev))
958    ALLOCATE(concbc(klon, klev))
959    ALLOCATE(concss(klon, klev))
960    ALLOCATE(concdust(klon, klev))
961    ALLOCATE(loadso4(klon))
962    ALLOCATE(loadoa(klon))
963    ALLOCATE(loadbc(klon))
964    ALLOCATE(loadss(klon))
965    ALLOCATE(loaddust(klon))
966    ALLOCATE(loadno3(klon))
967    ALLOCATE(load_tmp1(klon))
968    ALLOCATE(load_tmp2(klon))
969    ALLOCATE(load_tmp3(klon))
970    ALLOCATE(load_tmp4(klon))
971    ALLOCATE(load_tmp5(klon))
972    ALLOCATE(load_tmp6(klon))
973    ALLOCATE(load_tmp7(klon))
974    ALLOCATE(load_tmp8(klon))
975    ALLOCATE(load_tmp9(klon))
976    ALLOCATE(load_tmp10(klon))
977
978    !IM ajout variables CFMIP2/CMIP5
979    ALLOCATE(topswad_aerop(klon), solswad_aerop(klon))
980    ALLOCATE(topswai_aerop(klon), solswai_aerop(klon))
981    ALLOCATE(topswad0_aerop(klon), solswad0_aerop(klon))
982    ALLOCATE(topsw_aerop(klon, naero_grp), topsw0_aerop(klon, naero_grp))
983    ALLOCATE(solsw_aerop(klon, naero_grp), solsw0_aerop(klon, naero_grp))
984    ALLOCATE(topswcf_aerop(klon, naero_grp), solswcf_aerop(klon, naero_grp))
985
986    ! additional LW variables CK
987    ALLOCATE(toplwad_aerop(klon), sollwad_aerop(klon))
988    ALLOCATE(toplwai_aerop(klon), sollwai_aerop(klon))
989    ALLOCATE(toplwad0_aerop(klon), sollwad0_aerop(klon))
990
991    !AI Ajout Ecrad (3Deffect)
992    ALLOCATE(topswad_aero_s2(klon), solswad_aero_s2(klon))
993    ALLOCATE(topswai_aero_s2(klon), solswai_aero_s2(klon))
994    ALLOCATE(topswad0_aero_s2(klon), solswad0_aero_s2(klon))
995    ALLOCATE(topsw_aero_s2(klon, naero_grp), topsw0_aero_s2(klon, naero_grp))
996    ALLOCATE(solsw_aero_s2(klon, naero_grp), solsw0_aero_s2(klon, naero_grp))
997    ALLOCATE(topswcf_aero_s2(klon, naero_grp), solswcf_aero_s2(klon, naero_grp))
998    ! additional LW variables CK
999    ALLOCATE(toplwad_aero_s2(klon), sollwad_aero_s2(klon))
1000    ALLOCATE(toplwai_aero_s2(klon), sollwai_aero_s2(klon))
1001    ALLOCATE(toplwad0_aero_s2(klon), sollwad0_aero_s2(klon))
1002
1003    ! FH Ajout de celles necessaires au phys_output_write_mod
1004
1005    ALLOCATE(tal1(klon), pal1(klon), pab1(klon), pab2(klon))
1006    ALLOCATE(ptstar(klon), pt0(klon), slp(klon))
1007    !!
1008    !!          Wake variables
1009    ALLOCATE(alp_wake(klon))
1010    ALLOCATE(wake_h(klon), wake_k(klon))
1011    ALLOCATE(wake_omg(klon, klev))
1012    ALLOCATE(d_deltat_wk(klon, klev), d_deltaq_wk(klon, klev))
1013    ALLOCATE(d_s_wk(klon), d_s_a_wk(klon), d_dens_wk(klon), d_dens_a_wk(klon))
1014    ALLOCATE(d_deltat_wk_gw(klon, klev), d_deltaq_wk_gw(klon, klev))
1015    ALLOCATE(d_deltat_vdf(klon, klev), d_deltaq_vdf(klon, klev))
1016    !!      ALLOCATE( d_s_vdf(klon), d_dens_vdf(klon))
1017    ALLOCATE(d_deltat_the(klon, klev), d_deltaq_the(klon, klev))
1018    !!      ALLOCATE( d_s_the(klon), d_dens_the(klon))
1019    ALLOCATE(d_deltat_ajs_cv(klon, klev), d_deltaq_ajs_cv(klon, klev))
1020#ifdef ISO
1021      ALLOCATE(d_deltaxt_wk(ntraciso,klon, klev))
1022      ALLOCATE(d_deltaxt_wk_gw(ntraciso,klon, klev))
1023      ALLOCATE(d_deltaxt_the(ntraciso,klon, klev))
1024      ALLOCATE(d_deltaxt_vdf(ntraciso,klon, klev))
1025      ALLOCATE(d_deltaxt_ajs_cv(ntraciso,klon, klev))
1026#endif
1027    !!         End of wake variables
1028    !!
1029    ALLOCATE(bils(klon))
1030    ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon))
1031    ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon))
1032    ALLOCATE(JrNt(klon))
1033    ALLOCATE(dthmin(klon), evap(klon), snowerosion(klon), fder(klon), plcl(klon), plfc(klon))
1034    ALLOCATE(prw(klon), prlw(klon), prsw(klon), prbsw(klon), water_budget(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon))
1035    ALLOCATE(s_lcl(klon))
1036    ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon))
1037
1038    !nrlmd+jyg<
1039    ALLOCATE(s_pblh_x(klon), s_pblh_w(klon))
1040    ALLOCATE(s_lcl_x(klon), s_lcl_w(klon))
1041    !>nrlmd+jyg
1042
1043    ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon))
1044    ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon))
1045    ALLOCATE(uwat(klon), vwat(klon))
1046    ALLOCATE(zxfqcalving(klon), zxfluxlat(klon))
1047    ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon))
1048! SN add runoff_diag
1049      ALLOCATE(zxrunofflic(klon), runoff_diag(klon))
1050      runoff_diag(:)=0.
1051    ALLOCATE(zxustartlic(klon), zxrhoslic(klon), zxqsaltlic(klon), tempsmoothlic(klon))
1052    zxustartlic(:) = 0. ; zxrhoslic(:) = 0. ; zxqsaltlic(:) = 0. ; tempsmoothlic(:)=0.
1053    ALLOCATE(rain_lsc(klon))
1054    ALLOCATE(rain_num(klon))
1055    ALLOCATE(qlth(klon, klev), qith(klon, klev), qsith(klon, klev), wiceth(klon, klev))
1056#ifdef ISO
1057      ALLOCATE(xtevap(ntraciso,klon))
1058      ALLOCATE(xtprw(ntraciso,klon))
1059      ALLOCATE(zxfxtcalving(niso,klon))
1060      ALLOCATE(xtsnow_lsc(ntraciso,klon), zxfxtfonte(niso,klon))
1061      ALLOCATE(zxxtrunofflic(niso,klon))
1062      ALLOCATE(xtrain_lsc(ntraciso,klon))
1063      ALLOCATE(xtrunoff_diag(niso,klon))
1064      ALLOCATE(h1_diag(klon))
1065!SN
1066      xtrunoff_diag(:,:)=0. ! because variables are only given values on knon grid points
1067#endif
1068
1069    ALLOCATE(sens_x(klon), sens_w(klon))
1070    ALLOCATE(zxfluxlat_x(klon), zxfluxlat_w(klon))
1071    ALLOCATE(delta_qsurf(klon))
1072    !jyg<
1073    !!      ALLOCATE(t_x(klon,klev), t_w(klon,klev))
1074    !!      ALLOCATE(q_x(klon,klev), q_w(klon,klev))
1075    !>jyg
1076    ALLOCATE(dtvdf_x(klon, klev), dtvdf_w(klon, klev))
1077    dtvdf_x = 0 ; dtvdf_w = 0 ;
1078    !ym missing init
1079    ALLOCATE(dqvdf_x(klon, klev), dqvdf_w(klon, klev))
1080    dqvdf_x = 0 ; dqvdf_w = 0 ;
1081    !ym missing init
1082    ALLOCATE(pbl_tke_input(klon, klev + 1, nbsrf))
1083    ALLOCATE(t_therm(klon, klev), q_therm(klon, klev), u_therm(klon, klev), v_therm(klon, klev))
1084    ALLOCATE(cdragh_x(klon), cdragh_w(klon))
1085    ALLOCATE(cdragm_x(klon), cdragm_w(klon))
1086    ALLOCATE(kh(klon), kh_x(klon), kh_w(klon))
1087#ifdef ISO
1088      ALLOCATE(dxtvdf_x(ntraciso,klon,klev), dxtvdf_w(ntraciso,klon,klev))
1089      ALLOCATE(xt_therm(ntraciso,klon,klev))
1090#endif
1091
1092    ALLOCATE(ptconv(klon, klev))
1093    ALLOCATE(ratqsc(klon, klev))
1094
1095    ALLOCATE(wbeff(klon), convoccur(klon), zmax_th(klon))
1096    ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon))
1097    ALLOCATE(zt2m_min_mon(klon), zt2m_max_mon(klon))
1098    ALLOCATE(t2m_min_mon(klon), t2m_max_mon(klon))
1099    ALLOCATE(sens(klon), flwp(klon), fiwp(klon))
1100    ALLOCATE(alp_bl_conv(klon), alp_bl_det(klon))
1101    alp_bl_conv(:) = 0 ;  alp_bl_det(:) = 0
1102    ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon))
1103    alp_bl_fluct_m(:) = 0 ; alp_bl_fluct_tke(:) = 0.
1104    ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon), strig(klon), zcong(klon), zlcl_th(klon))
1105    alp_bl_stat(:) = 0
1106    ALLOCATE(proba_notrig(klon), random_notrig(klon))
1107
1108    ALLOCATE(dnwd0(klon, klev))
1109    !      ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev))
1110    ALLOCATE(omega(klon, klev))
1111    ALLOCATE(epmax_diag(klon)) ! epmax_cape
1112    !      ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev))
1113    ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev))
1114    ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev))
1115    ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev))
1116    ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev))
1117    ALLOCATE(ref_liq_pi(klon, klev), ref_ice_pi(klon, klev))
1118    ALLOCATE(zphi(klon, klev), zx_rh(klon, klev), zx_rhl(klon, klev), zx_rhi(klon, klev))
1119    zx_rhl(:, :) = 0.; zx_rhi(:, :) = 0. ! because not always defined
1120    ALLOCATE(pmfd(klon, klev), pmfu(klon, klev))
1121
1122    ALLOCATE(t2m(klon, nbsrf), fluxlat(klon, nbsrf))
1123    ALLOCATE(fsollw(klon, nbsrf))
1124    ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf))
1125    ALLOCATE(wfevap(klon, nbsrf))
1126    ALLOCATE(evap_pot(klon, nbsrf))
1127    ! FC
1128    ALLOCATE(zxfluxq(klon, klev), zxfluxt(klon, klev))
1129
1130    !  Deep convective variables used in phytrac
1131    ALLOCATE(pmflxr(klon, klev + 1), pmflxs(klon, klev + 1))
1132    ALLOCATE(wdtrainA(klon, klev), wdtrainS(klon, klev), wdtrainM(klon, klev))
1133    ALLOCATE(dnwd(klon, klev), upwd(klon, klev))
1134    ALLOCATE(ep(klon, klev))                          ! epmax_cape
1135    ALLOCATE(da(klon, klev), mp(klon, klev))
1136    ALLOCATE(phi(klon, klev, klev))
1137    ALLOCATE(wght_cvfd(klon, klev))
1138    ALLOCATE(phi2(klon, klev, klev))
1139    ALLOCATE(d1a(klon, klev), dam(klon, klev))
1140    ALLOCATE(ev(klon, klev))
1141    ALLOCATE(elij(klon, klev, klev))
1142    ALLOCATE(qtaa(klon, klev))
1143    ALLOCATE(clw(klon, klev))
1144    ALLOCATE(epmlmMm(klon, klev, klev), eplaMm(klon, klev))
1145    ALLOCATE(sij(klon, klev, klev))
1146#ifdef ISO
1147      ALLOCATE(xtwdtrainA(ntraciso,klon,klev))
1148      ALLOCATE(xtev(ntraciso,klon,klev) )
1149      ALLOCATE(xttaa(ntraciso,klon,klev) )
1150      ALLOCATE(xtclw(ntraciso,klon,klev) )
1151#ifdef DIAGISO
1152      ALLOCATE(qlp(klon,klev))
1153      ALLOCATE(qvp(klon,klev))
1154      ALLOCATE(fq_detrainement(klon,klev))
1155      ALLOCATE(fq_ddft(klon,klev))
1156      ALLOCATE(fq_fluxmasse(klon,klev))
1157      ALLOCATE(fq_evapprecip(klon,klev))
1158      ALLOCATE(f_detrainement(klon,klev), q_detrainement(klon,klev))
1159      ALLOCATE(xtlp(ntraciso,klon,klev))
1160      ALLOCATE(xtvp(ntraciso,klon,klev))
1161      ALLOCATE(q_the(klon,klev), xt_the(ntraciso,klon,klev))
1162      ALLOCATE(fxt_detrainement(ntraciso,klon,klev))
1163      ALLOCATE(fxt_ddft(ntraciso,klon,klev))
1164      ALLOCATE(fxt_fluxmasse(ntraciso,klon,klev))
1165      ALLOCATE(fxt_evapprecip(ntraciso,klon,klev))
1166      ALLOCATE(xt_detrainement(ntraciso,klon,klev))
1167#endif
1168#endif
1169
1170    ALLOCATE(prfl(klon, klev + 1))
1171    ALLOCATE(psfl(klon, klev + 1), fraca(klon, klev + 1), Vprecip(klon, klev + 1))
1172    ALLOCATE(bsfl(klon, klev + 1))
1173    ALLOCATE(zw2(klon, klev + 1))
1174
1175    ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf))
1176    ALLOCATE(fluxt(klon, klev, nbsrf))
1177
1178    ALLOCATE(uwriteSTD(klon, nlevSTD, nfiles), vwriteSTD(klon, nlevSTD, nfiles))
1179    ALLOCATE(wwriteSTD(klon, nlevSTD, nfiles), phiwriteSTD(klon, nlevSTD, nfiles))
1180    ALLOCATE(qwriteSTD(klon, nlevSTD, nfiles), twriteSTD(klon, nlevSTD, nfiles))
1181    ALLOCATE(rhwriteSTD(klon, nlevSTD, nfiles))
1182
1183    ! ug et d'autres encore:
1184    ALLOCATE(beta_prec(klon, klev))
1185    ALLOCATE(rneb(klon, klev), rnebjn(klon, klev), rneblsvol(klon, klev))
1186    ALLOCATE(pfraclr(klon, klev), pfracld(klon, klev))
1187    pfraclr(:, :) = 0. ; pfracld(:, :) = 0. ! because not always defined
1188    ALLOCATE(cldfraliq(klon, klev))
1189    ALLOCATE(sigma2_icefracturb(klon, klev))
1190    ALLOCATE(mean_icefracturb(klon, klev))
1191    ALLOCATE(distcltop(klon, klev))
1192    ALLOCATE(temp_cltop(klon, klev))
1193
1194    ALLOCATE (zxsnow(klon), snowhgt(klon), qsnow(klon), to_ice(klon))
1195    ALLOCATE (sissnow(klon), runoff(klon), albsol3_lic(klon))
1196#ifdef ISO
1197      ALLOCATE (zxxtsnow(niso,klon))
1198      ALLOCATE(xtVprecip(ntraciso,klon, klev+1),xtVprecipi(ntraciso,klon, klev+1))
1199      ALLOCATE(pxtsfl(ntraciso,klon, klev+1),pxtrfl(ntraciso,klon, klev+1))
1200#endif
1201
1202    ALLOCATE (p_tropopause(klon))
1203    ALLOCATE (z_tropopause(klon))
1204    ALLOCATE (t_tropopause(klon))
1205
1206    ALLOCATE(zn2mout(klon, 6))
1207
1208    ! Supersaturation
1209    ALLOCATE(rneb_seri(klon, klev))
1210    ALLOCATE(d_rneb_dyn(klon, klev))
1211    ALLOCATE(qclr(klon, klev), qcld(klon, klev), qss(klon, klev), qvc(klon, klev))
1212    ALLOCATE(rnebclr(klon, klev), rnebss(klon, klev), gamma_ss(klon, klev))
1213    ALLOCATE(N1_ss(klon, klev), N2_ss(klon, klev))
1214    ALLOCATE(drneb_sub(klon, klev), drneb_con(klon, klev), drneb_tur(klon, klev), drneb_avi(klon, klev))
1215    ALLOCATE(zqsatl(klon, klev), zqsats(klon, klev))
1216    ALLOCATE(Tcontr(klon, klev), qcontr(klon, klev), qcontr2(klon, klev), fcontrN(klon, klev), fcontrP(klon, klev))
1217
1218    !--POPRECIP variables
1219    ALLOCATE(qraindiag(klon, klev), qsnowdiag(klon, klev))
1220    ALLOCATE(dqreva(klon, klev), dqssub(klon, klev))
1221    ALLOCATE(dqrauto(klon, klev), dqrcol(klon, klev), dqrmelt(klon, klev), dqrfreez(klon, klev))
1222    ALLOCATE(dqsauto(klon, klev), dqsagg(klon, klev), dqsrim(klon, klev), dqsmelt(klon, klev), dqsfreez(klon, klev))
1223
1224    IF (CPPKEY_STRATAER) THEN
1225      ALLOCATE (d_q_emiss(klon, klev))
1226      ALLOCATE (R2SO4(klon, klev))
1227      ALLOCATE (R2SO4B(klon, klev, nbtr_bin))
1228      ALLOCATE (DENSO4(klon, klev))
1229      ALLOCATE (DENSO4B(klon, klev, nbtr_bin))
1230      ALLOCATE (f_r_wet(klon, klev))
1231      ALLOCATE (f_r_wetB(klon, klev, nbtr_bin))
1232      ALLOCATE (decfluxaer(klon, nbtr))
1233      ALLOCATE (mdw(nbtr))
1234      ALLOCATE (budg_3D_nucl(klon, klev))
1235      ALLOCATE (budg_3D_cond_evap(klon, klev))
1236      ALLOCATE (budg_3D_ocs_to_so2(klon, klev))
1237      ALLOCATE (budg_3D_so2_to_h2so4(klon, klev))
1238      ALLOCATE (budg_3D_backgr_ocs(klon, klev))
1239      ALLOCATE (budg_3D_backgr_so2(klon, klev))
1240      ALLOCATE (OCS_lifetime(klon, klev))
1241      ALLOCATE (SO2_lifetime(klon, klev))
1242      ALLOCATE (H2SO4_lifetime(klon, klev))
1243      ALLOCATE (O3_clim(klon, klev))
1244      ALLOCATE (alpha_bin(nbands_sw_rrtm + nbands_lw_rrtm + nwave, nbtr))
1245      ALLOCATE (piz_bin(nbands_sw_rrtm + nbands_lw_rrtm + nwave, nbtr))
1246      ALLOCATE (cg_bin(nbands_sw_rrtm + nbands_lw_rrtm + nwave, nbtr))
1247      ALLOCATE (tau_strat_550(klon, klev))
1248      ALLOCATE (tau_strat_1020(klon, klev))
1249      ALLOCATE (tausum_strat(klon, 3))
1250      ALLOCATE (budg_dep_dry_ocs(klon))
1251      ALLOCATE (budg_dep_wet_ocs(klon))
1252      ALLOCATE (budg_dep_dry_so2(klon))
1253      ALLOCATE (budg_dep_wet_so2(klon))
1254      ALLOCATE (budg_dep_dry_h2so4(klon))
1255      ALLOCATE (budg_dep_wet_h2so4(klon))
1256      ALLOCATE (budg_dep_dry_part(klon))
1257      ALLOCATE (budg_dep_wet_part(klon))
1258      ALLOCATE (budg_emi_ocs(klon))
1259      ALLOCATE (budg_emi_so2(klon))
1260      ALLOCATE (budg_emi_h2so4(klon))
1261      ALLOCATE (budg_emi_part(klon))
1262      ALLOCATE (budg_ocs_to_so2(klon))
1263      ALLOCATE (budg_so2_to_h2so4(klon))
1264      ALLOCATE (budg_h2so4_to_part(klon))
1265      ALLOCATE (budg_sed_part(klon))
1266      ALLOCATE (surf_PM25_sulf(klon))
1267      ALLOCATE (vsed_aer(klon, klev))
1268      ALLOCATE (sulfmmr(klon, klev))
1269      ALLOCATE (SAD_sulfate(klon, klev))
1270      ALLOCATE (reff_sulfate(klon,klev))
1271      ALLOCATE (sulfmmr_mode(klon, klev, nbtr_bin))
1272      ALLOCATE (nd_mode(klon, klev, nbtr_bin))
1273    END IF
1274
1275  END SUBROUTINE phys_local_var_init
1276
1277  !======================================================================
1278  SUBROUTINE phys_local_var_end
1279    USE dimphy
1280    USE indice_sol_mod
1281    IMPLICIT NONE
1282    DEALLOCATE(t_seri, q_seri, ql_seri, qs_seri, qbs_seri)
1283    ! SN 4D ISO
1284    DEALLOCATE(qx_seri)
1285    ! SN
1286    DEALLOCATE(u_seri, v_seri)
1287    DEALLOCATE(l_mixmin, l_mix, wprime)
1288    DEALLOCATE(tke_shear, tke_buoy, tke_trans)
1289    DEALLOCATE(pbl_eps)
1290    DEALLOCATE(rhcl)
1291    DEALLOCATE(tr_seri)
1292    DEALLOCATE(d_t_dyn, d_q_dyn)
1293    DEALLOCATE(d_ql_dyn, d_qs_dyn, d_qbs_dyn)
1294    DEALLOCATE(d_q_dyn2d, d_ql_dyn2d, d_qs_dyn2d, d_qbs_dyn2d)
1295    DEALLOCATE(d_u_dyn, d_v_dyn)
1296    DEALLOCATE(d_tr_dyn)                      !RomP
1297    DEALLOCATE(d_t_con, d_q_con, d_q_con_zmasse)
1298    DEALLOCATE(d_u_con, d_v_con)
1299    DEALLOCATE(d_t_wake, d_q_wake)
1300    DEALLOCATE(d_t_lsc, d_q_lsc)
1301    DEALLOCATE(d_t_lwr, d_t_lw0)
1302    DEALLOCATE(d_t_swr, d_t_sw0)
1303    DEALLOCATE(d_ql_lsc, d_qi_lsc)
1304    DEALLOCATE(d_t_ajsb, d_q_ajsb)
1305    DEALLOCATE(d_t_ajs, d_q_ajs)
1306    !nrlmd<
1307    DEALLOCATE(d_t_ajs_w, d_q_ajs_w)
1308    DEALLOCATE(d_t_ajs_x, d_q_ajs_x)
1309    !>nrlmd
1310    DEALLOCATE(d_u_ajs, d_v_ajs)
1311    DEALLOCATE(d_t_eva, d_q_eva)
1312    ! SN 4D ISO
1313    DEALLOCATE(d_qx_eva)
1314    ! SN
1315    DEALLOCATE(d_ql_eva, d_qi_eva)
1316    DEALLOCATE(d_t_lscst, d_q_lscst)
1317    DEALLOCATE(d_t_lscth, d_q_lscth)
1318    DEALLOCATE(plul_st, plul_th)
1319    DEALLOCATE(d_t_vdf, d_q_vdf, d_t_diss)
1320    DEALLOCATE(d_qbs_vdf)
1321    DEALLOCATE(d_t_bsss, d_q_bsss, d_qbs_bsss)
1322#ifdef ISO
1323      deallocate(xt_seri,xtl_seri,xts_seri,xtbs_seri)
1324      DEALLOCATE(d_xtl_eva,d_xti_eva)
1325      deallocate(d_xt_dyn,d_xtl_dyn,d_xts_dyn,d_xtbs_dyn)
1326      deallocate(d_xt_con)
1327      deallocate(d_xt_wake)
1328      deallocate(d_xt_lsc)
1329      deallocate(d_xtl_lsc,d_xti_lsc)
1330      deallocate(d_xt_ajsb)
1331      deallocate(d_xt_ajs)
1332      deallocate(d_xt_ajs_w,d_xt_ajs_x)
1333      deallocate(d_xt_eva)
1334      deallocate(d_xtl_eva)
1335      deallocate(d_xti_eva)
1336      deallocate(d_xt_vdf)
1337      deallocate(d_xt_vdf_w,d_xt_vdf_x)
1338      deallocate(d_xt_ch4)
1339      deallocate(d_xt_prod_nucl)
1340      deallocate(d_xt_cosmo)
1341      deallocate(d_xt_decroiss)
1342#endif
1343
1344    DEALLOCATE(d_u_vdf, d_v_vdf)
1345    DEALLOCATE(d_t_oli, d_t_oro)
1346    DEALLOCATE(d_u_oli, d_v_oli)
1347    DEALLOCATE(d_u_oro, d_v_oro)
1348    DEALLOCATE(d_t_oro_gw)
1349    DEALLOCATE(d_u_oro_gw, d_v_oro_gw)
1350    DEALLOCATE(d_t_lif, d_t_ec)
1351    DEALLOCATE(d_u_lif, d_v_lif)
1352    DEALLOCATE(d_ts, d_tr)
1353    DEALLOCATE(topswad_aero, solswad_aero)
1354    DEALLOCATE(topswai_aero, solswai_aero)
1355    DEALLOCATE(topswad0_aero, solswad0_aero)
1356    DEALLOCATE(toplwad_aero, sollwad_aero)
1357    DEALLOCATE(toplwai_aero, sollwai_aero)
1358    DEALLOCATE(toplwad0_aero, sollwad0_aero)
1359    DEALLOCATE(topsw_aero, solsw_aero)
1360    DEALLOCATE(topsw0_aero, solsw0_aero)
1361    DEALLOCATE(topswcf_aero, solswcf_aero)
1362    DEALLOCATE(stratomask)
1363    DEALLOCATE(tausum_aero)
1364    DEALLOCATE(drytausum_aero)
1365    DEALLOCATE(tau3d_aero)
1366    DEALLOCATE(dNovrN)
1367    DEALLOCATE(zfice)
1368    DEALLOCATE(od443aer)
1369    DEALLOCATE(od550aer)
1370    DEALLOCATE(od865aer)
1371    DEALLOCATE(dryod550aer)
1372    DEALLOCATE(abs550aer)
1373    DEALLOCATE(ec550aer)
1374    DEALLOCATE(od550lt1aer)
1375    DEALLOCATE(sconcso4)
1376    DEALLOCATE(sconcno3)
1377    DEALLOCATE(sconcoa)
1378    DEALLOCATE(sconcbc)
1379    DEALLOCATE(sconcss)
1380    DEALLOCATE(sconcdust)
1381    DEALLOCATE(concso4)
1382    DEALLOCATE(concno3)
1383    DEALLOCATE(concoa)
1384    DEALLOCATE(concbc)
1385    DEALLOCATE(concss)
1386    DEALLOCATE(concdust)
1387    DEALLOCATE(loadso4)
1388    DEALLOCATE(loadoa)
1389    DEALLOCATE(loadbc)
1390    DEALLOCATE(loadss)
1391    DEALLOCATE(loaddust)
1392    DEALLOCATE(loadno3)
1393    DEALLOCATE(load_tmp1)
1394    DEALLOCATE(load_tmp2)
1395    DEALLOCATE(load_tmp3)
1396    DEALLOCATE(load_tmp4)
1397    DEALLOCATE(load_tmp5)
1398    DEALLOCATE(load_tmp6)
1399    DEALLOCATE(load_tmp7)
1400    DEALLOCATE(load_tmp8)
1401    DEALLOCATE(load_tmp9)
1402    DEALLOCATE(load_tmp10)
1403    DEALLOCATE(du_gwd_hines, dv_gwd_hines, d_t_hin)
1404    DEALLOCATE(d_q_ch4)
1405    DEALLOCATE(dv_gwd_rando, dv_gwd_front)
1406    DEALLOCATE(east_gwstress, west_gwstress)
1407
1408    !IM ajout variables CFMIP2/CMIP5
1409    DEALLOCATE(topswad_aerop, solswad_aerop)
1410    DEALLOCATE(topswai_aerop, solswai_aerop)
1411    DEALLOCATE(topswad0_aerop, solswad0_aerop)
1412    DEALLOCATE(topsw_aerop, topsw0_aerop)
1413    DEALLOCATE(solsw_aerop, solsw0_aerop)
1414    DEALLOCATE(topswcf_aerop, solswcf_aerop)
1415    !CK LW diagnostics
1416    DEALLOCATE(toplwad_aerop, sollwad_aerop)
1417    DEALLOCATE(toplwai_aerop, sollwai_aerop)
1418    DEALLOCATE(toplwad0_aerop, sollwad0_aerop)
1419
1420    !AI Ajout pour Ecrad (3Deffect)
1421    DEALLOCATE(topswad_aero_s2, solswad_aero_s2)
1422    DEALLOCATE(topswai_aero_s2, solswai_aero_s2)
1423    DEALLOCATE(topswad0_aero_s2, solswad0_aero_s2)
1424    DEALLOCATE(topsw_aero_s2, topsw0_aero_s2)
1425    DEALLOCATE(solsw_aero_s2, solsw0_aero_s2)
1426    DEALLOCATE(topswcf_aero_s2, solswcf_aero_s2)
1427    !CK LW diagnostics
1428    DEALLOCATE(toplwad_aero_s2, sollwad_aero_s2)
1429    DEALLOCATE(toplwai_aero_s2, sollwai_aero_s2)
1430    DEALLOCATE(toplwad0_aero_s2, sollwad0_aero_s2)
1431
1432    ! FH Ajout de celles necessaires au phys_output_write_mod
1433    DEALLOCATE(tal1, pal1, pab1, pab2)
1434    DEALLOCATE(ptstar, pt0, slp)
1435
1436    DEALLOCATE(alp_wake)
1437    DEALLOCATE(wake_h, wake_k)
1438    DEALLOCATE(wake_omg)
1439    DEALLOCATE(d_deltat_wk, d_deltaq_wk)
1440    DEALLOCATE(d_s_wk, d_s_a_wk, d_dens_wk, d_dens_a_wk)
1441    DEALLOCATE(d_deltat_wk_gw, d_deltaq_wk_gw)
1442    DEALLOCATE(d_deltat_vdf, d_deltaq_vdf)
1443    !!      DEALLOCATE( d_s_vdf, d_dens_vdf)
1444    DEALLOCATE(d_deltat_the, d_deltaq_the)
1445    !!      DEALLOCATE( d_s_the, d_dens_the)
1446    DEALLOCATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)
1447#ifdef ISO
1448      DEALLOCATE(d_deltaxt_wk)
1449      DEALLOCATE(d_deltaxt_wk_gw)
1450      DEALLOCATE(d_deltaxt_ajs_cv)
1451      DEALLOCATE(d_deltaxt_vdf)
1452#endif
1453
1454    DEALLOCATE(bils)
1455    DEALLOCATE(cdragm, cdragh, cldh, cldl)
1456    DEALLOCATE(cldm, cldq, cldt, qsat2m)
1457    DEALLOCATE(JrNt)
1458    DEALLOCATE(dthmin, evap, snowerosion, fder, plcl, plfc)
1459    DEALLOCATE(prw, prlw, prsw, prbsw, water_budget, zustar, zu10m, zv10m, rh2m, s_lcl)
1460    DEALLOCATE(s_pblh, s_pblt, s_therm)
1461
1462    !nrlmd+jyg<
1463    DEALLOCATE(s_pblh_x, s_pblh_w)
1464    DEALLOCATE(s_lcl_x, s_lcl_w)
1465    !>nrlmd+jyg
1466
1467    DEALLOCATE(slab_wfbils, tpot, tpote, ue)
1468    DEALLOCATE(uq, ve, vq, zxffonte)
1469    DEALLOCATE(uwat, vwat)
1470    DEALLOCATE(zxfqcalving, zxfluxlat)
1471! SN runoff_diag
1472      DEALLOCATE(zxrunofflic, runoff_diag)
1473    DEALLOCATE(zxustartlic, zxrhoslic, zxqsaltlic, tempsmoothlic)
1474    DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
1475    DEALLOCATE(rain_lsc)
1476    DEALLOCATE(rain_num)
1477    DEALLOCATE(qlth, qith, qsith, wiceth)
1478
1479    DEALLOCATE(sens_x, sens_w)
1480    DEALLOCATE(zxfluxlat_x, zxfluxlat_w)
1481    DEALLOCATE(delta_qsurf)
1482    !jyg<
1483    !!      DEALLOCATE(t_x, t_w)
1484    !!      DEALLOCATE(q_x, q_w)
1485    !>jyg
1486    DEALLOCATE(d_t_vdf_x, d_t_vdf_w)
1487    DEALLOCATE(d_q_vdf_x, d_q_vdf_w)
1488    DEALLOCATE(pbl_tke_input)
1489    DEALLOCATE(t_therm, q_therm, u_therm, v_therm)
1490    DEALLOCATE(cdragh_x, cdragh_w)
1491    DEALLOCATE(cdragm_x, cdragm_w)
1492    DEALLOCATE(kh, kh_x, kh_w)
1493#ifdef ISO
1494      DEALLOCATE(xtevap,xtprw)
1495      DEALLOCATE(zxfxtcalving)
1496      DEALLOCATE(zxxtrunofflic)
1497      DEALLOCATE(xtsnow_lsc, zxfxtfonte)
1498      DEALLOCATE(xtrain_lsc)
1499      DEALLOCATE(dxtvdf_x, dxtvdf_w)
1500      DEALLOCATE(xt_therm)
1501      DEALLOCATE(h1_diag,xtrunoff_diag)
1502#endif
1503
1504    DEALLOCATE(ptconv)
1505    DEALLOCATE(ratqsc)
1506
1507    DEALLOCATE(wbeff, convoccur, zmax_th)
1508    DEALLOCATE(zq2m, zt2m, weak_inversion)
1509    DEALLOCATE(zt2m_min_mon, zt2m_max_mon)
1510    DEALLOCATE(t2m_min_mon, t2m_max_mon)
1511    DEALLOCATE(sens, flwp, fiwp)
1512    DEALLOCATE(alp_bl_conv, alp_bl_det)
1513    DEALLOCATE(alp_bl_fluct_m, alp_bl_fluct_tke)
1514    DEALLOCATE(alp_bl_stat, n2, s2, strig, zcong, zlcl_th)
1515    DEALLOCATE(proba_notrig, random_notrig)
1516    !FC
1517    DEALLOCATE(zxfluxq, zxfluxt)
1518
1519    DEALLOCATE(dnwd0)
1520    !      DEALLOCATE(upwd, omega, coefh)
1521    DEALLOCATE(omega)
1522    DEALLOCATE(epmax_diag)
1523    !      DEALLOCATE(coefm, lambda_th, cldemi)
1524    DEALLOCATE(lambda_th, cldemi)
1525    DEALLOCATE(cldfra, cldtau, fiwc)
1526    DEALLOCATE(fl, re, flwc)
1527    DEALLOCATE(ref_liq, ref_ice, theta)
1528    DEALLOCATE(ref_liq_pi, ref_ice_pi)
1529    DEALLOCATE(zphi, zx_rh, zx_rhl, zx_rhi)
1530    DEALLOCATE(pmfd, pmfu)
1531
1532    DEALLOCATE(t2m, fluxlat)
1533    DEALLOCATE(fsollw, evap_pot)
1534    DEALLOCATE(fsolsw, wfbils)
1535    DEALLOCATE(wfevap)
1536
1537    DEALLOCATE(pmflxr, pmflxs)
1538    DEALLOCATE(wdtrainA, wdtrainS, wdtrainM)
1539    DEALLOCATE(upwd, dnwd)
1540    DEALLOCATE(ep)
1541    DEALLOCATE(da, mp)
1542    DEALLOCATE(phi)
1543    DEALLOCATE(wght_cvfd)
1544    DEALLOCATE(phi2)
1545    DEALLOCATE(d1a, dam)
1546    DEALLOCATE(ev)
1547    DEALLOCATE(elij)
1548    DEALLOCATE(qtaa)
1549    DEALLOCATE(clw)
1550    DEALLOCATE(epmlmMm, eplaMm)
1551    DEALLOCATE(sij)
1552#ifdef ISO
1553      DEALLOCATE(xtwdtrainA)
1554      DEALLOCATE(xttaa )
1555      DEALLOCATE(xtclw )
1556      DEALLOCATE(xtev )
1557#ifdef DIAGISO
1558      DEALLOCATE(qlp)
1559      DEALLOCATE(qvp)
1560      DEALLOCATE(fq_detrainement)
1561      DEALLOCATE(fq_ddft)
1562      DEALLOCATE(fq_fluxmasse)
1563      DEALLOCATE(fq_evapprecip)
1564      DEALLOCATE(f_detrainement,q_detrainement)
1565      DEALLOCATE(xtlp)
1566      DEALLOCATE(xtvp)
1567      DEALLOCATE(q_the,xt_the)
1568      DEALLOCATE(fxt_detrainement)
1569      DEALLOCATE(fxt_ddft)
1570      DEALLOCATE(fxt_fluxmasse)
1571      DEALLOCATE(fxt_evapprecip)
1572      DEALLOCATE(xt_detrainement)
1573#endif
1574#endif
1575
1576
1577    DEALLOCATE(prfl, psfl, bsfl, fraca, Vprecip)
1578    DEALLOCATE(zw2)
1579
1580    DEALLOCATE(fluxu, fluxv)
1581    DEALLOCATE(fluxt)
1582
1583    DEALLOCATE(uwriteSTD, vwriteSTD)
1584    DEALLOCATE(wwriteSTD, phiwriteSTD)
1585    DEALLOCATE(qwriteSTD, twriteSTD, rhwriteSTD)
1586
1587    ! ug et d'autres encore:
1588    DEALLOCATE(beta_prec)
1589    DEALLOCATE(rneb)
1590    DEALLOCATE(pfraclr, pfracld)
1591    DEALLOCATE(cldfraliq)
1592    DEALLOCATE(sigma2_icefracturb)
1593    DEALLOCATE(mean_icefracturb)
1594    DEALLOCATE (zxsnow, snowhgt, qsnow, to_ice, sissnow, runoff, albsol3_lic)
1595    DEALLOCATE(distcltop)
1596    DEALLOCATE(temp_cltop)
1597#ifdef ISO
1598      DEALLOCATE (zxxtsnow,xtVprecip,xtVprecipi,pxtrfl,pxtsfl)
1599#endif
1600
1601    DEALLOCATE (p_tropopause)
1602    DEALLOCATE (z_tropopause)
1603    DEALLOCATE (t_tropopause)
1604    DEALLOCATE(zn2mout)
1605
1606    ! Supersaturation
1607    DEALLOCATE(rneb_seri)
1608    DEALLOCATE(d_rneb_dyn)
1609    DEALLOCATE(qclr, qcld, qss, qvc)
1610    DEALLOCATE(rnebclr, rnebss, gamma_ss)
1611    DEALLOCATE(N1_ss, N2_ss)
1612    DEALLOCATE(drneb_sub, drneb_con, drneb_tur, drneb_avi)
1613    DEALLOCATE(zqsatl, zqsats)
1614    DEALLOCATE(Tcontr, qcontr, qcontr2, fcontrN, fcontrP)
1615
1616    !--POPRECIP variables
1617    DEALLOCATE(qraindiag, qsnowdiag)
1618    DEALLOCATE(dqreva, dqssub)
1619    DEALLOCATE(dqrauto, dqrcol, dqrmelt, dqrfreez)
1620    DEALLOCATE(dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez)
1621
1622    IF (CPPKEY_STRATAER) THEN
1623      ! variables for strat. aerosol CK
1624      DEALLOCATE (d_q_emiss)
1625      DEALLOCATE (R2SO4, R2SO4B)
1626      DEALLOCATE (DENSO4, DENSO4B)
1627      DEALLOCATE (f_r_wet, f_r_wetB)
1628      DEALLOCATE (decfluxaer)
1629      DEALLOCATE (mdw)
1630      DEALLOCATE (SO2_lifetime)
1631      DEALLOCATE (OCS_lifetime)
1632      DEALLOCATE (H2SO4_lifetime)
1633      DEALLOCATE (O3_clim)
1634      DEALLOCATE (alpha_bin)
1635      DEALLOCATE (piz_bin)
1636      DEALLOCATE (cg_bin)
1637      DEALLOCATE (tau_strat_550)
1638      DEALLOCATE (tau_strat_1020)
1639      DEALLOCATE (tausum_strat)
1640      DEALLOCATE (surf_PM25_sulf)
1641      DEALLOCATE (vsed_aer)
1642      DEALLOCATE (sulfmmr)
1643      DEALLOCATE (SAD_sulfate)
1644      DEALLOCATE (reff_sulfate)
1645      DEALLOCATE (sulfmmr_mode)
1646      DEALLOCATE (nd_mode)
1647      DEALLOCATE (budg_3D_ocs_to_so2)
1648      DEALLOCATE (budg_3D_so2_to_h2so4)
1649      DEALLOCATE (budg_3D_backgr_ocs)
1650      DEALLOCATE (budg_3D_backgr_so2)
1651      DEALLOCATE (budg_3D_nucl)
1652      DEALLOCATE (budg_3D_cond_evap)
1653      DEALLOCATE (budg_dep_dry_ocs)
1654      DEALLOCATE (budg_dep_wet_ocs)
1655      DEALLOCATE (budg_dep_dry_so2)
1656      DEALLOCATE (budg_dep_wet_so2)
1657      DEALLOCATE (budg_dep_dry_h2so4)
1658      DEALLOCATE (budg_dep_wet_h2so4)
1659      DEALLOCATE (budg_dep_dry_part)
1660      DEALLOCATE (budg_dep_wet_part)
1661      DEALLOCATE (budg_emi_ocs)
1662      DEALLOCATE (budg_emi_so2)
1663      DEALLOCATE (budg_emi_h2so4)
1664      DEALLOCATE (budg_emi_part)
1665      DEALLOCATE (budg_ocs_to_so2)
1666      DEALLOCATE (budg_so2_to_h2so4)
1667      DEALLOCATE (budg_h2so4_to_part)
1668      DEALLOCATE (budg_sed_part)
1669    END IF
1670
1671  END SUBROUTINE phys_local_var_end
1672
1673END MODULE phys_local_var_mod
Note: See TracBrowser for help on using the repository browser.