source: LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90 @ 5084

Last change on this file since 5084 was 5084, checked in by Laurent Fairhead, 2 months ago

Reverting to r4065. Updating fortran standard broke too much stuff. Will do it by smaller chunks
AB, LF

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