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

Last change on this file since 5119 was 5101, checked in by abarral, 4 months ago

Handle DEBUG_IO in lmdz_cppkeys_wrapper.F90
Transform some files .F -> .[fF]90
[ne compile pas à cause de writefield_u non défini - en attente de réponse Laurent]

  • 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: 67.8 KB
Line 
1
2! $Id: phys_local_var_mod.F90 5101 2024-07-23 06:22:55Z 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
404  !$OMP THREADPRIVATE(zxustartlic, zxrhoslic, zxqsaltlic)
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  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxrunofflic
410  !$OMP THREADPRIVATE(zxrunofflic)
411  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxqsurf, rain_lsc, rain_num
412  !$OMP THREADPRIVATE(zxqsurf, rain_lsc, rain_num)
413#ifdef ISO
414      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtevap,xtprw
415!$OMP THREADPRIVATE(xtevap,xtprw)
416      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: h1_diag,runoff_diag
417      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtrunoff_diag
418!$OMP THREADPRIVATE(h1_diag,runoff_diag,xtrunoff_diag)
419      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zxfxtcalving
420!$OMP THREADPRIVATE(zxfxtcalving)
421      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtsnow_lsc, zxfxtfonte
422!$OMP THREADPRIVATE(xtsnow_lsc, zxfxtfonte)
423      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zxxtrunofflic
424!$OMP THREADPRIVATE(zxxtrunofflic)
425      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtrain_lsc
426!$OMP THREADPRIVATE(xtrain_lsc)
427#endif
428
429  !jyg+nrlmd<
430  !!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
431  !                                                                          c
432  !       Declarations liees a la couche limite differentiee w-x             c
433  !                                                                          c
434  !!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
435  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: sens_x, sens_w
436  !$OMP THREADPRIVATE(sens_x, sens_w)
437  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxfluxlat_x, zxfluxlat_w
438  !$OMP THREADPRIVATE(zxfluxlat_x, zxfluxlat_w)
439  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: delta_qsurf
440  !$OMP THREADPRIVATE(delta_qsurf)
441  !jyg<
442  !!! Entrees supplementaires couche-limite
443  !!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t_x, t_w
444  !!!$OMP THREADPRIVATE(t_x, t_w)
445  !!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: q_x, q_w
446  !!!$OMP THREADPRIVATE(q_x, q_w)
447  !>jyg
448  !!! Sorties ferret
449  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: dtvdf_x, dtvdf_w
450  !$OMP THREADPRIVATE(dtvdf_x, dtvdf_w)
451  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: dqvdf_x, dqvdf_w
452  !$OMP THREADPRIVATE(dqvdf_x, dqvdf_w)
453  ! Variables supplementaires dans physiq.F relative au splitting de la surface
454  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: pbl_tke_input
455  !$OMP THREADPRIVATE(pbl_tke_input)
456  ! Entree supplementaire Thermiques :
457  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: t_therm, q_therm, u_therm, v_therm
458  !$OMP THREADPRIVATE(t_therm, q_therm, u_therm, v_therm)
459  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: cdragh_x, cdragh_w
460  !$OMP THREADPRIVATE(cdragh_x, cdragh_w)
461  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: cdragm_x, cdragm_w
462  !$OMP THREADPRIVATE(cdragm_x, cdragm_w)
463  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: kh, kh_x, kh_w
464  !$OMP THREADPRIVATE(kh, kh_x, kh_w)
465#ifdef ISO
466      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: dxtvdf_x, dxtvdf_w
467!$OMP THREADPRIVATE(dxtvdf_x, dxtvdf_w)
468      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: xt_therm
469!$OMP THREADPRIVATE(xt_therm)
470#endif
471  !!!
472  !!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
473  LOGICAL, SAVE, ALLOCATABLE :: ptconv(:, :)
474  !$OMP THREADPRIVATE(ptconv)
475  REAL, SAVE, ALLOCATABLE :: ratqsc(:, :)
476  !$OMP THREADPRIVATE(ratqsc)
477  !>jyg+nrlmd
478
479  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: wbeff, convoccur, zmax_th, zq2m, zt2m
480  !$OMP THREADPRIVATE(wbeff, convoccur, zmax_th, zq2m, zt2m)
481  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zt2m_min_mon, zt2m_max_mon
482  !$OMP THREADPRIVATE(zt2m_min_mon, zt2m_max_mon)
483  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: t2m_min_mon, t2m_max_mon
484  !$OMP THREADPRIVATE(t2m_min_mon, t2m_max_mon)
485  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: weak_inversion
486  !$OMP THREADPRIVATE(weak_inversion)
487  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: alp_bl_conv, alp_bl_det
488  !$OMP THREADPRIVATE(alp_bl_conv,alp_bl_det)
489  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: alp_bl_fluct_m, alp_bl_fluct_tke
490  !$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke)
491  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: alp_bl_stat, n2, s2, strig, zcong, zlcl_th
492  !$OMP THREADPRIVATE(alp_bl_stat, n2, s2, strig, zcong, zlcl_th)
493  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: proba_notrig, random_notrig
494  !$OMP THREADPRIVATE(proba_notrig, random_notrig)
495  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: fsolsw, wfbils
496  !$OMP THREADPRIVATE(fsolsw, wfbils)
497  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: wfevap
498  !$OMP THREADPRIVATE(wfevap)
499  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: t2m, fluxlat, fsollw, evap_pot
500  !$OMP THREADPRIVATE(t2m, fluxlat, fsollw,evap_pot)
501  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: dnwd0, omega
502  !$OMP THREADPRIVATE(dnwd0, omega)
503  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: epmax_diag ! epmax_cape
504  !$OMP THREADPRIVATE(epmax_diag)
505
506  !  Deep convective variables used in phytrac
507  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: ep ! epmax_cape
508  !$OMP THREADPRIVATE(ep)
509  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: dnwd, upwd
510  !$OMP THREADPRIVATE(dnwd, upwd)
511  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: pmflxr, pmflxs
512  !$OMP THREADPRIVATE(pmflxr, pmflxs)
513  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: wdtrainA, wdtrainS, wdtrainM
514  !$OMP THREADPRIVATE(wdtrainA, wdtrainS, wdtrainM)
515  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: da, mp
516  !$OMP THREADPRIVATE(da, mp)
517  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: wght_cvfd
518  !$OMP THREADPRIVATE(wght_cvfd)
519  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: phi, phi2, elij, epmlmMm
520  !$OMP THREADPRIVATE(phi, phi2, elij, epmlmMm)
521  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: d1a, dam
522  !$OMP THREADPRIVATE(d1a, dam)
523  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: ev
524  !$OMP THREADPRIVATE(ev)
525  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: qtaa
526  !$OMP THREADPRIVATE(qtaa)
527  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: clw
528  !$OMP THREADPRIVATE(clw)
529  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: eplaMm
530  !$OMP THREADPRIVATE(eplaMm)
531  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: sij
532  !$OMP THREADPRIVATE(sij)
533#ifdef ISO
534      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtwdtrainA
535!$OMP THREADPRIVATE(xtwdtrainA)
536      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtev
537!$OMP THREADPRIVATE(xtev)
538      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xttaa
539!$OMP THREADPRIVATE(xttaa)
540      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtclw
541!$OMP THREADPRIVATE(xtclw)
542#ifdef DIAGISO
543      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: qlp
544!$OMP THREADPRIVATE(qlp)
545      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: qvp
546!$OMP THREADPRIVATE(qvp)
547      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_detrainement
548!$OMP THREADPRIVATE(fq_detrainement)
549      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_ddft
550!$OMP THREADPRIVATE(fq_ddft)
551      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_fluxmasse
552!$OMP THREADPRIVATE(fq_fluxmasse)
553      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_evapprecip
554!$OMP THREADPRIVATE(fq_evapprecip)
555      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: f_detrainement
556!$OMP THREADPRIVATE(f_detrainement)
557      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: q_detrainement
558!$OMP THREADPRIVATE(q_detrainement)
559      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xt_detrainement
560!$OMP THREADPRIVATE(xt_detrainement)
561      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtlp
562!$OMP THREADPRIVATE(xtlp)
563      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtvp
564!$OMP THREADPRIVATE(xtvp)
565      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: q_the
566!$OMP THREADPRIVATE(q_the)
567      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xt_the
568!$OMP THREADPRIVATE(xt_the)
569      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_detrainement
570!$OMP THREADPRIVATE(fxt_detrainement)
571      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_ddft
572!$OMP THREADPRIVATE(fxt_ddft)
573      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_fluxmasse
574!$OMP THREADPRIVATE(fxt_fluxmasse)
575      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_evapprecip
576!$OMP THREADPRIVATE(fxt_evapprecip)
577#endif
578#endif
579
580  !      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th
581  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: lambda_th
582  !$OMP THREADPRIVATE(lambda_th)
583  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc
584  !$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc)
585  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: qlth, qith, qsith, wiceth
586  !$OMP THREADPRIVATE(qlth, qith, qsith, wiceth)
587  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: ref_liq, ref_ice, theta, zphi
588  !$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi)
589  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: ref_liq_pi, ref_ice_pi
590  !$OMP THREADPRIVATE(ref_liq_pi, ref_ice_pi)
591  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: zx_rh, zx_rhl, zx_rhi
592  !$OMP THREADPRIVATE(zx_rh, zx_rhl, zx_rhi)
593  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: prfl, psfl, fraca, bsfl
594  !$OMP THREADPRIVATE(prfl, psfl, fraca, bsfl)
595  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: Vprecip, zw2
596  !$OMP THREADPRIVATE(Vprecip, zw2)
597  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: pmfd, pmfu
598  !$OMP THREADPRIVATE(pmfd, pmfu)
599  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: fluxt, fluxu, fluxv
600  !$OMP THREADPRIVATE(fluxt, fluxu, fluxv)
601  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: uwriteSTD, vwriteSTD, wwriteSTD
602  !$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD)
603  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD
604  !$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD)
605
606
607  ! ug et d'autres encore:
608  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: beta_prec
609  !$OMP THREADPRIVATE(beta_prec)
610  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: rneb, rnebjn, rneblsvol
611  !$OMP THREADPRIVATE(rneb,rnebjn,rneblsvol)
612  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: pfraclr, pfracld
613  !$OMP THREADPRIVATE(pfraclr,pfracld)
614  REAL, SAVE, ALLOCATABLE :: cldfraliq(:, :)
615  !$OMP THREADPRIVATE(cldfraliq)
616  REAL, SAVE, ALLOCATABLE :: mean_icefracturb(:, :)
617  !$OMP THREADPRIVATE(mean_icefracturb)
618  REAL, SAVE, ALLOCATABLE :: sigma2_icefracturb(:, :)
619  !$OMP THREADPRIVATE(sigma2_icefracturb)
620
621  ! variables de sorties MM
622  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxsnow, snowhgt, qsnow, to_ice
623  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: sissnow, runoff, albsol3_lic
624  !$OMP THREADPRIVATE(zxsnow,snowhgt,qsnow,to_ice)
625  !$OMP THREADPRIVATE(sissnow,runoff,albsol3_lic)
626#ifdef ISO
627      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: zxxtsnow
628!$OMP THREADPRIVATE(zxxtsnow)     
629      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: xtVprecip,xtVprecipi
630!$OMP THREADPRIVATE(xtVprecip,xtVprecipi)
631      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: pxtrfl, pxtsfl
632!$OMP THREADPRIVATE(pxtrfl, pxtsfl)
633#endif
634
635  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: p_tropopause, z_tropopause, t_tropopause
636  !$OMP THREADPRIVATE(p_tropopause, z_tropopause, t_tropopause)
637
638  INTEGER, ALLOCATABLE, SAVE, DIMENSION(:, :) :: zn2mout
639  !$OMP THREADPRIVATE(zn2mout)
640
641  REAL, SAVE, ALLOCATABLE :: qclr(:, :)
642  !$OMP THREADPRIVATE(qclr)
643  REAL, SAVE, ALLOCATABLE :: qcld(:, :)
644  !$OMP THREADPRIVATE(qcld)
645  REAL, SAVE, ALLOCATABLE :: qss(:, :)
646  !$OMP THREADPRIVATE(qss)
647  REAL, SAVE, ALLOCATABLE :: qvc(:, :)
648  !$OMP THREADPRIVATE(qvc)
649  REAL, SAVE, ALLOCATABLE :: rnebclr(:, :)
650  !$OMP THREADPRIVATE(rnebclr)
651  REAL, SAVE, ALLOCATABLE :: rnebss(:, :)
652  !$OMP THREADPRIVATE(rnebss)
653  REAL, SAVE, ALLOCATABLE :: gamma_ss(:, :)
654  !$OMP THREADPRIVATE(gamma_ss)
655  REAL, SAVE, ALLOCATABLE :: N1_ss(:, :)
656  !$OMP THREADPRIVATE(N1_ss)
657  REAL, SAVE, ALLOCATABLE :: N2_ss(:, :)
658  !$OMP THREADPRIVATE(N2_ss)
659  REAL, SAVE, ALLOCATABLE :: drneb_sub(:, :)
660  !$OMP THREADPRIVATE(drneb_sub)
661  REAL, SAVE, ALLOCATABLE :: drneb_con(:, :)
662  !$OMP THREADPRIVATE(drneb_con)
663  REAL, SAVE, ALLOCATABLE :: drneb_tur(:, :)
664  !$OMP THREADPRIVATE(drneb_tur)
665  REAL, SAVE, ALLOCATABLE :: drneb_avi(:, :)
666  !$OMP THREADPRIVATE(drneb_avi)
667  REAL, SAVE, ALLOCATABLE :: zqsatl(:, :)
668  !$OMP THREADPRIVATE(zqsatl)
669  REAL, SAVE, ALLOCATABLE :: zqsats(:, :)
670  !$OMP THREADPRIVATE(zqsats)
671  REAL, SAVE, ALLOCATABLE :: Tcontr(:, :)
672  !$OMP THREADPRIVATE(Tcontr)
673  REAL, SAVE, ALLOCATABLE :: qcontr(:, :)
674  !$OMP THREADPRIVATE(qcontr)
675  REAL, SAVE, ALLOCATABLE :: qcontr2(:, :)
676  !$OMP THREADPRIVATE(qcontr2)
677  REAL, SAVE, ALLOCATABLE :: fcontrN(:, :)
678  !$OMP THREADPRIVATE(fcontrN)
679  REAL, SAVE, ALLOCATABLE :: fcontrP(:, :)
680  !$OMP THREADPRIVATE(fcontrP)
681  REAL, SAVE, ALLOCATABLE :: distcltop(:, :)
682  !$OMP THREADPRIVATE(distcltop)
683  REAL, SAVE, ALLOCATABLE :: temp_cltop(:, :)
684  !$OMP THREADPRIVATE(temp_cltop)
685
686
687  !--POPRECIP variables
688  REAL, SAVE, ALLOCATABLE :: qraindiag(:, :)
689  !$OMP THREADPRIVATE(qraindiag)
690  REAL, SAVE, ALLOCATABLE :: qsnowdiag(:, :)
691  !$OMP THREADPRIVATE(qsnowdiag)
692  REAL, SAVE, ALLOCATABLE :: dqreva(:, :)
693  !$OMP THREADPRIVATE(dqreva)
694  REAL, SAVE, ALLOCATABLE :: dqrauto(:, :)
695  !$OMP THREADPRIVATE(dqrauto)
696  REAL, SAVE, ALLOCATABLE :: dqrcol(:, :)
697  !$OMP THREADPRIVATE(dqrcol)
698  REAL, SAVE, ALLOCATABLE :: dqrmelt(:, :)
699  !$OMP THREADPRIVATE(dqrmelt)
700  REAL, SAVE, ALLOCATABLE :: dqrfreez(:, :)
701  !$OMP THREADPRIVATE(dqrfreez)
702  REAL, SAVE, ALLOCATABLE :: dqssub(:, :)
703  !$OMP THREADPRIVATE(dqssub)
704  REAL, SAVE, ALLOCATABLE :: dqsauto(:, :)
705  !$OMP THREADPRIVATE(dqsauto)
706  REAL, SAVE, ALLOCATABLE :: dqsagg(:, :)
707  !$OMP THREADPRIVATE(dqsagg)
708  REAL, SAVE, ALLOCATABLE :: dqsrim(:, :)
709  !$OMP THREADPRIVATE(dqsrim)
710  REAL, SAVE, ALLOCATABLE :: dqsmelt(:, :)
711  !$OMP THREADPRIVATE(dqsmelt)
712  REAL, SAVE, ALLOCATABLE :: dqsfreez(:, :)
713  !$OMP THREADPRIVATE(dqsfreez)
714
715  ! variables for stratospheric aerosol
716  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: d_q_emiss
717  !$OMP THREADPRIVATE(d_q_emiss)
718  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: R2SO4
719  !$OMP THREADPRIVATE(R2SO4)
720  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: R2SO4B
721  !$OMP THREADPRIVATE(R2SO4B)
722  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: DENSO4
723  !$OMP THREADPRIVATE(DENSO4)
724  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: DENSO4B
725  !$OMP THREADPRIVATE(DENSO4B)
726  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: f_r_wet
727  !$OMP THREADPRIVATE(f_r_wet)
728  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: f_r_wetB
729  !$OMP THREADPRIVATE(f_r_wetB)
730  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: decfluxaer
731  !$OMP THREADPRIVATE(decfluxaer)
732  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: mdw
733  !$OMP THREADPRIVATE(mdw)
734  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: OCS_lifetime
735  !$OMP THREADPRIVATE(OCS_lifetime)
736  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: SO2_lifetime
737  !$OMP THREADPRIVATE(SO2_lifetime)
738  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: H2SO4_lifetime
739  !$OMP THREADPRIVATE(H2SO4_lifetime)
740  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: O3_clim
741  !$OMP THREADPRIVATE(O3_clim)
742  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: alpha_bin
743  !$OMP THREADPRIVATE(alpha_bin)
744  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: piz_bin
745  !$OMP THREADPRIVATE(piz_bin)
746  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: cg_bin
747  !$OMP THREADPRIVATE(cg_bin)
748  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: tau_strat_550
749  !$OMP THREADPRIVATE(tau_strat_550)
750  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: tau_strat_1020
751  !$OMP THREADPRIVATE(tau_strat_1020)
752  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: tausum_strat
753  !$OMP THREADPRIVATE(tausum_strat)
754  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: surf_PM25_sulf
755  !$OMP THREADPRIVATE(surf_PM25_sulf)
756  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: vsed_aer
757  !$OMP THREADPRIVATE(vsed_aer)
758  !     Sulfate aerosol concentration (dry mixing ratio) (condensed H2SO4 mmr)
759  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: sulfmmr
760  !$OMP THREADPRIVATE(sulfmmr)
761  !     SAD all aerosols (cm2/cm3)
762  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: SAD_sulfate
763  !$OMP THREADPRIVATE(SAD_sulfate)
764  !     sulfate MMR in different modes (based on sulfmmr, it must be dry mmr)
765  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: sulfmmr_mode
766  !$OMP THREADPRIVATE(sulfmmr_mode)
767  !     particle concentration in different modes (part/m3)
768  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :, :) :: nd_mode
769  !$OMP THREADPRIVATE(nd_mode)
770
771  !---3D budget variables
772  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_nucl
773  !$OMP THREADPRIVATE(budg_3D_nucl)
774  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_cond_evap
775  !$OMP THREADPRIVATE(budg_3D_cond_evap)
776  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_ocs_to_so2
777  !$OMP THREADPRIVATE(budg_3D_ocs_to_so2)
778  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_so2_to_h2so4
779  !$OMP THREADPRIVATE(budg_3D_so2_to_h2so4)
780  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_backgr_ocs
781  !$OMP THREADPRIVATE(budg_3D_backgr_ocs)
782  REAL, ALLOCATABLE, SAVE, DIMENSION(:, :) :: budg_3D_backgr_so2
783  !$OMP THREADPRIVATE(budg_3D_backgr_so2)
784
785  !---2D budget variables
786  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_ocs
787  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_so2
788  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_h2so4
789  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_part
790  !$OMP THREADPRIVATE(budg_dep_dry_ocs,budg_dep_dry_so2,budg_dep_dry_h2so4,budg_dep_dry_part)
791  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_ocs
792  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_so2
793  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_h2so4
794  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_part
795  !$OMP THREADPRIVATE(budg_dep_wet_ocs,budg_dep_wet_so2,budg_dep_wet_h2so4,budg_dep_wet_part)
796  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_ocs
797  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_so2
798  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_h2so4
799  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_part
800  !$OMP THREADPRIVATE(budg_emi_ocs,budg_emi_so2,budg_emi_h2so4,budg_emi_part)
801  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_ocs_to_so2
802  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_so2_to_h2so4
803  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_h2so4_to_part
804  !$OMP THREADPRIVATE(budg_ocs_to_so2,budg_so2_to_h2so4,budg_h2so4_to_part)
805  REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_sed_part
806  !$OMP THREADPRIVATE(budg_sed_part)
807#ifdef REPROBUS
808      REAL,SAVE,ALLOCATABLE    :: d_q_emiss(:,:)
809!$OMP THREADPRIVATE(d_q_emiss)
810#endif
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    ALLOCATE(zxrunofflic(klon))
1049    ALLOCATE(zxustartlic(klon), zxrhoslic(klon), zxqsaltlic(klon))
1050    zxustartlic(:) = 0. ; zxrhoslic(:) = 0. ; zxqsaltlic(:) = 0.
1051    ALLOCATE(rain_lsc(klon))
1052    ALLOCATE(rain_num(klon))
1053    ALLOCATE(qlth(klon, klev), qith(klon, klev), qsith(klon, klev), wiceth(klon, klev))
1054
1055#ifdef ISO
1056      ALLOCATE(xtevap(ntraciso,klon))
1057      ALLOCATE(xtprw(ntraciso,klon))
1058      ALLOCATE(zxfxtcalving(niso,klon))
1059      ALLOCATE(xtsnow_lsc(ntraciso,klon), zxfxtfonte(niso,klon))
1060      ALLOCATE(zxxtrunofflic(niso,klon))
1061      ALLOCATE(xtrain_lsc(ntraciso,klon))
1062      ALLOCATE(xtrunoff_diag(niso,klon))
1063      ALLOCATE(h1_diag(klon),runoff_diag(klon))
1064!SN
1065      runoff_diag(:)=0. ; xtrunoff_diag(:,:)=0. ! because variables are only given values on knon grid points
1066#endif
1067
1068    ALLOCATE(sens_x(klon), sens_w(klon))
1069    ALLOCATE(zxfluxlat_x(klon), zxfluxlat_w(klon))
1070    ALLOCATE(delta_qsurf(klon))
1071    !jyg<
1072    !!      ALLOCATE(t_x(klon,klev), t_w(klon,klev))
1073    !!      ALLOCATE(q_x(klon,klev), q_w(klon,klev))
1074    !>jyg
1075    ALLOCATE(dtvdf_x(klon, klev), dtvdf_w(klon, klev))
1076    dtvdf_x = 0 ; dtvdf_w = 0 ;
1077    !ym missing init
1078    ALLOCATE(dqvdf_x(klon, klev), dqvdf_w(klon, klev))
1079    dqvdf_x = 0 ; dqvdf_w = 0 ;
1080    !ym missing init
1081    ALLOCATE(pbl_tke_input(klon, klev + 1, nbsrf))
1082    ALLOCATE(t_therm(klon, klev), q_therm(klon, klev), u_therm(klon, klev), v_therm(klon, klev))
1083    ALLOCATE(cdragh_x(klon), cdragh_w(klon))
1084    ALLOCATE(cdragm_x(klon), cdragm_w(klon))
1085    ALLOCATE(kh(klon), kh_x(klon), kh_w(klon))
1086#ifdef ISO
1087      ALLOCATE(dxtvdf_x(ntraciso,klon,klev), dxtvdf_w(ntraciso,klon,klev))
1088      ALLOCATE(xt_therm(ntraciso,klon,klev))
1089#endif
1090
1091    ALLOCATE(ptconv(klon, klev))
1092    ALLOCATE(ratqsc(klon, klev))
1093
1094    ALLOCATE(wbeff(klon), convoccur(klon), zmax_th(klon))
1095    ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon))
1096    ALLOCATE(zt2m_min_mon(klon), zt2m_max_mon(klon))
1097    ALLOCATE(t2m_min_mon(klon), t2m_max_mon(klon))
1098    ALLOCATE(sens(klon), flwp(klon), fiwp(klon))
1099    ALLOCATE(alp_bl_conv(klon), alp_bl_det(klon))
1100    alp_bl_conv(:) = 0 ;  alp_bl_det(:) = 0
1101    ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon))
1102    alp_bl_fluct_m(:) = 0 ; alp_bl_fluct_tke(:) = 0.
1103    ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon), strig(klon), zcong(klon), zlcl_th(klon))
1104    alp_bl_stat(:) = 0
1105    ALLOCATE(proba_notrig(klon), random_notrig(klon))
1106
1107    ALLOCATE(dnwd0(klon, klev))
1108    !      ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev))
1109    ALLOCATE(omega(klon, klev))
1110    ALLOCATE(epmax_diag(klon)) ! epmax_cape
1111    !      ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev))
1112    ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev))
1113    ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev))
1114    ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev))
1115    ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev))
1116    ALLOCATE(ref_liq_pi(klon, klev), ref_ice_pi(klon, klev))
1117    ALLOCATE(zphi(klon, klev), zx_rh(klon, klev), zx_rhl(klon, klev), zx_rhi(klon, klev))
1118    zx_rhl(:, :) = 0.; zx_rhi(:, :) = 0. ! because not always defined
1119    ALLOCATE(pmfd(klon, klev), pmfu(klon, klev))
1120
1121    ALLOCATE(t2m(klon, nbsrf), fluxlat(klon, nbsrf))
1122    ALLOCATE(fsollw(klon, nbsrf))
1123    ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf))
1124    ALLOCATE(wfevap(klon, nbsrf))
1125    ALLOCATE(evap_pot(klon, nbsrf))
1126    ! FC
1127    ALLOCATE(zxfluxq(klon, klev), zxfluxt(klon, klev))
1128
1129    !  Deep convective variables used in phytrac
1130    ALLOCATE(pmflxr(klon, klev + 1), pmflxs(klon, klev + 1))
1131    ALLOCATE(wdtrainA(klon, klev), wdtrainS(klon, klev), wdtrainM(klon, klev))
1132    ALLOCATE(dnwd(klon, klev), upwd(klon, klev))
1133    ALLOCATE(ep(klon, klev))                          ! epmax_cape
1134    ALLOCATE(da(klon, klev), mp(klon, klev))
1135    ALLOCATE(phi(klon, klev, klev))
1136    ALLOCATE(wght_cvfd(klon, klev))
1137    ALLOCATE(phi2(klon, klev, klev))
1138    ALLOCATE(d1a(klon, klev), dam(klon, klev))
1139    ALLOCATE(ev(klon, klev))
1140    ALLOCATE(elij(klon, klev, klev))
1141    ALLOCATE(qtaa(klon, klev))
1142    ALLOCATE(clw(klon, klev))
1143    ALLOCATE(epmlmMm(klon, klev, klev), eplaMm(klon, klev))
1144    ALLOCATE(sij(klon, klev, klev))
1145#ifdef ISO
1146      ALLOCATE(xtwdtrainA(ntraciso,klon,klev))
1147      ALLOCATE(xtev(ntraciso,klon,klev) )
1148      ALLOCATE(xttaa(ntraciso,klon,klev) )
1149      ALLOCATE(xtclw(ntraciso,klon,klev) )
1150#ifdef DIAGISO
1151      ALLOCATE(qlp(klon,klev))
1152      ALLOCATE(qvp(klon,klev))
1153      ALLOCATE(fq_detrainement(klon,klev))
1154      ALLOCATE(fq_ddft(klon,klev))
1155      ALLOCATE(fq_fluxmasse(klon,klev))
1156      ALLOCATE(fq_evapprecip(klon,klev))
1157      ALLOCATE(f_detrainement(klon,klev), q_detrainement(klon,klev))
1158      ALLOCATE(xtlp(ntraciso,klon,klev))
1159      ALLOCATE(xtvp(ntraciso,klon,klev))
1160      ALLOCATE(q_the(klon,klev), xt_the(ntraciso,klon,klev))
1161      ALLOCATE(fxt_detrainement(ntraciso,klon,klev))
1162      ALLOCATE(fxt_ddft(ntraciso,klon,klev))
1163      ALLOCATE(fxt_fluxmasse(ntraciso,klon,klev))
1164      ALLOCATE(fxt_evapprecip(ntraciso,klon,klev))
1165      ALLOCATE(xt_detrainement(ntraciso,klon,klev))
1166#endif
1167#endif
1168
1169    ALLOCATE(prfl(klon, klev + 1))
1170    ALLOCATE(psfl(klon, klev + 1), fraca(klon, klev + 1), Vprecip(klon, klev + 1))
1171    ALLOCATE(bsfl(klon, klev + 1))
1172    ALLOCATE(zw2(klon, klev + 1))
1173
1174    ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf))
1175    ALLOCATE(fluxt(klon, klev, nbsrf))
1176
1177    ALLOCATE(uwriteSTD(klon, nlevSTD, nfiles), vwriteSTD(klon, nlevSTD, nfiles))
1178    ALLOCATE(wwriteSTD(klon, nlevSTD, nfiles), phiwriteSTD(klon, nlevSTD, nfiles))
1179    ALLOCATE(qwriteSTD(klon, nlevSTD, nfiles), twriteSTD(klon, nlevSTD, nfiles))
1180    ALLOCATE(rhwriteSTD(klon, nlevSTD, nfiles))
1181
1182    ! ug et d'autres encore:
1183    ALLOCATE(beta_prec(klon, klev))
1184    ALLOCATE(rneb(klon, klev), rnebjn(klon, klev), rneblsvol(klon, klev))
1185    ALLOCATE(pfraclr(klon, klev), pfracld(klon, klev))
1186    pfraclr(:, :) = 0. ; pfracld(:, :) = 0. ! because not always defined
1187    ALLOCATE(cldfraliq(klon, klev))
1188    ALLOCATE(sigma2_icefracturb(klon, klev))
1189    ALLOCATE(mean_icefracturb(klon, klev))
1190    ALLOCATE(distcltop(klon, klev))
1191    ALLOCATE(temp_cltop(klon, klev))
1192
1193    ALLOCATE (zxsnow(klon), snowhgt(klon), qsnow(klon), to_ice(klon))
1194    ALLOCATE (sissnow(klon), runoff(klon), albsol3_lic(klon))
1195#ifdef ISO
1196      ALLOCATE (zxxtsnow(niso,klon))
1197      ALLOCATE(xtVprecip(ntraciso,klon, klev+1),xtVprecipi(ntraciso,klon, klev+1))
1198      ALLOCATE(pxtsfl(ntraciso,klon, klev+1),pxtrfl(ntraciso,klon, klev+1))
1199#endif
1200
1201    ALLOCATE (p_tropopause(klon))
1202    ALLOCATE (z_tropopause(klon))
1203    ALLOCATE (t_tropopause(klon))
1204
1205    ALLOCATE(zn2mout(klon, 6))
1206
1207    ! Supersaturation
1208    ALLOCATE(rneb_seri(klon, klev))
1209    ALLOCATE(d_rneb_dyn(klon, klev))
1210    ALLOCATE(qclr(klon, klev), qcld(klon, klev), qss(klon, klev), qvc(klon, klev))
1211    ALLOCATE(rnebclr(klon, klev), rnebss(klon, klev), gamma_ss(klon, klev))
1212    ALLOCATE(N1_ss(klon, klev), N2_ss(klon, klev))
1213    ALLOCATE(drneb_sub(klon, klev), drneb_con(klon, klev), drneb_tur(klon, klev), drneb_avi(klon, klev))
1214    ALLOCATE(zqsatl(klon, klev), zqsats(klon, klev))
1215    ALLOCATE(Tcontr(klon, klev), qcontr(klon, klev), qcontr2(klon, klev), fcontrN(klon, klev), fcontrP(klon, klev))
1216
1217    !--POPRECIP variables
1218    ALLOCATE(qraindiag(klon, klev), qsnowdiag(klon, klev))
1219    ALLOCATE(dqreva(klon, klev), dqssub(klon, klev))
1220    ALLOCATE(dqrauto(klon, klev), dqrcol(klon, klev), dqrmelt(klon, klev), dqrfreez(klon, klev))
1221    ALLOCATE(dqsauto(klon, klev), dqsagg(klon, klev), dqsrim(klon, klev), dqsmelt(klon, klev), dqsfreez(klon, klev))
1222
1223    IF (CPPKEY_STRATAER) THEN
1224      ALLOCATE (d_q_emiss(klon, klev))
1225      ALLOCATE (R2SO4(klon, klev))
1226      ALLOCATE (R2SO4B(klon, klev, nbtr_bin))
1227      ALLOCATE (DENSO4(klon, klev))
1228      ALLOCATE (DENSO4B(klon, klev, nbtr_bin))
1229      ALLOCATE (f_r_wet(klon, klev))
1230      ALLOCATE (f_r_wetB(klon, klev, nbtr_bin))
1231      ALLOCATE (decfluxaer(klon, nbtr))
1232      ALLOCATE (mdw(nbtr))
1233      ALLOCATE (budg_3D_nucl(klon, klev))
1234      ALLOCATE (budg_3D_cond_evap(klon, klev))
1235      ALLOCATE (budg_3D_ocs_to_so2(klon, klev))
1236      ALLOCATE (budg_3D_so2_to_h2so4(klon, klev))
1237      ALLOCATE (budg_3D_backgr_ocs(klon, klev))
1238      ALLOCATE (budg_3D_backgr_so2(klon, klev))
1239      ALLOCATE (OCS_lifetime(klon, klev))
1240      ALLOCATE (SO2_lifetime(klon, klev))
1241      ALLOCATE (H2SO4_lifetime(klon, klev))
1242      ALLOCATE (O3_clim(klon, klev))
1243      ALLOCATE (alpha_bin(nbands_sw_rrtm + nbands_lw_rrtm + nwave, nbtr))
1244      ALLOCATE (piz_bin(nbands_sw_rrtm + nbands_lw_rrtm + nwave, nbtr))
1245      ALLOCATE (cg_bin(nbands_sw_rrtm + nbands_lw_rrtm + nwave, nbtr))
1246      ALLOCATE (tau_strat_550(klon, klev))
1247      ALLOCATE (tau_strat_1020(klon, klev))
1248      ALLOCATE (tausum_strat(klon, 3))
1249      ALLOCATE (budg_dep_dry_ocs(klon))
1250      ALLOCATE (budg_dep_wet_ocs(klon))
1251      ALLOCATE (budg_dep_dry_so2(klon))
1252      ALLOCATE (budg_dep_wet_so2(klon))
1253      ALLOCATE (budg_dep_dry_h2so4(klon))
1254      ALLOCATE (budg_dep_wet_h2so4(klon))
1255      ALLOCATE (budg_dep_dry_part(klon))
1256      ALLOCATE (budg_dep_wet_part(klon))
1257      ALLOCATE (budg_emi_ocs(klon))
1258      ALLOCATE (budg_emi_so2(klon))
1259      ALLOCATE (budg_emi_h2so4(klon))
1260      ALLOCATE (budg_emi_part(klon))
1261      ALLOCATE (budg_ocs_to_so2(klon))
1262      ALLOCATE (budg_so2_to_h2so4(klon))
1263      ALLOCATE (budg_h2so4_to_part(klon))
1264      ALLOCATE (budg_sed_part(klon))
1265      ALLOCATE (surf_PM25_sulf(klon))
1266      ALLOCATE (vsed_aer(klon, klev))
1267      ALLOCATE (sulfmmr(klon, klev))
1268      ALLOCATE (SAD_sulfate(klon, klev))
1269      ALLOCATE (sulfmmr_mode(klon, klev, nbtr_bin))
1270      ALLOCATE (nd_mode(klon, klev, nbtr_bin))
1271    END IF
1272
1273  END SUBROUTINE phys_local_var_init
1274
1275  !======================================================================
1276  SUBROUTINE phys_local_var_end
1277    USE dimphy
1278    USE indice_sol_mod
1279    IMPLICIT NONE
1280    DEALLOCATE(t_seri, q_seri, ql_seri, qs_seri, qbs_seri)
1281    ! SN 4D ISO
1282    DEALLOCATE(qx_seri)
1283    ! SN
1284    DEALLOCATE(u_seri, v_seri)
1285    DEALLOCATE(l_mixmin, l_mix, wprime)
1286    DEALLOCATE(tke_shear, tke_buoy, tke_trans)
1287    DEALLOCATE(pbl_eps)
1288    DEALLOCATE(rhcl)
1289    DEALLOCATE(tr_seri)
1290    DEALLOCATE(d_t_dyn, d_q_dyn)
1291    DEALLOCATE(d_ql_dyn, d_qs_dyn, d_qbs_dyn)
1292    DEALLOCATE(d_q_dyn2d, d_ql_dyn2d, d_qs_dyn2d, d_qbs_dyn2d)
1293    DEALLOCATE(d_u_dyn, d_v_dyn)
1294    DEALLOCATE(d_tr_dyn)                      !RomP
1295    DEALLOCATE(d_t_con, d_q_con, d_q_con_zmasse)
1296    DEALLOCATE(d_u_con, d_v_con)
1297    DEALLOCATE(d_t_wake, d_q_wake)
1298    DEALLOCATE(d_t_lsc, d_q_lsc)
1299    DEALLOCATE(d_t_lwr, d_t_lw0)
1300    DEALLOCATE(d_t_swr, d_t_sw0)
1301    DEALLOCATE(d_ql_lsc, d_qi_lsc)
1302    DEALLOCATE(d_t_ajsb, d_q_ajsb)
1303    DEALLOCATE(d_t_ajs, d_q_ajs)
1304    !nrlmd<
1305    DEALLOCATE(d_t_ajs_w, d_q_ajs_w)
1306    DEALLOCATE(d_t_ajs_x, d_q_ajs_x)
1307    !>nrlmd
1308    DEALLOCATE(d_u_ajs, d_v_ajs)
1309    DEALLOCATE(d_t_eva, d_q_eva)
1310    ! SN 4D ISO
1311    DEALLOCATE(d_qx_eva)
1312    ! SN
1313    DEALLOCATE(d_ql_eva, d_qi_eva)
1314    DEALLOCATE(d_t_lscst, d_q_lscst)
1315    DEALLOCATE(d_t_lscth, d_q_lscth)
1316    DEALLOCATE(plul_st, plul_th)
1317    DEALLOCATE(d_t_vdf, d_q_vdf, d_t_diss)
1318    DEALLOCATE(d_qbs_vdf)
1319    DEALLOCATE(d_t_bsss, d_q_bsss, d_qbs_bsss)
1320#ifdef ISO
1321      deallocate(xt_seri,xtl_seri,xts_seri,xtbs_seri)
1322      DEALLOCATE(d_xtl_eva,d_xti_eva)
1323      deallocate(d_xt_dyn,d_xtl_dyn,d_xts_dyn,d_xtbs_dyn)
1324      deallocate(d_xt_con)
1325      deallocate(d_xt_wake)
1326      deallocate(d_xt_lsc)
1327      deallocate(d_xtl_lsc,d_xti_lsc)
1328      deallocate(d_xt_ajsb)
1329      deallocate(d_xt_ajs)
1330      deallocate(d_xt_ajs_w,d_xt_ajs_x)
1331      deallocate(d_xt_eva)
1332      deallocate(d_xtl_eva)
1333      deallocate(d_xti_eva)
1334      deallocate(d_xt_vdf)
1335      deallocate(d_xt_vdf_w,d_xt_vdf_x)
1336      deallocate(d_xt_ch4)
1337      deallocate(d_xt_prod_nucl)
1338      deallocate(d_xt_cosmo)
1339      deallocate(d_xt_decroiss)
1340#endif
1341
1342    DEALLOCATE(d_u_vdf, d_v_vdf)
1343    DEALLOCATE(d_t_oli, d_t_oro)
1344    DEALLOCATE(d_u_oli, d_v_oli)
1345    DEALLOCATE(d_u_oro, d_v_oro)
1346    DEALLOCATE(d_t_oro_gw)
1347    DEALLOCATE(d_u_oro_gw, d_v_oro_gw)
1348    DEALLOCATE(d_t_lif, d_t_ec)
1349    DEALLOCATE(d_u_lif, d_v_lif)
1350    DEALLOCATE(d_ts, d_tr)
1351    DEALLOCATE(topswad_aero, solswad_aero)
1352    DEALLOCATE(topswai_aero, solswai_aero)
1353    DEALLOCATE(topswad0_aero, solswad0_aero)
1354    DEALLOCATE(toplwad_aero, sollwad_aero)
1355    DEALLOCATE(toplwai_aero, sollwai_aero)
1356    DEALLOCATE(toplwad0_aero, sollwad0_aero)
1357    DEALLOCATE(topsw_aero, solsw_aero)
1358    DEALLOCATE(topsw0_aero, solsw0_aero)
1359    DEALLOCATE(topswcf_aero, solswcf_aero)
1360    DEALLOCATE(stratomask)
1361    DEALLOCATE(tausum_aero)
1362    DEALLOCATE(drytausum_aero)
1363    DEALLOCATE(tau3d_aero)
1364    DEALLOCATE(dNovrN)
1365    DEALLOCATE(zfice)
1366    DEALLOCATE(od443aer)
1367    DEALLOCATE(od550aer)
1368    DEALLOCATE(od865aer)
1369    DEALLOCATE(dryod550aer)
1370    DEALLOCATE(abs550aer)
1371    DEALLOCATE(ec550aer)
1372    DEALLOCATE(od550lt1aer)
1373    DEALLOCATE(sconcso4)
1374    DEALLOCATE(sconcno3)
1375    DEALLOCATE(sconcoa)
1376    DEALLOCATE(sconcbc)
1377    DEALLOCATE(sconcss)
1378    DEALLOCATE(sconcdust)
1379    DEALLOCATE(concso4)
1380    DEALLOCATE(concno3)
1381    DEALLOCATE(concoa)
1382    DEALLOCATE(concbc)
1383    DEALLOCATE(concss)
1384    DEALLOCATE(concdust)
1385    DEALLOCATE(loadso4)
1386    DEALLOCATE(loadoa)
1387    DEALLOCATE(loadbc)
1388    DEALLOCATE(loadss)
1389    DEALLOCATE(loaddust)
1390    DEALLOCATE(loadno3)
1391    DEALLOCATE(load_tmp1)
1392    DEALLOCATE(load_tmp2)
1393    DEALLOCATE(load_tmp3)
1394    DEALLOCATE(load_tmp4)
1395    DEALLOCATE(load_tmp5)
1396    DEALLOCATE(load_tmp6)
1397    DEALLOCATE(load_tmp7)
1398    DEALLOCATE(load_tmp8)
1399    DEALLOCATE(load_tmp9)
1400    DEALLOCATE(load_tmp10)
1401    DEALLOCATE(du_gwd_hines, dv_gwd_hines, d_t_hin)
1402    DEALLOCATE(d_q_ch4)
1403    DEALLOCATE(dv_gwd_rando, dv_gwd_front)
1404    DEALLOCATE(east_gwstress, west_gwstress)
1405
1406    !IM ajout variables CFMIP2/CMIP5
1407    DEALLOCATE(topswad_aerop, solswad_aerop)
1408    DEALLOCATE(topswai_aerop, solswai_aerop)
1409    DEALLOCATE(topswad0_aerop, solswad0_aerop)
1410    DEALLOCATE(topsw_aerop, topsw0_aerop)
1411    DEALLOCATE(solsw_aerop, solsw0_aerop)
1412    DEALLOCATE(topswcf_aerop, solswcf_aerop)
1413    !CK LW diagnostics
1414    DEALLOCATE(toplwad_aerop, sollwad_aerop)
1415    DEALLOCATE(toplwai_aerop, sollwai_aerop)
1416    DEALLOCATE(toplwad0_aerop, sollwad0_aerop)
1417
1418    !AI Ajout pour Ecrad (3Deffect)
1419    DEALLOCATE(topswad_aero_s2, solswad_aero_s2)
1420    DEALLOCATE(topswai_aero_s2, solswai_aero_s2)
1421    DEALLOCATE(topswad0_aero_s2, solswad0_aero_s2)
1422    DEALLOCATE(topsw_aero_s2, topsw0_aero_s2)
1423    DEALLOCATE(solsw_aero_s2, solsw0_aero_s2)
1424    DEALLOCATE(topswcf_aero_s2, solswcf_aero_s2)
1425    !CK LW diagnostics
1426    DEALLOCATE(toplwad_aero_s2, sollwad_aero_s2)
1427    DEALLOCATE(toplwai_aero_s2, sollwai_aero_s2)
1428    DEALLOCATE(toplwad0_aero_s2, sollwad0_aero_s2)
1429
1430    ! FH Ajout de celles necessaires au phys_output_write_mod
1431    DEALLOCATE(tal1, pal1, pab1, pab2)
1432    DEALLOCATE(ptstar, pt0, slp)
1433
1434    DEALLOCATE(alp_wake)
1435    DEALLOCATE(wake_h, wake_k)
1436    DEALLOCATE(wake_omg)
1437    DEALLOCATE(d_deltat_wk, d_deltaq_wk)
1438    DEALLOCATE(d_s_wk, d_s_a_wk, d_dens_wk, d_dens_a_wk)
1439    DEALLOCATE(d_deltat_wk_gw, d_deltaq_wk_gw)
1440    DEALLOCATE(d_deltat_vdf, d_deltaq_vdf)
1441    !!      DEALLOCATE( d_s_vdf, d_dens_vdf)
1442    DEALLOCATE(d_deltat_the, d_deltaq_the)
1443    !!      DEALLOCATE( d_s_the, d_dens_the)
1444    DEALLOCATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)
1445#ifdef ISO
1446      DEALLOCATE(d_deltaxt_wk)
1447      DEALLOCATE(d_deltaxt_wk_gw)
1448      DEALLOCATE(d_deltaxt_ajs_cv)
1449      DEALLOCATE(d_deltaxt_vdf)
1450#endif
1451
1452    DEALLOCATE(bils)
1453    DEALLOCATE(cdragm, cdragh, cldh, cldl)
1454    DEALLOCATE(cldm, cldq, cldt, qsat2m)
1455    DEALLOCATE(JrNt)
1456    DEALLOCATE(dthmin, evap, snowerosion, fder, plcl, plfc)
1457    DEALLOCATE(prw, prlw, prsw, prbsw, water_budget, zustar, zu10m, zv10m, rh2m, s_lcl)
1458    DEALLOCATE(s_pblh, s_pblt, s_therm)
1459
1460    !nrlmd+jyg<
1461    DEALLOCATE(s_pblh_x, s_pblh_w)
1462    DEALLOCATE(s_lcl_x, s_lcl_w)
1463    !>nrlmd+jyg
1464
1465    DEALLOCATE(slab_wfbils, tpot, tpote, ue)
1466    DEALLOCATE(uq, ve, vq, zxffonte)
1467    DEALLOCATE(uwat, vwat)
1468    DEALLOCATE(zxfqcalving, zxfluxlat)
1469    DEALLOCATE(zxrunofflic)
1470    DEALLOCATE(zxustartlic, zxrhoslic, zxqsaltlic)
1471    DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
1472    DEALLOCATE(rain_lsc)
1473    DEALLOCATE(rain_num)
1474    DEALLOCATE(qlth, qith, qsith, wiceth)
1475
1476    DEALLOCATE(sens_x, sens_w)
1477    DEALLOCATE(zxfluxlat_x, zxfluxlat_w)
1478    DEALLOCATE(delta_qsurf)
1479    !jyg<
1480    !!      DEALLOCATE(t_x, t_w)
1481    !!      DEALLOCATE(q_x, q_w)
1482    !>jyg
1483    DEALLOCATE(d_t_vdf_x, d_t_vdf_w)
1484    DEALLOCATE(d_q_vdf_x, d_q_vdf_w)
1485    DEALLOCATE(pbl_tke_input)
1486    DEALLOCATE(t_therm, q_therm, u_therm, v_therm)
1487    DEALLOCATE(cdragh_x, cdragh_w)
1488    DEALLOCATE(cdragm_x, cdragm_w)
1489    DEALLOCATE(kh, kh_x, kh_w)
1490#ifdef ISO
1491      DEALLOCATE(xtevap,xtprw)
1492      DEALLOCATE(zxfxtcalving)
1493      DEALLOCATE(zxxtrunofflic)
1494      DEALLOCATE(xtsnow_lsc, zxfxtfonte)
1495      DEALLOCATE(xtrain_lsc)
1496      DEALLOCATE(dxtvdf_x, dxtvdf_w)
1497      DEALLOCATE(xt_therm)
1498      DEALLOCATE(h1_diag,runoff_diag,xtrunoff_diag)
1499#endif
1500
1501    DEALLOCATE(ptconv)
1502    DEALLOCATE(ratqsc)
1503
1504    DEALLOCATE(wbeff, convoccur, zmax_th)
1505    DEALLOCATE(zq2m, zt2m, weak_inversion)
1506    DEALLOCATE(zt2m_min_mon, zt2m_max_mon)
1507    DEALLOCATE(t2m_min_mon, t2m_max_mon)
1508    DEALLOCATE(sens, flwp, fiwp)
1509    DEALLOCATE(alp_bl_conv, alp_bl_det)
1510    DEALLOCATE(alp_bl_fluct_m, alp_bl_fluct_tke)
1511    DEALLOCATE(alp_bl_stat, n2, s2, strig, zcong, zlcl_th)
1512    DEALLOCATE(proba_notrig, random_notrig)
1513    !FC
1514    DEALLOCATE(zxfluxq, zxfluxt)
1515
1516    DEALLOCATE(dnwd0)
1517    !      DEALLOCATE(upwd, omega, coefh)
1518    DEALLOCATE(omega)
1519    DEALLOCATE(epmax_diag)
1520    !      DEALLOCATE(coefm, lambda_th, cldemi)
1521    DEALLOCATE(lambda_th, cldemi)
1522    DEALLOCATE(cldfra, cldtau, fiwc)
1523    DEALLOCATE(fl, re, flwc)
1524    DEALLOCATE(ref_liq, ref_ice, theta)
1525    DEALLOCATE(ref_liq_pi, ref_ice_pi)
1526    DEALLOCATE(zphi, zx_rh, zx_rhl, zx_rhi)
1527    DEALLOCATE(pmfd, pmfu)
1528
1529    DEALLOCATE(t2m, fluxlat)
1530    DEALLOCATE(fsollw, evap_pot)
1531    DEALLOCATE(fsolsw, wfbils)
1532    DEALLOCATE(wfevap)
1533
1534    DEALLOCATE(pmflxr, pmflxs)
1535    DEALLOCATE(wdtrainA, wdtrainS, wdtrainM)
1536    DEALLOCATE(upwd, dnwd)
1537    DEALLOCATE(ep)
1538    DEALLOCATE(da, mp)
1539    DEALLOCATE(phi)
1540    DEALLOCATE(wght_cvfd)
1541    DEALLOCATE(phi2)
1542    DEALLOCATE(d1a, dam)
1543    DEALLOCATE(ev)
1544    DEALLOCATE(elij)
1545    DEALLOCATE(qtaa)
1546    DEALLOCATE(clw)
1547    DEALLOCATE(epmlmMm, eplaMm)
1548    DEALLOCATE(sij)
1549#ifdef ISO
1550      DEALLOCATE(xtwdtrainA)
1551      DEALLOCATE(xttaa )
1552      DEALLOCATE(xtclw )
1553      DEALLOCATE(xtev )
1554#ifdef DIAGISO
1555      DEALLOCATE(qlp)
1556      DEALLOCATE(qvp)
1557      DEALLOCATE(fq_detrainement)
1558      DEALLOCATE(fq_ddft)
1559      DEALLOCATE(fq_fluxmasse)
1560      DEALLOCATE(fq_evapprecip)
1561      DEALLOCATE(f_detrainement,q_detrainement)
1562      DEALLOCATE(xtlp)
1563      DEALLOCATE(xtvp)
1564      DEALLOCATE(q_the,xt_the)
1565      DEALLOCATE(fxt_detrainement)
1566      DEALLOCATE(fxt_ddft)
1567      DEALLOCATE(fxt_fluxmasse)
1568      DEALLOCATE(fxt_evapprecip)
1569      DEALLOCATE(xt_detrainement)
1570#endif
1571#endif
1572
1573
1574    DEALLOCATE(prfl, psfl, bsfl, fraca, Vprecip)
1575    DEALLOCATE(zw2)
1576
1577    DEALLOCATE(fluxu, fluxv)
1578    DEALLOCATE(fluxt)
1579
1580    DEALLOCATE(uwriteSTD, vwriteSTD)
1581    DEALLOCATE(wwriteSTD, phiwriteSTD)
1582    DEALLOCATE(qwriteSTD, twriteSTD, rhwriteSTD)
1583
1584    ! ug et d'autres encore:
1585    DEALLOCATE(beta_prec)
1586    DEALLOCATE(rneb)
1587    DEALLOCATE(pfraclr, pfracld)
1588    DEALLOCATE(cldfraliq)
1589    DEALLOCATE(sigma2_icefracturb)
1590    DEALLOCATE(mean_icefracturb)
1591    DEALLOCATE (zxsnow, snowhgt, qsnow, to_ice, sissnow, runoff, albsol3_lic)
1592    DEALLOCATE(distcltop)
1593    DEALLOCATE(temp_cltop)
1594#ifdef ISO
1595      DEALLOCATE (zxxtsnow,xtVprecip,xtVprecipi,pxtrfl,pxtsfl)
1596#endif
1597
1598    DEALLOCATE (p_tropopause)
1599    DEALLOCATE (z_tropopause)
1600    DEALLOCATE (t_tropopause)
1601    DEALLOCATE(zn2mout)
1602
1603    ! Supersaturation
1604    DEALLOCATE(rneb_seri)
1605    DEALLOCATE(d_rneb_dyn)
1606    DEALLOCATE(qclr, qcld, qss, qvc)
1607    DEALLOCATE(rnebclr, rnebss, gamma_ss)
1608    DEALLOCATE(N1_ss, N2_ss)
1609    DEALLOCATE(drneb_sub, drneb_con, drneb_tur, drneb_avi)
1610    DEALLOCATE(zqsatl, zqsats)
1611    DEALLOCATE(Tcontr, qcontr, qcontr2, fcontrN, fcontrP)
1612
1613    !--POPRECIP variables
1614    DEALLOCATE(qraindiag, qsnowdiag)
1615    DEALLOCATE(dqreva, dqssub)
1616    DEALLOCATE(dqrauto, dqrcol, dqrmelt, dqrfreez)
1617    DEALLOCATE(dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez)
1618
1619    IF (CPPKEY_STRATAER) THEN
1620      ! variables for strat. aerosol CK
1621      DEALLOCATE (d_q_emiss)
1622      DEALLOCATE (R2SO4, R2SO4B)
1623      DEALLOCATE (DENSO4, DENSO4B)
1624      DEALLOCATE (f_r_wet, f_r_wetB)
1625      DEALLOCATE (decfluxaer)
1626      DEALLOCATE (mdw)
1627      DEALLOCATE (SO2_lifetime)
1628      DEALLOCATE (OCS_lifetime)
1629      DEALLOCATE (H2SO4_lifetime)
1630      DEALLOCATE (O3_clim)
1631      DEALLOCATE (alpha_bin)
1632      DEALLOCATE (piz_bin)
1633      DEALLOCATE (cg_bin)
1634      DEALLOCATE (tau_strat_550)
1635      DEALLOCATE (tau_strat_1020)
1636      DEALLOCATE (tausum_strat)
1637      DEALLOCATE (surf_PM25_sulf)
1638      DEALLOCATE (vsed_aer)
1639      DEALLOCATE (sulfmmr)
1640      DEALLOCATE (SAD_sulfate)
1641      DEALLOCATE (sulfmmr_mode)
1642      DEALLOCATE (nd_mode)
1643      DEALLOCATE (budg_3D_ocs_to_so2)
1644      DEALLOCATE (budg_3D_so2_to_h2so4)
1645      DEALLOCATE (budg_3D_backgr_ocs)
1646      DEALLOCATE (budg_3D_backgr_so2)
1647      DEALLOCATE (budg_3D_nucl)
1648      DEALLOCATE (budg_3D_cond_evap)
1649      DEALLOCATE (budg_dep_dry_ocs)
1650      DEALLOCATE (budg_dep_wet_ocs)
1651      DEALLOCATE (budg_dep_dry_so2)
1652      DEALLOCATE (budg_dep_wet_so2)
1653      DEALLOCATE (budg_dep_dry_h2so4)
1654      DEALLOCATE (budg_dep_wet_h2so4)
1655      DEALLOCATE (budg_dep_dry_part)
1656      DEALLOCATE (budg_dep_wet_part)
1657      DEALLOCATE (budg_emi_ocs)
1658      DEALLOCATE (budg_emi_so2)
1659      DEALLOCATE (budg_emi_h2so4)
1660      DEALLOCATE (budg_emi_part)
1661      DEALLOCATE (budg_ocs_to_so2)
1662      DEALLOCATE (budg_so2_to_h2so4)
1663      DEALLOCATE (budg_h2so4_to_part)
1664      DEALLOCATE (budg_sed_part)
1665    END IF
1666
1667  END SUBROUTINE phys_local_var_end
1668
1669END MODULE phys_local_var_mod
Note: See TracBrowser for help on using the repository browser.