source: LMDZ6/branches/contrails/libf/phylmd/phys_local_var_mod.F90 @ 5456

Last change on this file since 5456 was 5456, checked in by aborella, 24 hours ago

Added diagnostics for contrails fraction

  • 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: 70.9 KB
Line 
1!
2! $Id: phys_local_var_mod.F90 5456 2024-12-23 20:37:29Z aborella $
3!
4      MODULE 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 :: cf_seri(:,:), rvc_seri(:,:)
26      !$OMP THREADPRIVATE(cf_seri, rvc_seri)
27      REAL, SAVE, ALLOCATABLE :: l_mixmin(:,:,:),l_mix(:,:,:),wprime(:,:,:)
28      !$OMP THREADPRIVATE(l_mixmin, l_mix, wprime)
29      REAL, SAVE, ALLOCATABLE :: pbl_eps(:,:,:)
30      !$OMP THREADPRIVATE(pbl_eps)
31      REAL, SAVE, ALLOCATABLE :: tke_shear(:,:,:), tke_buoy(:,:,:), tke_trans(:,:,:)
32      !$OMP THREADPRIVATE(tke_shear,tke_buoy,tke_trans)
33      REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:)
34      !$OMP THREADPRIVATE(tr_seri)
35      REAL, SAVE, ALLOCATABLE :: rhcl(:,:)
36      !$OMP THREADPRIVATE(rhcl)
37      REAL, SAVE, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:)
38      !$OMP THREADPRIVATE(d_t_dyn, d_q_dyn)
39      REAL, SAVE, ALLOCATABLE :: d_ql_dyn(:,:), d_qs_dyn(:,:), d_qbs_dyn(:,:)
40      !$OMP THREADPRIVATE(d_ql_dyn, d_qs_dyn, d_qbs_dyn)
41      REAL, SAVE, ALLOCATABLE :: d_q_dyn2d(:), d_ql_dyn2d(:), d_qs_dyn2d(:), d_qbs_dyn2d(:)
42      !$OMP THREADPRIVATE(d_q_dyn2d, d_ql_dyn2d, d_qs_dyn2d, d_qbs_dyn2d)
43      REAL, SAVE, ALLOCATABLE :: d_u_dyn(:,:), d_v_dyn(:,:)
44      !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn)
45      REAL, SAVE, ALLOCATABLE :: d_cf_dyn(:,:), d_rvc_dyn(:,:)
46      !$OMP THREADPRIVATE(d_cf_dyn, d_rvc_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_diag,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, wdtrainAS
515!$OMP THREADPRIVATE(wdtrainA, wdtrainS, wdtrainM, wdtrainAS)
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!-- LSCP - condensation and ice supersaturation variables
643      REAL, SAVE, ALLOCATABLE :: qsub(:,:), qissr(:,:), qcld(:,:)
644      !$OMP THREADPRIVATE(qsub, qissr, qcld)
645      REAL, SAVE, ALLOCATABLE :: subfra(:,:), issrfra(:,:)
646      !$OMP THREADPRIVATE(subfra, issrfra)
647      REAL, SAVE, ALLOCATABLE :: gamma_cond(:,:)
648      !$OMP THREADPRIVATE(gamma_cond)
649      REAL, SAVE, ALLOCATABLE :: ql_seri_lscp(:,:)
650      !$OMP THREADPRIVATE(ql_seri_lscp)
651      REAL, SAVE, ALLOCATABLE :: ratio_ql_qtot(:,:)
652      !$OMP THREADPRIVATE(ratio_ql_qtot)
653      REAL, SAVE, ALLOCATABLE :: qi_seri_lscp(:,:)
654      !$OMP THREADPRIVATE(qi_seri_lscp)
655      REAL, SAVE, ALLOCATABLE :: ratio_qi_qtot(:,:)
656      !$OMP THREADPRIVATE(ratio_qi_qtot)
657      REAL, SAVE, ALLOCATABLE :: dcf_sub(:,:), dcf_con(:,:), dcf_mix(:,:)
658      !$OMP THREADPRIVATE(dcf_sub, dcf_con, dcf_mix)
659      REAL, SAVE, ALLOCATABLE :: dqi_adj(:,:), dqi_sub(:,:), dqi_con(:,:), dqi_mix(:,:)
660      !$OMP THREADPRIVATE(dqi_adj, dqi_sub, dqi_con, dqi_mix)
661      REAL, SAVE, ALLOCATABLE :: dqvc_adj(:,:), dqvc_sub(:,:), dqvc_con(:,:), dqvc_mix(:,:)
662      !$OMP THREADPRIVATE(dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix)
663      REAL, SAVE, ALLOCATABLE :: qsatliq(:,:), qsatice(:,:)
664      !$OMP THREADPRIVATE(qsatliq, qsatice)
665
666!-- LSCP - aviation and contrails variables
667      REAL, SAVE, ALLOCATABLE :: d_q_avi(:,:)
668      !$OMP THREADPRIVATE(d_q_avi)
669      REAL, SAVE, ALLOCATABLE :: rcont_seri(:,:), d_rcont_dyn(:,:)
670      !$OMP THREADPRIVATE(rcont_seri, d_rcont_dyn)
671      REAL, SAVE, ALLOCATABLE :: flight_dist(:,:), flight_h2o(:,:)
672      !$OMP THREADPRIVATE(flight_dist, flight_h2o)
673      REAL, SAVE, ALLOCATABLE :: Tcritcont(:,:), qcritcont(:,:)
674      !$OMP THREADPRIVATE(Tcritcont, qcritcont)
675      REAL, SAVE, ALLOCATABLE :: potcontfraP(:,:), potcontfraNP(:,:)
676      !$OMP THREADPRIVATE(potcontfraP, potcontfraNP)
677      REAL, SAVE, ALLOCATABLE :: contfra(:,:), dcontfra_cir(:,:)
678      !$OMP THREADPRIVATE(contfra, dcontfra_cir)
679      REAL, SAVE, ALLOCATABLE :: dcf_avi(:,:), dqi_avi(:,:), dqvc_avi(:,:)
680      !$OMP THREADPRIVATE(dcf_avi, dqi_avi, dqvc_avi)
681
682!-- LSCP - mixed phase clouds variables
683      REAL, SAVE, ALLOCATABLE :: distcltop(:,:)
684      !$OMP THREADPRIVATE(distcltop)
685      REAL, SAVE, ALLOCATABLE :: temp_cltop(:,:)
686      !$OMP THREADPRIVATE(temp_cltop)
687
688!-- LSCP - 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!======================================================================
815SUBROUTINE phys_local_var_init
816USE dimphy
817USE infotrac_phy, ONLY : nbtr,nqtot
818#ifdef ISO
819USE infotrac_phy, ONLY : ntraciso=>ntiso,niso
820#endif
821USE aero_mod
822USE indice_sol_mod
823USE phys_output_var_mod
824USE phys_state_var_mod
825USE infotrac_phy, ONLY : nbtr_bin
826
827IMPLICIT 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(cf_seri(klon,klev),rvc_seri(klon,klev))
834      ALLOCATE(l_mixmin(klon,klev+1,nbsrf),l_mix(klon,klev+1,nbsrf),wprime(klon,klev+1,nbsrf))
835      ALLOCATE(pbl_eps(klon,klev+1,nbsrf+1))
836      ALLOCATE(tke_shear(klon,klev+1,nbsrf), tke_buoy(klon,klev+1,nbsrf), tke_trans(klon,klev+1,nbsrf))
837      pbl_eps(:,:,:)=0.
838      tke_shear(:,:,:)=0.; tke_buoy(:,:,:)=0.; tke_trans(:,:,:)=0.
839      l_mix(:,:,:)=0.;l_mixmin(:,:,:)=0.;wprime(:,:,:)=0. ! doit etre initialse car pas toujours remplis
840      ALLOCATE(rhcl(klon,klev))
841      ALLOCATE(tr_seri(klon,klev,nbtr))
842      ALLOCATE(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
843      ALLOCATE(d_ql_dyn(klon,klev),d_qs_dyn(klon,klev), d_qbs_dyn(klon,klev))
844      ALLOCATE(d_q_dyn2d(klon),d_ql_dyn2d(klon),d_qs_dyn2d(klon), d_qbs_dyn2d(klon))
845      ALLOCATE(d_u_dyn(klon,klev),d_v_dyn(klon,klev))
846      ALLOCATE(d_cf_dyn(klon,klev),d_rvc_dyn(klon,klev))
847      ALLOCATE(d_tr_dyn(klon,klev,nbtr))                   !RomP
848      ALLOCATE(d_t_con(klon,klev),d_q_con(klon,klev),d_q_con_zmasse(klon,klev))
849      ALLOCATE(d_u_con(klon,klev),d_v_con(klon,klev))
850      ALLOCATE(d_t_wake(klon,klev),d_q_wake(klon,klev))
851      ALLOCATE(d_t_lsc(klon,klev),d_q_lsc(klon,klev))
852      ALLOCATE(d_t_lwr(klon,klev),d_t_lw0(klon,klev))
853      ALLOCATE(d_t_swr(klon,klev),d_t_sw0(klon,klev))
854      ALLOCATE(d_ql_lsc(klon,klev),d_qi_lsc(klon,klev))
855      ALLOCATE(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev))
856      ALLOCATE(d_t_ajs(klon,klev),d_q_ajs(klon,klev))
857!nrlmd<
858      ALLOCATE(d_t_ajs_w(klon,klev),d_q_ajs_w(klon,klev))
859      ALLOCATE(d_t_ajs_x(klon,klev),d_q_ajs_x(klon,klev))
860!>nrlmd
861      ALLOCATE(d_u_ajs(klon,klev),d_v_ajs(klon,klev))
862      ALLOCATE(d_t_eva(klon,klev),d_q_eva(klon,klev))
863! SN 4D ISO
864      ALLOCATE(d_qx_eva(klon,klev,nqtot))
865! SN
866      ALLOCATE(d_ql_eva(klon,klev),d_qi_eva(klon,klev))
867      ALLOCATE(d_t_lscst(klon,klev),d_q_lscst(klon,klev))
868      ALLOCATE(d_t_lscth(klon,klev),d_q_lscth(klon,klev))
869      ALLOCATE(plul_st(klon),plul_th(klon))
870      ALLOCATE(d_t_vdf(klon,klev),d_q_vdf(klon,klev),d_t_diss(klon,klev))
871      ALLOCATE (d_qbs_vdf(klon,klev))
872      ALLOCATE(d_t_bsss(klon,klev),d_q_bsss(klon,klev),d_qbs_bsss(klon,klev))
873      ALLOCATE(d_t_vdf_w(klon,klev),d_q_vdf_w(klon,klev))
874      ALLOCATE(d_t_vdf_x(klon,klev),d_q_vdf_x(klon,klev))
875#ifdef ISO
876      allocate(xt_seri(ntraciso,klon,klev))
877      allocate(xtl_seri(ntraciso,klon,klev))
878      allocate(xts_seri(ntraciso,klon,klev))
879      allocate(xtbs_seri(ntraciso,klon,klev))
880      allocate(d_xt_dyn(ntraciso,klon,klev))
881      allocate(d_xtl_dyn(ntraciso,klon,klev))
882      allocate(d_xts_dyn(ntraciso,klon,klev))
883      allocate(d_xtbs_dyn(ntraciso,klon,klev))
884      allocate(d_xt_con(ntraciso,klon,klev))
885      allocate(d_xt_wake(ntraciso,klon,klev))
886      allocate(d_xt_lsc(ntraciso,klon,klev))
887      allocate(d_xtl_lsc(ntraciso,klon,klev))
888      allocate(d_xti_lsc(ntraciso,klon,klev))
889      allocate(d_xt_ajsb(ntraciso,klon,klev))
890      allocate(d_xt_ajs(ntraciso,klon,klev))
891      allocate(d_xt_ajs_w(ntraciso,klon,klev))
892      allocate(d_xt_ajs_x(ntraciso,klon,klev))
893      allocate(d_xt_eva(ntraciso,klon,klev))
894      allocate(d_xtl_eva(ntraciso,klon,klev))
895      allocate(d_xti_eva(ntraciso,klon,klev))
896      allocate(d_xt_vdf(ntraciso,klon,klev)) 
897      allocate(d_xt_vdf_w(ntraciso,klon,klev))
898      allocate(d_xt_vdf_x(ntraciso,klon,klev))
899      allocate(d_xt_ch4(ntraciso,klon,klev))
900      allocate(d_xt_prod_nucl(ntraciso,klon,klev))
901      allocate(d_xt_cosmo(ntraciso,klon,klev))
902      allocate(d_xt_decroiss(ntraciso,klon,klev))
903#endif
904
905      ALLOCATE(d_u_vdf(klon,klev),d_v_vdf(klon,klev))
906      ALLOCATE(d_t_oli(klon,klev),d_t_oro(klon,klev))
907      ALLOCATE(d_u_oli(klon,klev),d_v_oli(klon,klev))
908      ALLOCATE(d_u_oro(klon,klev),d_v_oro(klon,klev))
909      ALLOCATE(d_u_oro_gw(klon,klev),d_v_oro_gw(klon,klev))
910      ALLOCATE(d_t_oro_gw(klon,klev))
911      ALLOCATE(d_t_lif(klon,klev),d_t_ec(klon,klev))
912      ALLOCATE(d_u_lif(klon,klev),d_v_lif(klon,klev))
913      ALLOCATE(d_ts(klon,nbsrf), d_tr(klon,klev,nbtr))
914
915! Special RRTM
916      ALLOCATE(ZLWFT0_i(klon,klev+1),ZSWFT0_i(klon,klev+1),ZFLDN0(klon,klev+1))
917      ZFLDN0= 0.
918      ALLOCATE(ZFLUP0(klon,klev+1),ZFSDN0(klon,klev+1),ZFSUP0(klon,klev+1))
919!
920      ALLOCATE(topswad_aero(klon), solswad_aero(klon))
921      ALLOCATE(topswai_aero(klon), solswai_aero(klon))
922      ALLOCATE(topswad0_aero(klon), solswad0_aero(klon))
923      ALLOCATE(toplwad_aero(klon), sollwad_aero(klon))
924      ALLOCATE(toplwai_aero(klon), sollwai_aero(klon))
925      ALLOCATE(toplwad0_aero(klon), sollwad0_aero(klon))
926      ALLOCATE(topsw_aero(klon,naero_grp), solsw_aero(klon,naero_grp))
927      ALLOCATE(topsw0_aero(klon,naero_grp), solsw0_aero(klon,naero_grp))
928      ALLOCATE(topswcf_aero(klon,3), solswcf_aero(klon,3))
929      ALLOCATE(du_gwd_hines(klon,klev),dv_gwd_hines(klon,klev))
930      ALLOCATE(dv_gwd_rando(klon,klev),dv_gwd_front(klon,klev))
931      ALLOCATE(east_gwstress(klon,klev),west_gwstress(klon,klev))
932      east_gwstress(:,:)=0 !ym missing init
933      west_gwstress(:,:)=0 !ym missing init
934      ALLOCATE(d_t_hin(klon,klev))
935      ALLOCATE(d_q_ch4(klon,klev))
936      ALLOCATE(stratomask(klon,klev))
937      ALLOCATE(tausum_aero(klon,nwave,naero_tot))
938      ALLOCATE(drytausum_aero(klon,naero_tot))
939      ALLOCATE(tau3d_aero(klon,klev,nwave,naero_tot))
940      ALLOCATE(dNovrN(klon))
941      ALLOCATE(zfice(klon, klev))
942      ALLOCATE(od443aer(klon))
943      ALLOCATE(od550aer(klon))
944      ALLOCATE(od865aer(klon))
945      ALLOCATE(dryod550aer(klon))
946      dryod550aer(:) = 0.
947      ALLOCATE(abs550aer(klon))
948      abs550aer(:) = 0.
949      ALLOCATE(ec550aer(klon,klev))
950      ALLOCATE(od550lt1aer(klon))
951      ALLOCATE(sconcso4(klon))
952      ALLOCATE(sconcno3(klon))
953      ALLOCATE(sconcoa(klon))
954      ALLOCATE(sconcbc(klon))
955      ALLOCATE(sconcss(klon))
956      ALLOCATE(sconcdust(klon))
957      ALLOCATE(concso4(klon,klev))
958      ALLOCATE(concno3(klon,klev))
959      ALLOCATE(concoa(klon,klev))
960      ALLOCATE(concbc(klon,klev))
961      ALLOCATE(concss(klon,klev))
962      ALLOCATE(concdust(klon,klev))
963      ALLOCATE(loadso4(klon))
964      ALLOCATE(loadoa(klon))
965      ALLOCATE(loadbc(klon))
966      ALLOCATE(loadss(klon))
967      ALLOCATE(loaddust(klon))
968      ALLOCATE(loadno3(klon))
969      ALLOCATE(load_tmp1(klon))
970      ALLOCATE(load_tmp2(klon))
971      ALLOCATE(load_tmp3(klon))
972      ALLOCATE(load_tmp4(klon))
973      ALLOCATE(load_tmp5(klon))
974      ALLOCATE(load_tmp6(klon))
975      ALLOCATE(load_tmp7(klon))
976      ALLOCATE(load_tmp8(klon))
977      ALLOCATE(load_tmp9(klon))
978      ALLOCATE(load_tmp10(klon))
979
980!IM ajout variables CFMIP2/CMIP5
981      ALLOCATE(topswad_aerop(klon), solswad_aerop(klon))
982      ALLOCATE(topswai_aerop(klon), solswai_aerop(klon))
983      ALLOCATE(topswad0_aerop(klon), solswad0_aerop(klon))
984      ALLOCATE(topsw_aerop(klon,naero_grp), topsw0_aerop(klon,naero_grp))
985      ALLOCATE(solsw_aerop(klon,naero_grp), solsw0_aerop(klon,naero_grp))
986      ALLOCATE(topswcf_aerop(klon,naero_grp), solswcf_aerop(klon,naero_grp))
987
988! additional LW variables CK
989      ALLOCATE(toplwad_aerop(klon), sollwad_aerop(klon))
990      ALLOCATE(toplwai_aerop(klon), sollwai_aerop(klon))
991      ALLOCATE(toplwad0_aerop(klon), sollwad0_aerop(klon))
992
993!AI Ajout Ecrad (3Deffect)
994      ALLOCATE(topswad_aero_s2(klon), solswad_aero_s2(klon))
995      ALLOCATE(topswai_aero_s2(klon), solswai_aero_s2(klon))
996      ALLOCATE(topswad0_aero_s2(klon), solswad0_aero_s2(klon))
997      ALLOCATE(topsw_aero_s2(klon,naero_grp), topsw0_aero_s2(klon,naero_grp))
998      ALLOCATE(solsw_aero_s2(klon,naero_grp), solsw0_aero_s2(klon,naero_grp))
999      ALLOCATE(topswcf_aero_s2(klon,naero_grp), solswcf_aero_s2(klon,naero_grp))
1000! additional LW variables CK
1001      ALLOCATE(toplwad_aero_s2(klon), sollwad_aero_s2(klon))
1002      ALLOCATE(toplwai_aero_s2(klon), sollwai_aero_s2(klon))
1003      ALLOCATE(toplwad0_aero_s2(klon), sollwad0_aero_s2(klon))
1004
1005! FH Ajout de celles necessaires au phys_output_write_mod
1006
1007      ALLOCATE(tal1(klon), pal1(klon), pab1(klon), pab2(klon))
1008      ALLOCATE(ptstar(klon),pt0(klon),slp(klon))
1009!!
1010!!          Wake variables
1011      ALLOCATE(alp_wake(klon))
1012      ALLOCATE(wake_h(klon),wake_k(klon))
1013      ALLOCATE(wake_omg(klon, klev))
1014      ALLOCATE(d_deltat_wk(klon, klev), d_deltaq_wk(klon, klev))
1015      ALLOCATE(d_s_wk(klon), d_s_a_wk(klon), d_dens_wk(klon), d_dens_a_wk(klon))
1016      ALLOCATE(d_deltat_wk_gw(klon, klev), d_deltaq_wk_gw(klon, klev))
1017      ALLOCATE(d_deltat_vdf(klon, klev), d_deltaq_vdf(klon, klev))
1018!!      ALLOCATE( d_s_vdf(klon), d_dens_vdf(klon))
1019      ALLOCATE(d_deltat_the(klon, klev), d_deltaq_the(klon, klev))
1020!!      ALLOCATE( d_s_the(klon), d_dens_the(klon))
1021      ALLOCATE(d_deltat_ajs_cv(klon, klev), d_deltaq_ajs_cv(klon, klev))
1022#ifdef ISO
1023      ALLOCATE(d_deltaxt_wk(ntraciso,klon, klev))
1024      ALLOCATE(d_deltaxt_wk_gw(ntraciso,klon, klev))
1025      ALLOCATE(d_deltaxt_the(ntraciso,klon, klev))
1026      ALLOCATE(d_deltaxt_vdf(ntraciso,klon, klev))
1027      ALLOCATE(d_deltaxt_ajs_cv(ntraciso,klon, klev))
1028#endif
1029!!         End of wake variables
1030!!
1031      ALLOCATE(bils(klon))
1032      ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon))
1033      ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon))
1034      ALLOCATE(JrNt(klon))
1035      ALLOCATE(dthmin(klon), evap(klon), snowerosion(klon), fder(klon), plcl(klon), plfc(klon))
1036      ALLOCATE(prw(klon), prlw(klon), prsw(klon), prbsw(klon), water_budget(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon))
1037      ALLOCATE(s_lcl(klon))
1038      ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon))
1039!
1040!nrlmd+jyg<
1041      ALLOCATE(s_pblh_x(klon), s_pblh_w(klon))
1042      ALLOCATE(s_lcl_x(klon), s_lcl_w(klon))
1043!>nrlmd+jyg
1044!
1045      ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon))
1046      ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon))
1047      ALLOCATE(uwat(klon), vwat(klon))
1048      ALLOCATE(zxfqcalving(klon), zxfluxlat(klon))
1049      ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon))
1050! SN add runoff_diag
1051      ALLOCATE(zxrunofflic(klon), runoff_diag(klon))
1052      runoff_diag(:)=0.
1053      ALLOCATE(zxustartlic(klon), zxrhoslic(klon), zxqsaltlic(klon), tempsmoothlic(klon))
1054      zxustartlic(:)=0. ; zxrhoslic(:)=0. ; zxqsaltlic(:)=0. ; tempsmoothlic(:)=0.
1055      ALLOCATE(rain_lsc(klon))
1056      ALLOCATE(rain_num(klon))
1057      ALLOCATE(qlth(klon,klev), qith(klon,klev), qsith(klon,klev), wiceth(klon,klev))
1058      !
1059#ifdef ISO
1060      ALLOCATE(xtevap(ntraciso,klon))
1061      ALLOCATE(xtprw(ntraciso,klon))
1062      ALLOCATE(zxfxtcalving(niso,klon))
1063      ALLOCATE(xtsnow_lsc(ntraciso,klon), zxfxtfonte(niso,klon))
1064      ALLOCATE(zxxtrunofflic(niso,klon))
1065      ALLOCATE(xtrain_lsc(ntraciso,klon))
1066      ALLOCATE(xtrunoff_diag(niso,klon))
1067      ALLOCATE(h1_diag(klon))
1068!SN
1069      xtrunoff_diag(:,:)=0. ! because variables are only given values on knon grid points
1070#endif
1071!
1072      ALLOCATE(sens_x(klon), sens_w(klon))
1073      ALLOCATE(zxfluxlat_x(klon), zxfluxlat_w(klon))
1074      ALLOCATE(delta_qsurf(klon))
1075!jyg<
1076!!      ALLOCATE(t_x(klon,klev), t_w(klon,klev))
1077!!      ALLOCATE(q_x(klon,klev), q_w(klon,klev))
1078!>jyg
1079      ALLOCATE(dtvdf_x(klon,klev), dtvdf_w(klon,klev))
1080      dtvdf_x = 0 ; dtvdf_w=0 ;   !ym missing init
1081      ALLOCATE(dqvdf_x(klon,klev), dqvdf_w(klon,klev))
1082      dqvdf_x = 0 ; dqvdf_w=0 ;   !ym missing init
1083      ALLOCATE(pbl_tke_input(klon,klev+1,nbsrf))
1084      ALLOCATE(t_therm(klon,klev), q_therm(klon,klev),u_therm(klon,klev), v_therm(klon,klev))
1085      ALLOCATE(cdragh_x(klon), cdragh_w(klon))
1086      ALLOCATE(cdragm_x(klon), cdragm_w(klon))
1087      ALLOCATE(kh(klon), kh_x(klon), kh_w(klon))
1088#ifdef ISO
1089      ALLOCATE(dxtvdf_x(ntraciso,klon,klev), dxtvdf_w(ntraciso,klon,klev))
1090      ALLOCATE(xt_therm(ntraciso,klon,klev))
1091#endif
1092!
1093      ALLOCATE(ptconv(klon,klev))
1094      ALLOCATE(ratqsc(klon,klev))
1095!
1096      ALLOCATE(wbeff(klon), convoccur(klon), zmax_th(klon))
1097      ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon))
1098      ALLOCATE(zt2m_min_mon(klon), zt2m_max_mon(klon))
1099      ALLOCATE(t2m_min_mon(klon), t2m_max_mon(klon))
1100      ALLOCATE(sens(klon), flwp(klon), fiwp(klon))
1101      ALLOCATE(alp_bl_conv(klon), alp_bl_det(klon))
1102      alp_bl_conv(:)=0 ;  alp_bl_det(:)=0
1103      ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon))
1104      alp_bl_fluct_m(:)=0 ; alp_bl_fluct_tke(:)= 0.
1105      ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon), strig(klon), zcong(klon), zlcl_th(klon))
1106      alp_bl_stat(:)=0
1107      ALLOCATE(proba_notrig(klon), random_notrig(klon))
1108
1109      ALLOCATE(dnwd0(klon, klev))
1110!      ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev))
1111      ALLOCATE(omega(klon, klev))
1112      ALLOCATE(epmax_diag(klon)) ! epmax_cape
1113!      ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev))
1114      ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev))
1115      ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev))
1116      ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev))
1117      ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev))
1118      ALLOCATE(ref_liq_pi(klon, klev), ref_ice_pi(klon, klev))
1119      ALLOCATE(zphi(klon, klev), zx_rh(klon, klev), zx_rhl(klon,klev), zx_rhi(klon,klev))
1120      zx_rhl(:,:)=0.; zx_rhi(:,:)=0. ! because not always defined
1121      ALLOCATE(pmfd(klon, klev), pmfu(klon, klev))
1122
1123      ALLOCATE(t2m(klon, nbsrf), fluxlat(klon, nbsrf))
1124      ALLOCATE(fsollw(klon, nbsrf))
1125      ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf))
1126      ALLOCATE(wfevap(klon, nbsrf))
1127      ALLOCATE(evap_pot(klon, nbsrf))
1128! FC
1129      ALLOCATE(zxfluxq(klon,klev),zxfluxt(klon,klev))
1130!
1131!  Deep convective variables used in phytrac
1132      ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1))
1133      ALLOCATE(wdtrainA(klon,klev),wdtrainS(klon,klev),wdtrainM(klon,klev),wdtrainAS(klon,klev))
1134      ALLOCATE(dnwd(klon, klev), upwd(klon, klev))
1135      ALLOCATE(ep(klon,klev))                          ! epmax_cape
1136      ALLOCATE(da(klon,klev), mp(klon,klev))
1137      ALLOCATE(phi(klon,klev,klev))
1138      ALLOCATE(wght_cvfd(klon,klev))
1139      ALLOCATE(phi2(klon,klev,klev))
1140      ALLOCATE(d1a(klon,klev), dam(klon,klev))
1141      ALLOCATE(ev(klon,klev))
1142      ALLOCATE(elij(klon,klev,klev))
1143      ALLOCATE(qtaa(klon,klev))
1144      ALLOCATE(clw(klon,klev))
1145      ALLOCATE(epmlmMm(klon,klev,klev), eplaMm(klon,klev))
1146      ALLOCATE(sij(klon,klev,klev))
1147#ifdef ISO
1148      ALLOCATE(xtwdtrainA(ntraciso,klon,klev))
1149      ALLOCATE(xtev(ntraciso,klon,klev) )
1150      ALLOCATE(xttaa(ntraciso,klon,klev) )
1151      ALLOCATE(xtclw(ntraciso,klon,klev) )
1152#ifdef DIAGISO
1153      ALLOCATE(qlp(klon,klev))
1154      ALLOCATE(qvp(klon,klev))
1155      ALLOCATE(fq_detrainement(klon,klev))
1156      ALLOCATE(fq_ddft(klon,klev))
1157      ALLOCATE(fq_fluxmasse(klon,klev))
1158      ALLOCATE(fq_evapprecip(klon,klev))
1159      ALLOCATE(f_detrainement(klon,klev), q_detrainement(klon,klev))
1160      ALLOCATE(xtlp(ntraciso,klon,klev))
1161      ALLOCATE(xtvp(ntraciso,klon,klev))
1162      ALLOCATE(q_the(klon,klev), xt_the(ntraciso,klon,klev))
1163      ALLOCATE(fxt_detrainement(ntraciso,klon,klev))
1164      ALLOCATE(fxt_ddft(ntraciso,klon,klev))
1165      ALLOCATE(fxt_fluxmasse(ntraciso,klon,klev))
1166      ALLOCATE(fxt_evapprecip(ntraciso,klon,klev))
1167      ALLOCATE(xt_detrainement(ntraciso,klon,klev))
1168#endif
1169#endif
1170
1171      ALLOCATE(prfl(klon, klev+1))
1172      ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1))
1173      ALLOCATE(bsfl(klon,klev+1))
1174      ALLOCATE(zw2(klon, klev+1))
1175
1176      ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf))
1177      ALLOCATE(fluxt(klon, klev, nbsrf))
1178
1179      ALLOCATE(uwriteSTD(klon,nlevSTD,nfiles), vwriteSTD(klon,nlevSTD,nfiles))
1180      ALLOCATE(wwriteSTD(klon,nlevSTD,nfiles), phiwriteSTD(klon,nlevSTD,nfiles))
1181      ALLOCATE(qwriteSTD(klon,nlevSTD,nfiles), twriteSTD(klon,nlevSTD,nfiles))
1182      ALLOCATE(rhwriteSTD(klon,nlevSTD,nfiles))
1183
1184! ug et d'autres encore:
1185      ALLOCATE(beta_prec(klon,klev))
1186      ALLOCATE(rneb(klon,klev),rnebjn(klon,klev),rneblsvol(klon,klev))
1187      ALLOCATE(pfraclr(klon,klev),pfracld(klon,klev))
1188      pfraclr(:,:)=0. ; pfracld(:,:)=0. ! because not always defined
1189      ALLOCATE(cldfraliq(klon,klev))
1190      ALLOCATE(sigma2_icefracturb(klon,klev))
1191      ALLOCATE(mean_icefracturb(klon,klev))
1192      ALLOCATE(distcltop(klon,klev))
1193      ALLOCATE(temp_cltop(klon,klev))
1194
1195
1196      ALLOCATE (zxsnow(klon),snowhgt(klon),qsnow(klon),to_ice(klon))
1197      ALLOCATE (sissnow(klon),runoff(klon),albsol3_lic(klon))
1198#ifdef ISO
1199      ALLOCATE (zxxtsnow(niso,klon))
1200      ALLOCATE(xtVprecip(ntraciso,klon, klev+1),xtVprecipi(ntraciso,klon, klev+1))
1201      ALLOCATE(pxtsfl(ntraciso,klon, klev+1),pxtrfl(ntraciso,klon, klev+1))
1202#endif
1203
1204      ALLOCATE (p_tropopause(klon))
1205      ALLOCATE (z_tropopause(klon))
1206      ALLOCATE (t_tropopause(klon))
1207
1208      ALLOCATE(zn2mout(klon,6))
1209
1210!-- LSCP - condensation and ice supersaturation variables
1211      ALLOCATE(qsub(klon,klev), qissr(klon,klev), qcld(klon,klev))
1212      ALLOCATE(subfra(klon,klev), issrfra(klon,klev))
1213      ALLOCATE(gamma_cond(klon,klev), ql_seri_lscp(klon,klev), ratio_ql_qtot(klon,klev))
1214      ALLOCATE(qi_seri_lscp(klon,klev), ratio_qi_qtot(klon,klev))
1215      ALLOCATE(dcf_sub(klon,klev), dcf_con(klon,klev), dcf_mix(klon,klev))
1216      ALLOCATE(dqi_adj(klon,klev), dqi_sub(klon,klev), dqi_con(klon,klev), dqi_mix(klon,klev))
1217      ALLOCATE(dqvc_adj(klon,klev), dqvc_sub(klon,klev), dqvc_con(klon,klev), dqvc_mix(klon,klev))
1218      ALLOCATE(qsatliq(klon,klev), qsatice(klon,klev))
1219
1220!-- LSCP - aviation and contrails variables
1221      ALLOCATE(d_q_avi(klon,klev))
1222      ALLOCATE(rcont_seri(klon,klev), d_rcont_dyn(klon,klev))
1223      ALLOCATE(flight_dist(klon,klev), flight_h2o(klon,klev))
1224      ALLOCATE(Tcritcont(klon,klev), qcritcont(klon,klev))
1225      ALLOCATE(potcontfraP(klon,klev), potcontfraNP(klon,klev))
1226      ALLOCATE(contfra(klon,klev), dcontfra_cir(klon,klev))
1227      ALLOCATE(dcf_avi(klon,klev), dqi_avi(klon,klev), dqvc_avi(klon,klev))
1228
1229!-- LSCP - POPRECIP variables
1230      ALLOCATE(qraindiag(klon,klev), qsnowdiag(klon,klev))
1231      ALLOCATE(dqreva(klon,klev), dqssub(klon,klev))
1232      ALLOCATE(dqrauto(klon,klev), dqrcol(klon,klev), dqrmelt(klon,klev), dqrfreez(klon,klev))
1233      ALLOCATE(dqsauto(klon,klev), dqsagg(klon,klev), dqsrim(klon,klev), dqsmelt(klon,klev), dqsfreez(klon,klev))
1234
1235IF (CPPKEY_STRATAER) THEN
1236      ALLOCATE (d_q_emiss(klon,klev))
1237      ALLOCATE (R2SO4(klon,klev))
1238      ALLOCATE (R2SO4B(klon,klev,nbtr_bin))
1239      ALLOCATE (DENSO4(klon,klev))
1240      ALLOCATE (DENSO4B(klon,klev,nbtr_bin))
1241      ALLOCATE (f_r_wet(klon,klev))
1242      ALLOCATE (f_r_wetB(klon,klev,nbtr_bin))
1243      ALLOCATE (decfluxaer(klon,nbtr))
1244      ALLOCATE (mdw(nbtr))
1245      ALLOCATE (budg_3D_nucl(klon,klev))
1246      ALLOCATE (budg_3D_cond_evap(klon,klev))
1247      ALLOCATE (budg_3D_ocs_to_so2(klon,klev))
1248      ALLOCATE (budg_3D_so2_to_h2so4(klon,klev))
1249      ALLOCATE (budg_3D_backgr_ocs(klon,klev))
1250      ALLOCATE (budg_3D_backgr_so2(klon,klev))
1251      ALLOCATE (OCS_lifetime(klon,klev))
1252      ALLOCATE (SO2_lifetime(klon,klev))
1253      ALLOCATE (H2SO4_lifetime(klon,klev))
1254      ALLOCATE (O3_clim(klon,klev))
1255      ALLOCATE (alpha_bin(nbands_sw_rrtm+nbands_lw_rrtm+nwave,nbtr))
1256      ALLOCATE (piz_bin(nbands_sw_rrtm+nbands_lw_rrtm+nwave,nbtr))
1257      ALLOCATE (cg_bin(nbands_sw_rrtm+nbands_lw_rrtm+nwave,nbtr))
1258      ALLOCATE (tau_strat_550(klon,klev))
1259      ALLOCATE (tau_strat_1020(klon,klev))
1260      ALLOCATE (tausum_strat(klon,3))
1261      ALLOCATE (budg_dep_dry_ocs(klon))
1262      ALLOCATE (budg_dep_wet_ocs(klon))
1263      ALLOCATE (budg_dep_dry_so2(klon))
1264      ALLOCATE (budg_dep_wet_so2(klon))
1265      ALLOCATE (budg_dep_dry_h2so4(klon))
1266      ALLOCATE (budg_dep_wet_h2so4(klon))
1267      ALLOCATE (budg_dep_dry_part(klon))
1268      ALLOCATE (budg_dep_wet_part(klon))
1269      ALLOCATE (budg_emi_ocs(klon))
1270      ALLOCATE (budg_emi_so2(klon))
1271      ALLOCATE (budg_emi_h2so4(klon))
1272      ALLOCATE (budg_emi_part(klon))
1273      ALLOCATE (budg_ocs_to_so2(klon))
1274      ALLOCATE (budg_so2_to_h2so4(klon))
1275      ALLOCATE (budg_h2so4_to_part(klon))
1276      ALLOCATE (budg_sed_part(klon))
1277      ALLOCATE (surf_PM25_sulf(klon))
1278      ALLOCATE (vsed_aer(klon,klev))
1279      ALLOCATE (sulfmmr(klon,klev))
1280      ALLOCATE (SAD_sulfate(klon,klev))
1281      ALLOCATE (reff_sulfate(klon,klev))
1282      ALLOCATE (sulfmmr_mode(klon,klev,nbtr_bin))
1283      ALLOCATE (nd_mode(klon,klev,nbtr_bin))
1284END IF
1285
1286END SUBROUTINE phys_local_var_init
1287
1288!======================================================================
1289SUBROUTINE phys_local_var_end
1290USE dimphy
1291USE indice_sol_mod
1292IMPLICIT NONE
1293      DEALLOCATE(t_seri,q_seri,ql_seri,qs_seri, qbs_seri)
1294! SN 4D ISO
1295      DEALLOCATE(qx_seri)
1296! SN
1297      DEALLOCATE(u_seri,v_seri)
1298      DEALLOCATE(cf_seri,rvc_seri)
1299      DEALLOCATE(l_mixmin,l_mix,wprime)
1300      DEALLOCATE(tke_shear,tke_buoy,tke_trans)
1301      DEALLOCATE(pbl_eps)
1302      DEALLOCATE(rhcl)
1303      DEALLOCATE(tr_seri)
1304      DEALLOCATE(d_t_dyn,d_q_dyn)
1305      DEALLOCATE(d_ql_dyn,d_qs_dyn, d_qbs_dyn)
1306      DEALLOCATE(d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d, d_qbs_dyn2d)
1307      DEALLOCATE(d_u_dyn,d_v_dyn)
1308      DEALLOCATE(d_cf_dyn,d_rvc_dyn)
1309      DEALLOCATE(d_tr_dyn)                      !RomP
1310      DEALLOCATE(d_t_con,d_q_con,d_q_con_zmasse)
1311      DEALLOCATE(d_u_con,d_v_con)
1312      DEALLOCATE(d_t_wake,d_q_wake)
1313      DEALLOCATE(d_t_lsc,d_q_lsc)
1314      DEALLOCATE(d_t_lwr,d_t_lw0)
1315      DEALLOCATE(d_t_swr,d_t_sw0)
1316      DEALLOCATE(d_ql_lsc,d_qi_lsc)
1317      DEALLOCATE(d_t_ajsb,d_q_ajsb)
1318      DEALLOCATE(d_t_ajs,d_q_ajs)
1319!nrlmd<
1320      DEALLOCATE(d_t_ajs_w,d_q_ajs_w)
1321      DEALLOCATE(d_t_ajs_x,d_q_ajs_x)
1322!>nrlmd
1323      DEALLOCATE(d_u_ajs,d_v_ajs)
1324      DEALLOCATE(d_t_eva,d_q_eva)
1325! SN 4D ISO
1326      DEALLOCATE(d_qx_eva)
1327! SN
1328      DEALLOCATE(d_ql_eva,d_qi_eva)
1329      DEALLOCATE(d_t_lscst,d_q_lscst)
1330      DEALLOCATE(d_t_lscth,d_q_lscth)
1331      DEALLOCATE(plul_st,plul_th)
1332      DEALLOCATE(d_t_vdf,d_q_vdf,d_t_diss)
1333      DEALLOCATE(d_qbs_vdf)
1334      DEALLOCATE(d_t_bsss,d_q_bsss,d_qbs_bsss)
1335#ifdef ISO
1336      deallocate(xt_seri,xtl_seri,xts_seri,xtbs_seri)
1337      DEALLOCATE(d_xtl_eva,d_xti_eva)
1338      deallocate(d_xt_dyn,d_xtl_dyn,d_xts_dyn,d_xtbs_dyn)
1339      deallocate(d_xt_con)
1340      deallocate(d_xt_wake)
1341      deallocate(d_xt_lsc)
1342      deallocate(d_xtl_lsc,d_xti_lsc)
1343      deallocate(d_xt_ajsb)
1344      deallocate(d_xt_ajs)
1345      deallocate(d_xt_ajs_w,d_xt_ajs_x)
1346      deallocate(d_xt_eva)
1347      deallocate(d_xtl_eva)
1348      deallocate(d_xti_eva)
1349      deallocate(d_xt_vdf)
1350      deallocate(d_xt_vdf_w,d_xt_vdf_x)
1351      deallocate(d_xt_ch4)
1352      deallocate(d_xt_prod_nucl)
1353      deallocate(d_xt_cosmo)
1354      deallocate(d_xt_decroiss)
1355#endif
1356
1357      DEALLOCATE(d_u_vdf,d_v_vdf)
1358      DEALLOCATE(d_t_oli,d_t_oro)
1359      DEALLOCATE(d_u_oli,d_v_oli)
1360      DEALLOCATE(d_u_oro,d_v_oro)
1361      DEALLOCATE(d_t_oro_gw)
1362      DEALLOCATE(d_u_oro_gw,d_v_oro_gw)
1363      DEALLOCATE(d_t_lif,d_t_ec)
1364      DEALLOCATE(d_u_lif,d_v_lif)
1365      DEALLOCATE(d_ts, d_tr)
1366      DEALLOCATE(topswad_aero,solswad_aero)
1367      DEALLOCATE(topswai_aero,solswai_aero)
1368      DEALLOCATE(topswad0_aero,solswad0_aero)
1369      DEALLOCATE(toplwad_aero,sollwad_aero)
1370      DEALLOCATE(toplwai_aero,sollwai_aero)
1371      DEALLOCATE(toplwad0_aero,sollwad0_aero)
1372      DEALLOCATE(topsw_aero,solsw_aero)
1373      DEALLOCATE(topsw0_aero,solsw0_aero)
1374      DEALLOCATE(topswcf_aero,solswcf_aero)
1375      DEALLOCATE(stratomask)
1376      DEALLOCATE(tausum_aero)
1377      DEALLOCATE(drytausum_aero)
1378      DEALLOCATE(tau3d_aero)
1379      DEALLOCATE(dNovrN)
1380      DEALLOCATE(zfice)
1381      DEALLOCATE(od443aer)
1382      DEALLOCATE(od550aer)
1383      DEALLOCATE(od865aer)
1384      DEALLOCATE(dryod550aer)
1385      DEALLOCATE(abs550aer)
1386      DEALLOCATE(ec550aer)
1387      DEALLOCATE(od550lt1aer)
1388      DEALLOCATE(sconcso4)
1389      DEALLOCATE(sconcno3)
1390      DEALLOCATE(sconcoa)
1391      DEALLOCATE(sconcbc)
1392      DEALLOCATE(sconcss)
1393      DEALLOCATE(sconcdust)
1394      DEALLOCATE(concso4)
1395      DEALLOCATE(concno3)
1396      DEALLOCATE(concoa)
1397      DEALLOCATE(concbc)
1398      DEALLOCATE(concss)
1399      DEALLOCATE(concdust)
1400      DEALLOCATE(loadso4)
1401      DEALLOCATE(loadoa)
1402      DEALLOCATE(loadbc)
1403      DEALLOCATE(loadss)
1404      DEALLOCATE(loaddust)
1405      DEALLOCATE(loadno3)
1406      DEALLOCATE(load_tmp1)
1407      DEALLOCATE(load_tmp2)
1408      DEALLOCATE(load_tmp3)
1409      DEALLOCATE(load_tmp4)
1410      DEALLOCATE(load_tmp5)
1411      DEALLOCATE(load_tmp6)
1412      DEALLOCATE(load_tmp7)
1413      DEALLOCATE(load_tmp8)
1414      DEALLOCATE(load_tmp9)
1415      DEALLOCATE(load_tmp10)
1416      DEALLOCATE(du_gwd_hines,dv_gwd_hines,d_t_hin)
1417      DEALLOCATE(d_q_ch4)
1418      DEALLOCATE(dv_gwd_rando,dv_gwd_front)
1419      DEALLOCATE(east_gwstress,west_gwstress)
1420
1421!IM ajout variables CFMIP2/CMIP5
1422      DEALLOCATE(topswad_aerop, solswad_aerop)
1423      DEALLOCATE(topswai_aerop, solswai_aerop)
1424      DEALLOCATE(topswad0_aerop, solswad0_aerop)
1425      DEALLOCATE(topsw_aerop, topsw0_aerop)
1426      DEALLOCATE(solsw_aerop, solsw0_aerop)
1427      DEALLOCATE(topswcf_aerop, solswcf_aerop)
1428!CK LW diagnostics
1429      DEALLOCATE(toplwad_aerop, sollwad_aerop)
1430      DEALLOCATE(toplwai_aerop, sollwai_aerop)
1431      DEALLOCATE(toplwad0_aerop, sollwad0_aerop)
1432
1433!AI Ajout pour Ecrad (3Deffect)
1434      DEALLOCATE(topswad_aero_s2, solswad_aero_s2)
1435      DEALLOCATE(topswai_aero_s2, solswai_aero_s2)
1436      DEALLOCATE(topswad0_aero_s2, solswad0_aero_s2)
1437      DEALLOCATE(topsw_aero_s2, topsw0_aero_s2)
1438      DEALLOCATE(solsw_aero_s2, solsw0_aero_s2)
1439      DEALLOCATE(topswcf_aero_s2, solswcf_aero_s2)
1440!CK LW diagnostics
1441      DEALLOCATE(toplwad_aero_s2, sollwad_aero_s2)
1442      DEALLOCATE(toplwai_aero_s2, sollwai_aero_s2)
1443      DEALLOCATE(toplwad0_aero_s2, sollwad0_aero_s2)     
1444
1445! FH Ajout de celles necessaires au phys_output_write_mod
1446      DEALLOCATE(tal1, pal1, pab1, pab2)
1447      DEALLOCATE(ptstar, pt0, slp)
1448!
1449      DEALLOCATE(alp_wake)
1450      DEALLOCATE(wake_h,wake_k)
1451      DEALLOCATE(wake_omg)
1452      DEALLOCATE(d_deltat_wk, d_deltaq_wk)
1453      DEALLOCATE(d_s_wk, d_s_a_wk, d_dens_wk, d_dens_a_wk)
1454      DEALLOCATE(d_deltat_wk_gw, d_deltaq_wk_gw)
1455      DEALLOCATE(d_deltat_vdf, d_deltaq_vdf)
1456!!      DEALLOCATE( d_s_vdf, d_dens_vdf)
1457      DEALLOCATE(d_deltat_the, d_deltaq_the)
1458!!      DEALLOCATE( d_s_the, d_dens_the)
1459      DEALLOCATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)
1460#ifdef ISO
1461      DEALLOCATE(d_deltaxt_wk)
1462      DEALLOCATE(d_deltaxt_wk_gw)
1463      DEALLOCATE(d_deltaxt_ajs_cv)
1464      DEALLOCATE(d_deltaxt_vdf)
1465#endif
1466!
1467      DEALLOCATE(bils)
1468      DEALLOCATE(cdragm, cdragh, cldh, cldl)
1469      DEALLOCATE(cldm, cldq, cldt, qsat2m)
1470      DEALLOCATE(JrNt)
1471      DEALLOCATE(dthmin, evap, snowerosion, fder, plcl, plfc)
1472      DEALLOCATE(prw, prlw, prsw, prbsw, water_budget, zustar, zu10m, zv10m, rh2m, s_lcl)
1473      DEALLOCATE(s_pblh, s_pblt, s_therm)
1474!
1475!nrlmd+jyg<
1476      DEALLOCATE(s_pblh_x, s_pblh_w)
1477      DEALLOCATE(s_lcl_x, s_lcl_w)
1478!>nrlmd+jyg
1479!
1480      DEALLOCATE(slab_wfbils, tpot, tpote, ue)
1481      DEALLOCATE(uq, ve, vq, zxffonte)
1482      DEALLOCATE(uwat, vwat)
1483      DEALLOCATE(zxfqcalving, zxfluxlat)
1484! SN runoff_diag
1485      DEALLOCATE(zxrunofflic, runoff_diag)
1486      DEALLOCATE(zxustartlic, zxrhoslic, zxqsaltlic, tempsmoothlic)
1487      DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
1488      DEALLOCATE(rain_lsc)
1489      DEALLOCATE(rain_num)
1490      DEALLOCATE(qlth, qith, qsith, wiceth)
1491!
1492      DEALLOCATE(sens_x, sens_w)
1493      DEALLOCATE(zxfluxlat_x, zxfluxlat_w)
1494      DEALLOCATE(delta_qsurf)
1495!jyg<
1496!!      DEALLOCATE(t_x, t_w)
1497!!      DEALLOCATE(q_x, q_w)
1498!>jyg
1499      DEALLOCATE(d_t_vdf_x, d_t_vdf_w)
1500      DEALLOCATE(d_q_vdf_x, d_q_vdf_w)
1501      DEALLOCATE(pbl_tke_input)
1502      DEALLOCATE(t_therm, q_therm, u_therm, v_therm)
1503      DEALLOCATE(cdragh_x, cdragh_w)
1504      DEALLOCATE(cdragm_x, cdragm_w)
1505      DEALLOCATE(kh, kh_x, kh_w)
1506#ifdef ISO
1507      DEALLOCATE(xtevap,xtprw)
1508      DEALLOCATE(zxfxtcalving)
1509      DEALLOCATE(zxxtrunofflic)
1510      DEALLOCATE(xtsnow_lsc, zxfxtfonte)
1511      DEALLOCATE(xtrain_lsc)
1512      DEALLOCATE(dxtvdf_x, dxtvdf_w)
1513      DEALLOCATE(xt_therm)
1514      DEALLOCATE(h1_diag,xtrunoff_diag)
1515#endif
1516!
1517      DEALLOCATE(ptconv)
1518      DEALLOCATE(ratqsc)
1519!
1520      DEALLOCATE(wbeff, convoccur, zmax_th)
1521      DEALLOCATE(zq2m, zt2m, weak_inversion)
1522      DEALLOCATE(zt2m_min_mon, zt2m_max_mon)
1523      DEALLOCATE(t2m_min_mon, t2m_max_mon)
1524      DEALLOCATE(sens, flwp, fiwp)
1525      DEALLOCATE(alp_bl_conv,alp_bl_det)
1526      DEALLOCATE(alp_bl_fluct_m,alp_bl_fluct_tke)
1527      DEALLOCATE(alp_bl_stat, n2, s2, strig, zcong, zlcl_th)
1528      DEALLOCATE(proba_notrig, random_notrig)
1529!FC
1530      DEALLOCATE(zxfluxq,zxfluxt)
1531
1532      DEALLOCATE(dnwd0)
1533!      DEALLOCATE(upwd, omega, coefh)
1534      DEALLOCATE(omega)
1535      DEALLOCATE(epmax_diag)
1536!      DEALLOCATE(coefm, lambda_th, cldemi)
1537      DEALLOCATE(lambda_th, cldemi)
1538      DEALLOCATE(cldfra, cldtau, fiwc)
1539      DEALLOCATE(fl, re, flwc)
1540      DEALLOCATE(ref_liq, ref_ice, theta)
1541      DEALLOCATE(ref_liq_pi, ref_ice_pi)
1542      DEALLOCATE(zphi, zx_rh, zx_rhl, zx_rhi)
1543      DEALLOCATE(pmfd, pmfu)
1544
1545      DEALLOCATE(t2m, fluxlat)
1546      DEALLOCATE(fsollw, evap_pot)
1547      DEALLOCATE(fsolsw, wfbils)
1548      DEALLOCATE(wfevap)
1549
1550      DEALLOCATE(pmflxr, pmflxs)
1551      DEALLOCATE(wdtrainA, wdtrainS, wdtrainM, wdtrainAS)
1552      DEALLOCATE(upwd, dnwd)
1553      DEALLOCATE(ep)
1554      DEALLOCATE(da, mp)
1555      DEALLOCATE(phi)
1556      DEALLOCATE(wght_cvfd)
1557      DEALLOCATE(phi2)
1558      DEALLOCATE(d1a, dam)
1559      DEALLOCATE(ev)
1560      DEALLOCATE(elij)
1561      DEALLOCATE(qtaa)
1562      DEALLOCATE(clw)
1563      DEALLOCATE(epmlmMm, eplaMm)
1564      DEALLOCATE(sij)
1565#ifdef ISO
1566      DEALLOCATE(xtwdtrainA)
1567      DEALLOCATE(xttaa )
1568      DEALLOCATE(xtclw )
1569      DEALLOCATE(xtev )
1570#ifdef DIAGISO
1571      DEALLOCATE(qlp)
1572      DEALLOCATE(qvp)
1573      DEALLOCATE(fq_detrainement)
1574      DEALLOCATE(fq_ddft)
1575      DEALLOCATE(fq_fluxmasse)
1576      DEALLOCATE(fq_evapprecip)
1577      DEALLOCATE(f_detrainement,q_detrainement)
1578      DEALLOCATE(xtlp)
1579      DEALLOCATE(xtvp)
1580      DEALLOCATE(q_the,xt_the)
1581      DEALLOCATE(fxt_detrainement)
1582      DEALLOCATE(fxt_ddft)
1583      DEALLOCATE(fxt_fluxmasse)
1584      DEALLOCATE(fxt_evapprecip)
1585      DEALLOCATE(xt_detrainement)
1586#endif
1587#endif
1588
1589
1590      DEALLOCATE(prfl, psfl, bsfl, fraca, Vprecip)
1591      DEALLOCATE(zw2)
1592
1593      DEALLOCATE(fluxu, fluxv)
1594      DEALLOCATE(fluxt)
1595
1596      DEALLOCATE(uwriteSTD, vwriteSTD)
1597      DEALLOCATE(wwriteSTD, phiwriteSTD)
1598      DEALLOCATE(qwriteSTD, twriteSTD, rhwriteSTD)
1599
1600! ug et d'autres encore:
1601      DEALLOCATE(beta_prec)
1602      DEALLOCATE(rneb)
1603      DEALLOCATE(pfraclr,pfracld)
1604      DEALLOCATE(cldfraliq)
1605      DEALLOCATE(sigma2_icefracturb)
1606      DEALLOCATE(mean_icefracturb)
1607      DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic)
1608      DEALLOCATE(distcltop)
1609      DEALLOCATE(temp_cltop)
1610#ifdef ISO
1611      DEALLOCATE (zxxtsnow,xtVprecip,xtVprecipi,pxtrfl,pxtsfl)
1612#endif
1613
1614      DEALLOCATE (p_tropopause)
1615      DEALLOCATE (z_tropopause)
1616      DEALLOCATE (t_tropopause)
1617      DEALLOCATE(zn2mout)
1618
1619!-- LSCP - condensation and ice supersaturation variables
1620      DEALLOCATE(qsub, qissr, qcld)
1621      DEALLOCATE(subfra, issrfra)
1622      DEALLOCATE(gamma_cond, ql_seri_lscp, ratio_ql_qtot, qi_seri_lscp, ratio_qi_qtot)
1623      DEALLOCATE(dcf_sub, dcf_con, dcf_mix)
1624      DEALLOCATE(dqi_adj, dqi_sub, dqi_con, dqi_mix)
1625      DEALLOCATE(dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix)
1626      DEALLOCATE(qsatliq, qsatice)
1627
1628!-- LSCP - aviation and contrails variables
1629      DEALLOCATE(d_q_avi, rcont_seri, d_rcont_dyn, flight_dist, flight_h2o)
1630      DEALLOCATE(Tcritcont, qcritcont, potcontfraP, potcontfraNP)
1631      DEALLOCATE(contfra, dcontfra_cir)
1632      DEALLOCATE(dcf_avi, dqi_avi, dqvc_avi)
1633
1634!-- LSCP - POPRECIP variables
1635      DEALLOCATE(qraindiag, qsnowdiag)
1636      DEALLOCATE(dqreva, dqssub)
1637      DEALLOCATE(dqrauto, dqrcol, dqrmelt, dqrfreez)
1638      DEALLOCATE(dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez)
1639
1640IF (CPPKEY_STRATAER) THEN
1641! variables for strat. aerosol CK
1642      DEALLOCATE (d_q_emiss)
1643      DEALLOCATE (R2SO4, R2SO4B)
1644      DEALLOCATE (DENSO4, DENSO4B)
1645      DEALLOCATE (f_r_wet, f_r_wetB)
1646      DEALLOCATE (decfluxaer)
1647      DEALLOCATE (mdw)
1648      DEALLOCATE (SO2_lifetime)
1649      DEALLOCATE (OCS_lifetime)
1650      DEALLOCATE (H2SO4_lifetime)
1651      DEALLOCATE (O3_clim)
1652      DEALLOCATE (alpha_bin)
1653      DEALLOCATE (piz_bin)
1654      DEALLOCATE (cg_bin)
1655      DEALLOCATE (tau_strat_550)
1656      DEALLOCATE (tau_strat_1020)
1657      DEALLOCATE (tausum_strat)
1658      DEALLOCATE (surf_PM25_sulf)
1659      DEALLOCATE (vsed_aer)
1660      DEALLOCATE (sulfmmr)
1661      DEALLOCATE (SAD_sulfate)
1662      DEALLOCATE (reff_sulfate)
1663      DEALLOCATE (sulfmmr_mode)
1664      DEALLOCATE (nd_mode)
1665      DEALLOCATE (budg_3D_ocs_to_so2)
1666      DEALLOCATE (budg_3D_so2_to_h2so4)
1667      DEALLOCATE (budg_3D_backgr_ocs)
1668      DEALLOCATE (budg_3D_backgr_so2)
1669      DEALLOCATE (budg_3D_nucl)
1670      DEALLOCATE (budg_3D_cond_evap)
1671      DEALLOCATE (budg_dep_dry_ocs)
1672      DEALLOCATE (budg_dep_wet_ocs)
1673      DEALLOCATE (budg_dep_dry_so2)
1674      DEALLOCATE (budg_dep_wet_so2)
1675      DEALLOCATE (budg_dep_dry_h2so4)
1676      DEALLOCATE (budg_dep_wet_h2so4)
1677      DEALLOCATE (budg_dep_dry_part)
1678      DEALLOCATE (budg_dep_wet_part)
1679      DEALLOCATE (budg_emi_ocs)
1680      DEALLOCATE (budg_emi_so2)
1681      DEALLOCATE (budg_emi_h2so4)
1682      DEALLOCATE (budg_emi_part)
1683      DEALLOCATE (budg_ocs_to_so2)
1684      DEALLOCATE (budg_so2_to_h2so4)
1685      DEALLOCATE (budg_h2so4_to_part)
1686      DEALLOCATE (budg_sed_part)
1687END IF
1688
1689END SUBROUTINE phys_local_var_end
1690
1691END MODULE phys_local_var_mod
Note: See TracBrowser for help on using the repository browser.