source: LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90 @ 2769

Last change on this file since 2769 was 2752, checked in by oboucher, 8 years ago

Changes to StratAer? module, including setting up a new output file
hence dimension of output metadata is increased to 10 items.

  • 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 Author Date Id Revision
File size: 42.6 KB
RevLine 
[1279]1!
2! $Id: phys_local_var_mod.F90 2752 2017-01-08 15:44:10Z lguez $
3!
[904]4      MODULE phys_local_var_mod
5! Variables locales pour effectuer les appels en serie
6!======================================================================
7!
8!
9!======================================================================
10! Declaration des variables
11
[987]12      REAL, SAVE, ALLOCATABLE :: t_seri(:,:), q_seri(:,:)
13      !$OMP THREADPRIVATE(t_seri, q_seri)
14      REAL, SAVE, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:)
15      !$OMP THREADPRIVATE(ql_seri,qs_seri)
16      REAL, SAVE, ALLOCATABLE :: u_seri(:,:), v_seri(:,:)
17      !$OMP THREADPRIVATE(u_seri, v_seri)
[2561]18      REAL, SAVE, ALLOCATABLE :: l_mixmin(:,:,:), l_mix(:,:,:)
19      !$OMP THREADPRIVATE(l_mixmin, l_mix)
[904]20
[987]21      REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:)
22      !$OMP THREADPRIVATE(tr_seri)
23      REAL, SAVE, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:)
24      !$OMP THREADPRIVATE(d_t_dyn, d_q_dyn)
[2496]25      REAL, SAVE, ALLOCATABLE :: d_ql_dyn(:,:), d_qs_dyn(:,:)
26      !$OMP THREADPRIVATE(d_ql_dyn, d_qs_dyn)
[2499]27      REAL, SAVE, ALLOCATABLE :: d_q_dyn2d(:), d_ql_dyn2d(:), d_qs_dyn2d(:)
28      !$OMP THREADPRIVATE(d_q_dyn2d, d_ql_dyn2d, d_qs_dyn2d)
[1054]29      REAL, SAVE, ALLOCATABLE :: d_u_dyn(:,:), d_v_dyn(:,:)
30      !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn)
[1742]31      REAL, SAVE, ALLOCATABLE :: d_tr_dyn(:,:,:)
32      !$OMP THREADPRIVATE(d_tr_dyn)
[987]33      REAL, SAVE, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:)
34      !$OMP THREADPRIVATE(d_t_con,d_q_con)
35      REAL, SAVE, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
36      !$OMP THREADPRIVATE(d_u_con,d_v_con)
37      REAL, SAVE, ALLOCATABLE :: d_t_wake(:,:),d_q_wake(:,:)
38      !$OMP THREADPRIVATE( d_t_wake,d_q_wake)
[2086]39      REAL, SAVE, ALLOCATABLE :: d_t_lsc(:,:),d_q_lsc(:,:),d_ql_lsc(:,:),d_qi_lsc(:,:)
[2092]40      !$OMP THREADPRIVATE(d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc)
[2194]41      REAL, SAVE, ALLOCATABLE :: d_t_lwr(:,:),d_t_lw0(:,:),d_t_swr(:,:),d_t_sw0(:,:)
42      !$OMP THREADPRIVATE(d_t_lwr,d_t_lw0,d_t_swr,d_t_sw0)
[987]43      REAL, SAVE, ALLOCATABLE :: d_t_ajsb(:,:), d_q_ajsb(:,:)
44      !$OMP THREADPRIVATE(d_t_ajsb, d_q_ajsb)
45      REAL, SAVE, ALLOCATABLE :: d_t_ajs(:,:), d_q_ajs(:,:)
46      !$OMP THREADPRIVATE(d_t_ajs, d_q_ajs)
47      REAL, SAVE, ALLOCATABLE :: d_u_ajs(:,:), d_v_ajs(:,:)
48      !$OMP THREADPRIVATE(d_u_ajs, d_v_ajs)
[2159]49!nrlmd<
50      REAL, SAVE, ALLOCATABLE :: d_t_ajs_w(:,:), d_q_ajs_w(:,:)
51      !$OMP THREADPRIVATE(d_t_ajs_w, d_q_ajs_w)
52      REAL, SAVE, ALLOCATABLE :: d_t_ajs_x(:,:), d_q_ajs_x(:,:)
53      !$OMP THREADPRIVATE(d_t_ajs_x, d_q_ajs_x)
54!>nrlmd
[2706]55      REAL, SAVE, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:),d_ql_eva(:,:),d_qi_eva(:,:)
56      !$OMP THREADPRIVATE(d_t_eva,d_q_eva,d_ql_eva,d_qi_eva)
[1507]57      REAL, SAVE, ALLOCATABLE :: d_t_lscst(:,:),d_q_lscst(:,:)
58      !$OMP THREADPRIVATE(d_t_lscst,d_q_lscst)
59      REAL, SAVE, ALLOCATABLE :: d_t_lscth(:,:),d_q_lscth(:,:)
60      !$OMP THREADPRIVATE(d_t_lscth,d_q_lscth)
61      REAL, SAVE, ALLOCATABLE :: plul_th(:),plul_st(:)
62      !$OMP THREADPRIVATE(plul_th,plul_st)
[909]63!tendances dues a oro et lif
[987]64      REAL, SAVE, ALLOCATABLE :: d_t_oli(:,:)
65      !$OMP THREADPRIVATE(d_t_oli)
66      REAL, SAVE, ALLOCATABLE :: d_u_oli(:,:), d_v_oli(:,:)
67      !$OMP THREADPRIVATE(d_u_oli, d_v_oli)
[1761]68      REAL, SAVE, ALLOCATABLE :: d_t_vdf(:,:), d_q_vdf(:,:), d_t_diss(:,:)
69      !$OMP THREADPRIVATE( d_t_vdf, d_q_vdf,d_t_diss)
[987]70      REAL, SAVE, ALLOCATABLE :: d_u_vdf(:,:), d_v_vdf(:,:)
71      !$OMP THREADPRIVATE(d_u_vdf, d_v_vdf)
[2159]72!nrlmd+jyg<
73      REAL, SAVE, ALLOCATABLE :: d_t_vdf_w(:,:), d_q_vdf_w(:,:)
74      !$OMP THREADPRIVATE( d_t_vdf_w, d_q_vdf_w)
75      REAL, SAVE, ALLOCATABLE :: d_t_vdf_x(:,:), d_q_vdf_x(:,:)
76      !$OMP THREADPRIVATE( d_t_vdf_x, d_q_vdf_x)
77!>nrlmd+jyg
[987]78      REAL, SAVE, ALLOCATABLE :: d_t_oro(:,:)
79      !$OMP THREADPRIVATE(d_t_oro)
80      REAL, SAVE, ALLOCATABLE :: d_u_oro(:,:), d_v_oro(:,:)
81      !$OMP THREADPRIVATE(d_u_oro, d_v_oro)
82      REAL, SAVE, ALLOCATABLE :: d_t_lif(:,:)
83      !$OMP THREADPRIVATE(d_t_lif)
84      REAL, SAVE, ALLOCATABLE :: d_u_lif(:,:), d_v_lif(:,:)
85      !$OMP THREADPRIVATE(d_u_lif, d_v_lif)
[1001]86! Tendances Ondes de G non oro (runs strato).
[2333]87      REAL, SAVE, ALLOCATABLE :: du_gwd_hines(:,:)
88      !$OMP THREADPRIVATE(du_gwd_hines)
89      REAL, SAVE, ALLOCATABLE :: dv_gwd_hines(:,:)
90      !$OMP THREADPRIVATE(dv_gwd_hines)
91      REAL, SAVE, ALLOCATABLE :: dv_gwd_rando(:,:)
92      !$OMP THREADPRIVATE(dv_gwd_rando)
93      REAL, SAVE, ALLOCATABLE :: dv_gwd_front(:,:)
94      !$OMP THREADPRIVATE(dv_gwd_front)
95      REAL, SAVE, ALLOCATABLE :: east_gwstress(:,:)
96      !$OMP THREADPRIVATE(east_gwstress)
97      REAL, SAVE, ALLOCATABLE :: west_gwstress(:,:)
98      !$OMP THREADPRIVATE(west_gwstress)
[1001]99      REAL, SAVE, ALLOCATABLE :: d_t_hin(:,:)
100      !$OMP THREADPRIVATE(d_t_hin)
[2136]101! tendance due a l'oxydation du methane
102      REAL, SAVE, ALLOCATABLE :: d_q_ch4(:,:)
103      !$OMP THREADPRIVATE(d_q_ch4)
[1001]104
[909]105! tendance du a la conersion Ec -> E thermique
[987]106      REAL, SAVE, ALLOCATABLE :: d_t_ec(:,:)
107      !$OMP THREADPRIVATE(d_t_ec)
108      REAL, SAVE, ALLOCATABLE :: d_ts(:,:), d_tr(:,:,:)
109      !$OMP THREADPRIVATE(d_ts, d_tr)
[1279]110
111! diagnostique pour le rayonnement
112      REAL, SAVE, ALLOCATABLE :: topswad_aero(:),  solswad_aero(:)      ! diag
113      !$OMP THREADPRIVATE(topswad_aero,solswad_aero)
114      REAL, SAVE, ALLOCATABLE :: topswai_aero(:),  solswai_aero(:)      ! diag
115      !$OMP THREADPRIVATE(topswai_aero,solswai_aero)
116      REAL, SAVE, ALLOCATABLE :: topswad0_aero(:), solswad0_aero(:)     ! diag
117      !$OMP THREADPRIVATE(topswad0_aero,solswad0_aero)
118      REAL, SAVE, ALLOCATABLE :: topsw_aero(:,:),  solsw_aero(:,:)      ! diag
119      !$OMP THREADPRIVATE(topsw_aero,solsw_aero)
120      REAL, SAVE, ALLOCATABLE :: topsw0_aero(:,:), solsw0_aero(:,:)     ! diag
121      !$OMP THREADPRIVATE(topsw0_aero,solsw0_aero)
122      REAL, SAVE, ALLOCATABLE :: topswcf_aero(:,:),  solswcf_aero(:,:)  ! diag
123      !$OMP THREADPRIVATE(topswcf_aero,solswcf_aero)
[2146]124! LW radiation diagnostics CK
125      REAL, SAVE, ALLOCATABLE :: toplwad_aero(:),  sollwad_aero(:)      ! diag
126      !$OMP THREADPRIVATE(toplwad_aero,sollwad_aero)
127      REAL, SAVE, ALLOCATABLE :: toplwai_aero(:),  sollwai_aero(:)      ! diag
128      !$OMP THREADPRIVATE(toplwai_aero,sollwai_aero)
129      REAL, SAVE, ALLOCATABLE :: toplwad0_aero(:), sollwad0_aero(:)     ! diag
130      !$OMP THREADPRIVATE(toplwad0_aero,sollwad0_aero)
[1989]131! Special RRTM
132      REAL, SAVE, ALLOCATABLE :: ZLWFT0_i(:,:),  ZSWFT0_i(:,:)      ! diag
133      !$OMP THREADPRIVATE(ZLWFT0_i,ZSWFT0_i)
134      REAL, SAVE, ALLOCATABLE :: ZFLDN0(:,:),  ZFLUP0(:,:)      ! diag
135      !$OMP THREADPRIVATE(ZFLDN0,ZFLUP0)
136      REAL, SAVE, ALLOCATABLE :: ZFSDN0(:,:),  ZFSUP0(:,:)      ! diag
137      !$OMP THREADPRIVATE(ZFSDN0,ZFSUP0)
138!
[2536]139      REAL, SAVE, ALLOCATABLE :: stratomask(:,:)
140      !$OMP THREADPRIVATE(stratomask)
[1279]141      REAL, SAVE, ALLOCATABLE :: tausum_aero(:,:,:)
142      !$OMP THREADPRIVATE(tausum_aero)
143      REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:)
144      !$OMP THREADPRIVATE(tau3d_aero)
[1337]145      REAL, SAVE, ALLOCATABLE :: scdnc(:,:)
146      !$OMP THREADPRIVATE(scdnc)
147      REAL, SAVE, ALLOCATABLE :: cldncl(:)
148      !$OMP THREADPRIVATE(cldncl)
149      REAL, SAVE, ALLOCATABLE :: reffclwtop(:)
150      !$OMP THREADPRIVATE(reffclwtop)
151      REAL, SAVE, ALLOCATABLE :: lcc(:)
152      !$OMP THREADPRIVATE(lcc)
153      REAL, SAVE, ALLOCATABLE :: reffclws(:,:)
154      !$OMP THREADPRIVATE(reffclws)
155      REAL, SAVE, ALLOCATABLE :: reffclwc(:,:)
156      !$OMP THREADPRIVATE(reffclwc)
157      REAL, SAVE, ALLOCATABLE :: cldnvi(:)
158      !$OMP THREADPRIVATE(cldnvi)
159      REAL, SAVE, ALLOCATABLE :: lcc3d(:,:)
160      !$OMP THREADPRIVATE(lcc3d)
161      REAL, SAVE, ALLOCATABLE :: lcc3dcon(:,:)
162      !$OMP THREADPRIVATE(lcc3dcon)
163      REAL, SAVE, ALLOCATABLE :: lcc3dstra(:,:)
164      !$OMP THREADPRIVATE(lcc3dstra)
165      REAL, SAVE, ALLOCATABLE :: od550aer(:)
166      !$OMP THREADPRIVATE(od550aer)
167      REAL, SAVE, ALLOCATABLE :: absvisaer(:)
168      !$OMP THREADPRIVATE(absvisaer)
169      REAL, SAVE, ALLOCATABLE :: od865aer(:)
170      !$OMP THREADPRIVATE(od865aer)
171      REAL, SAVE, ALLOCATABLE :: ec550aer(:,:)
172      !$OMP THREADPRIVATE(ec550aer)
173      REAL, SAVE, ALLOCATABLE :: od550lt1aer(:)
174      !$OMP THREADPRIVATE(od550lt1aer)
175      REAL, SAVE, ALLOCATABLE :: sconcso4(:)
176      !$OMP THREADPRIVATE(sconcso4)
[2146]177      REAL, SAVE, ALLOCATABLE :: sconcno3(:)
178      !$OMP THREADPRIVATE(sconcno3)
[1337]179      REAL, SAVE, ALLOCATABLE :: sconcoa(:)
180      !$OMP THREADPRIVATE(sconcoa)
181      REAL, SAVE, ALLOCATABLE :: sconcbc(:)
182      !$OMP THREADPRIVATE(sconcbc)
183      REAL, SAVE, ALLOCATABLE :: sconcss(:)
184      !$OMP THREADPRIVATE(sconcss)
185      REAL, SAVE, ALLOCATABLE :: sconcdust(:)
186      !$OMP THREADPRIVATE(sconcdust)
187      REAL, SAVE, ALLOCATABLE :: concso4(:,:)
188      !$OMP THREADPRIVATE(concso4)
[2146]189      REAL, SAVE, ALLOCATABLE :: concno3(:,:)
190      !$OMP THREADPRIVATE(concno3)
[1337]191      REAL, SAVE, ALLOCATABLE :: concoa(:,:)
192      !$OMP THREADPRIVATE(concoa)
193      REAL, SAVE, ALLOCATABLE :: concbc(:,:)
194      !$OMP THREADPRIVATE(concbc)
195      REAL, SAVE, ALLOCATABLE :: concss(:,:)
196      !$OMP THREADPRIVATE(concss)
197      REAL, SAVE, ALLOCATABLE :: concdust(:,:)
198      !$OMP THREADPRIVATE(concdust)
199      REAL, SAVE, ALLOCATABLE :: loadso4(:)
200      !$OMP THREADPRIVATE(loadso4)
201      REAL, SAVE, ALLOCATABLE :: loadoa(:)
202      !$OMP THREADPRIVATE(loadoa)
203      REAL, SAVE, ALLOCATABLE :: loadbc(:)
204      !$OMP THREADPRIVATE(loadbc)
205      REAL, SAVE, ALLOCATABLE :: loadss(:)
206      !$OMP THREADPRIVATE(loadss)
207      REAL, SAVE, ALLOCATABLE :: loaddust(:)
208      !$OMP THREADPRIVATE(loaddust)
209      REAL, SAVE, ALLOCATABLE :: load_tmp1(:)
210      !$OMP THREADPRIVATE(load_tmp1)
211      REAL, SAVE, ALLOCATABLE :: load_tmp2(:)
212      !$OMP THREADPRIVATE(load_tmp2)
213      REAL, SAVE, ALLOCATABLE :: load_tmp3(:)
214      !$OMP THREADPRIVATE(load_tmp3)
215      REAL, SAVE, ALLOCATABLE :: load_tmp4(:)
216      !$OMP THREADPRIVATE(load_tmp4)
217      REAL, SAVE, ALLOCATABLE :: load_tmp5(:)
218      !$OMP THREADPRIVATE(load_tmp5)
219      REAL, SAVE, ALLOCATABLE :: load_tmp6(:)
220      !$OMP THREADPRIVATE(load_tmp6)
221      REAL, SAVE, ALLOCATABLE :: load_tmp7(:)
222      !$OMP THREADPRIVATE(load_tmp7)
[1279]223
[1539]224!IM ajout variables CFMIP2/CMIP5
225      REAL,ALLOCATABLE,SAVE :: topswad_aerop(:), solswad_aerop(:)
226!$OMP THREADPRIVATE(topswad_aerop, solswad_aerop)
227      REAL,ALLOCATABLE,SAVE :: topswai_aerop(:), solswai_aerop(:)
228!$OMP THREADPRIVATE(topswai_aerop, solswai_aerop)
229      REAL,ALLOCATABLE,SAVE :: topswad0_aerop(:), solswad0_aerop(:)
230!$OMP THREADPRIVATE(topswad0_aerop, solswad0_aerop)
231      REAL,ALLOCATABLE,SAVE :: topsw_aerop(:,:), topsw0_aerop(:,:) 
232!$OMP THREADPRIVATE(topsw_aerop, topsw0_aerop)
233      REAL,ALLOCATABLE,SAVE :: solsw_aerop(:,:), solsw0_aerop(:,:)
234!$OMP THREADPRIVATE(solsw_aerop, solsw0_aerop)
235      REAL,ALLOCATABLE,SAVE :: topswcf_aerop(:,:), solswcf_aerop(:,:)
236!$OMP THREADPRIVATE(topswcf_aerop, solswcf_aerop)
237
[2146]238! additional LW variables CK
239      REAL,ALLOCATABLE,SAVE :: toplwad_aerop(:), sollwad_aerop(:)
240!$OMP THREADPRIVATE(toplwad_aerop, sollwad_aerop)
241      REAL,ALLOCATABLE,SAVE :: toplwai_aerop(:), sollwai_aerop(:)
242!$OMP THREADPRIVATE(toplwai_aerop, sollwai_aerop)
243      REAL,ALLOCATABLE,SAVE :: toplwad0_aerop(:), sollwad0_aerop(:)
244!$OMP THREADPRIVATE(toplwad0_aerop, sollwad0_aerop)
[1797]245
246!Ajout de celles nécessaires au phys_output_write_mod
[2385]247      REAL, SAVE, ALLOCATABLE :: tal1(:), pal1(:), pab1(:), pab2(:)
248!$OMP THREADPRIVATE(tal1, pal1, pab1, pab2)
249      REAL, SAVE, ALLOCATABLE :: ptstar(:), pt0(:), slp(:)
250!$OMP THREADPRIVATE(ptstar, pt0, slp)
[1797]251      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp
252!$OMP THREADPRIVATE(sens, flwp, fiwp)
[2635]253!!
254!!         Wake variables
255      REAL,ALLOCATABLE,SAVE,DIMENSION(:)            :: ale_wake, alp_wake
256!$OMP THREADPRIVATE(ale_wake, alp_wake)           
[2732]257      REAL,ALLOCATABLE,SAVE,DIMENSION(:)            :: wake_h,wake_k
258!$OMP THREADPRIVATE(wake_h,wake_k)                       
[2635]259    REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)            :: wake_omg
260!$OMP THREADPRIVATE(wake_omg)                     
261    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:)          :: d_deltat_wk, d_deltaq_wk
262!$OMP THREADPRIVATE(d_deltat_wk, d_deltaq_wk)
263      REAL,ALLOCATABLE,SAVE,DIMENSION(:)            :: d_s_wk, d_dens_wk
264!$OMP THREADPRIVATE(d_s_wk, d_dens_wk)
265    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:)          :: d_deltat_wk_gw, d_deltaq_wk_gw
266!$OMP THREADPRIVATE(d_deltat_wk_gw, d_deltaq_wk_gw)
267    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:)          :: d_deltat_vdf, d_deltaq_vdf
268!$OMP THREADPRIVATE(d_deltat_vdf, d_deltaq_vdf)
269!!!      REAL,ALLOCATABLE,SAVE,DIMENSION(:)          :: d_s_vdf, d_dens_vdf
270!!!OMP THREADPRIVATE(d_s_vdf, d_dens_vdf)
271    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:)          :: d_deltat_the, d_deltaq_the
272!$OMP THREADPRIVATE(d_deltat_the, d_deltaq_the)
273!!!      REAL,ALLOCATABLE,SAVE,DIMENSION(:)          :: d_s_the, d_dens_the
274!!!OMP THREADPRIVATE(d_s_the, d_dens_the)
275      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)           :: d_deltat_ajs_cv, d_deltaq_ajs_cv
276!$OMP THREADPRIVATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)                       
277!!         End of Wake variables
278!!
279      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: bils
280!$OMP THREADPRIVATE(bils)
[1797]281      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh
282!$OMP THREADPRIVATE(cdragm, cdragh)
[2243]283      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m
284!$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m )
[1924]285      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldhjn, cldljn, cldmjn,cldtjn
286!$OMP THREADPRIVATE(cldhjn, cldljn, cldmjn, cldtjn)
287      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: JrNt
288!$OMP THREADPRIVATE(JrNt)
[2496]289      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw, prlw, prsw
290!$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw, prlw, prsw)
[1797]291      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m
292!$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m)
293      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_lcl, s_pblh, s_pblt, s_therm
294!$OMP THREADPRIVATE(s_lcl, s_pblh, s_pblt, s_therm)
[2159]295!
296!nrlmd+jyg<
297      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_pblh_x, s_pblh_w
298!$OMP THREADPRIVATE(s_pblh_x, s_pblh_w)
299      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_lcl_x, s_lcl_w
300!$OMP THREADPRIVATE(s_lcl_x, s_lcl_w)
301!>nrlmd+jyg
302!
[1797]303      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: slab_wfbils
304!$OMP THREADPRIVATE(slab_wfbils)
305      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: tpot, tpote, ue, uq, ve, vq, zxffonte
306!$OMP THREADPRIVATE(tpot, tpote, ue, uq, ve, vq, zxffonte)
307      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfqcalving
308!$OMP THREADPRIVATE(zxfqcalving)
[2243]309      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat, zxtsol, snow_lsc, zxfqfonte
310!$OMP THREADPRIVATE(zxfluxlat, zxtsol, snow_lsc, zxfqfonte)
[2518]311      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxrunofflic
312!$OMP THREADPRIVATE(zxrunofflic)
[2516]313      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc, rain_num
314!$OMP THREADPRIVATE(zxqsurf, rain_lsc, rain_num)
[2159]315!
316!jyg+nrlmd<
317!!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
318!                                                                          c
319!       Declarations liees a la couche limite differentiee w-x             c
320!                                                                          c
321!!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
322      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens_x, sens_w
323!$OMP THREADPRIVATE(sens_x, sens_w)
324      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat_x, zxfluxlat_w
325!$OMP THREADPRIVATE(zxfluxlat_x, zxfluxlat_w)
[2181]326!jyg<
327!!! Entrées supplémentaires couche-limite
328!!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t_x, t_w
329!!!$OMP THREADPRIVATE(t_x, t_w)
330!!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: q_x, q_w
331!!!$OMP THREADPRIVATE(q_x, q_w)
332!>jyg
333!!! Sorties ferret
[2159]334      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dtvdf_x, dtvdf_w
335!$OMP THREADPRIVATE(dtvdf_x, dtvdf_w)
336      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dqvdf_x, dqvdf_w
337!$OMP THREADPRIVATE(dqvdf_x, dqvdf_w)
338! Variables supplémentaires dans physiq.F relative au splitting de la surface
339      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: pbl_tke_input
340!$OMP THREADPRIVATE(pbl_tke_input)
341! Entree supplementaire Thermiques :
[2607]342      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t_therm, q_therm, u_therm, v_therm
343!$OMP THREADPRIVATE(t_therm, q_therm, u_therm, v_therm)
[2159]344      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragh_x, cdragh_w
345!$OMP THREADPRIVATE(cdragh_x, cdragh_w)
346      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm_x, cdragm_w
347!$OMP THREADPRIVATE(cdragm_x, cdragm_w)
348      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: kh, kh_x, kh_w
349!$OMP THREADPRIVATE(kh, kh_x, kh_w)
350!!!
351!!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
352!>jyg+nrlmd
353  !
[2635]354      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wbeff, zmax_th, zq2m, zt2m
355!$OMP THREADPRIVATE(wbeff, zmax_th, zq2m, zt2m)
[2103]356      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zt2m_min_mon, zt2m_max_mon
357!$OMP THREADPRIVATE(zt2m_min_mon, zt2m_max_mon)
358      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: t2m_min_mon, t2m_max_mon
359!$OMP THREADPRIVATE(t2m_min_mon, t2m_max_mon)
[1797]360      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: weak_inversion
361!$OMP THREADPRIVATE(weak_inversion)
362      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_bl_stat,alp_bl_conv,alp_bl_det
363!$OMP THREADPRIVATE(ale_bl_stat,alp_bl_conv,alp_bl_det)
364      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_fluct_m,alp_bl_fluct_tke
365!$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke)
366      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_stat, n2, s2
367!$OMP THREADPRIVATE(alp_bl_stat, n2, s2)
368      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: proba_notrig, random_notrig
369!$OMP THREADPRIVATE(proba_notrig, random_notrig)
370      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: fsolsw, wfbils, wfbilo
371!$OMP THREADPRIVATE(fsolsw, wfbils, wfbilo)
[2670]372      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wfevap, wfrain, wfsnow
373!$OMP THREADPRIVATE(wfevap,wfrain,wfsnow)
[2243]374      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: t2m, fluxlat, fsollw,evap_pot
375!$OMP THREADPRIVATE(t2m, fluxlat, fsollw,evap_pot)
[1797]376      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd, dnwd0, upwd, omega
377!$OMP THREADPRIVATE(dnwd, dnwd0, upwd, omega)
[2481]378      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: epmax_diag ! epmax_cape
379!$OMP THREADPRIVATE(epmax_diag)
380      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ep ! epmax_cape
381!$OMP THREADPRIVATE(ep)
[1797]382!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th
383      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: lambda_th
384!$OMP THREADPRIVATE(lambda_th)
385      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc
386!$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc)
387      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq, ref_ice, theta, zphi
388!$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi)
[1989]389      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq_pi, ref_ice_pi
390!$OMP THREADPRIVATE(ref_liq_pi, ref_ice_pi)
[2635]391      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zx_rh
392!$OMP THREADPRIVATE(zx_rh)
[1797]393      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca
394!$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca)
395      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: Vprecip, zw2
396!$OMP THREADPRIVATE(Vprecip, zw2)
397      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmfd, pmfu
398!$OMP THREADPRIVATE(pmfd, pmfu)
399      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: fluxt, fluxu, fluxv
400!$OMP THREADPRIVATE(fluxt, fluxu, fluxv)
401      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: uwriteSTD, vwriteSTD, wwriteSTD
402!$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD)
[1828]403      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD
404!$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD)
[1797]405
406! ug et d'autres encore:
407      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wdtrainA, wdtrainM
408!$OMP THREADPRIVATE(wdtrainA, wdtrainM)
409      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec
410!$OMP THREADPRIVATE(beta_prec)
[1924]411      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rneb,rnebjn
412!$OMP THREADPRIVATE(rneb,rnebjn)
[1797]413
[1865]414! variables de sorties MM
[1872]415      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxsnow,snowhgt,qsnow,to_ice
416      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: sissnow,runoff,albsol3_lic
417!$OMP THREADPRIVATE(zxsnow,snowhgt,qsnow,to_ice)
418!$OMP THREADPRIVATE(sissnow,runoff,albsol3_lic)
[1865]419
[2690]420#ifdef CPP_StratAer
[2752]421!
422! variables for stratospheric aerosol
[2690]423      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: R2SO4
424!$OMP THREADPRIVATE(R2SO4)
425      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: DENSO4
426!$OMP THREADPRIVATE(DENSO4)
427      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: f_r_wet
428!$OMP THREADPRIVATE(f_r_wet)
429      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: decfluxaer
430!$OMP THREADPRIVATE(decfluxaer)
431      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: mdw
432!$OMP THREADPRIVATE(mdw)
433      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: OCS_lifetime
434!$OMP THREADPRIVATE(OCS_lifetime)
435      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: SO2_lifetime
436!$OMP THREADPRIVATE(SO2_lifetime)
437      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: alpha_bin
438!$OMP THREADPRIVATE(alpha_bin)
439      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: piz_bin
440!$OMP THREADPRIVATE(piz_bin)
441      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: cg_bin
442!$OMP THREADPRIVATE(cg_bin)
443      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tau_strat_550
444!$OMP THREADPRIVATE(tau_strat_550)
445      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tau_strat_1020
446!$OMP THREADPRIVATE(tau_strat_1020)
447      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tausum_strat
448!$OMP THREADPRIVATE(tausum_strat)
449      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: surf_PM25_sulf
450!$OMP THREADPRIVATE(surf_PM25_sulf)
451      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: p_tropopause
452!$OMP THREADPRIVATE(p_tropopause)
453      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vsed_aer
454!$OMP THREADPRIVATE(vsed_aer)
[2752]455!
456!---3D budget variables
457      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: budg_3D_nucl
458!$OMP THREADPRIVATE(budg_3D_nucl)
459      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: budg_3D_cond_evap
460!$OMP THREADPRIVATE(budg_3D_cond_evap)
461      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: budg_3D_ocs_to_so2
462!$OMP THREADPRIVATE(budg_3D_ocs_to_so2)
463      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: budg_3D_so2_to_h2so4
464!$OMP THREADPRIVATE(budg_3D_so2_to_h2so4)
465      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: budg_3D_backgr_ocs
466!$OMP THREADPRIVATE(budg_3D_backgr_ocs)
467      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: budg_3D_backgr_so2
468!$OMP THREADPRIVATE(budg_3D_backgr_so2)
469!
470!---2D budget variables
471      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_h2so4
472      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_dry_part
473!$OMP THREADPRIVATE(budg_dep_dry_h2so4,budg_dep_dry_part)
474      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_h2so4
475      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_dep_wet_part
476!$OMP THREADPRIVATE(budg_dep_wet_h2so4,budg_dep_wet_part)
477      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_ocs
478      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_so2
479      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_h2so4
480      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_emi_part
481!$OMP THREADPRIVATE(budg_emi_ocs,budg_emi_so2,budg_emi_h2so4,budg_emi_part)
482      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_ocs_to_so2
483      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_so2_to_h2so4
484      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_h2so4_to_part
485!$OMP THREADPRIVATE(budg_ocs_to_so2,budg_so2_to_h2so4,budg_h2so4_to_part)
486      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: budg_sed_part
487!$OMP THREADPRIVATE(budg_sed_part)
[2690]488#endif
489
[904]490CONTAINS
491
492!======================================================================
493SUBROUTINE phys_local_var_init
[1785]494USE dimphy
[2320]495USE infotrac_phy, ONLY : nbtr
[1279]496USE aero_mod
[1785]497USE indice_sol_mod
[1797]498USE phys_output_var_mod
499USE phys_state_var_mod
[1279]500
[904]501IMPLICIT NONE
502      allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev))
503      allocate(u_seri(klon,klev),v_seri(klon,klev))
[2574]504      allocate(l_mixmin(klon,klev,nbsrf), l_mix(klon,klev,nbsrf))
505      l_mix(:,:,:)=0. ; l_mixmin(:,:,:)=0. ! doit etre initialse car pas toujours remplis
[909]506
507      allocate(tr_seri(klon,klev,nbtr))
508      allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
[2496]509      allocate(d_ql_dyn(klon,klev),d_qs_dyn(klon,klev))
[2499]510      allocate(d_q_dyn2d(klon),d_ql_dyn2d(klon),d_qs_dyn2d(klon))
[1054]511      allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev))
[1742]512      allocate(d_tr_dyn(klon,klev,nbtr))                   !RomP
[909]513      allocate(d_t_con(klon,klev),d_q_con(klon,klev))
514      allocate(d_u_con(klon,klev),d_v_con(klon,klev))
515      allocate(d_t_wake(klon,klev),d_q_wake(klon,klev))
516      allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev))
[2194]517      allocate(d_t_lwr(klon,klev),d_t_lw0(klon,klev))
518      allocate(d_t_swr(klon,klev),d_t_sw0(klon,klev))
[2086]519      allocate(d_ql_lsc(klon,klev),d_qi_lsc(klon,klev))
[909]520      allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev))
521      allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev))
[2159]522!nrlmd<
523      allocate(d_t_ajs_w(klon,klev),d_q_ajs_w(klon,klev))
524      allocate(d_t_ajs_x(klon,klev),d_q_ajs_x(klon,klev))
525!>nrlmd
[909]526      allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev))
527      allocate(d_t_eva(klon,klev),d_q_eva(klon,klev))
[2706]528      allocate(d_ql_eva(klon,klev),d_qi_eva(klon,klev))
[1507]529      allocate(d_t_lscst(klon,klev),d_q_lscst(klon,klev))
530      allocate(d_t_lscth(klon,klev),d_q_lscth(klon,klev))
531      allocate(plul_st(klon),plul_th(klon))
[1761]532      allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev),d_t_diss(klon,klev))
[2159]533!nrlmd+jyg<
534      allocate(d_t_vdf_w(klon,klev),d_q_vdf_w(klon,klev))
535      allocate(d_t_vdf_x(klon,klev),d_q_vdf_x(klon,klev))
536!>nrlmd+jyg
[909]537      allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev))
538      allocate(d_t_oli(klon,klev),d_t_oro(klon,klev))
539      allocate(d_u_oli(klon,klev),d_v_oli(klon,klev))
540      allocate(d_u_oro(klon,klev),d_v_oro(klon,klev))
541      allocate(d_t_lif(klon,klev),d_t_ec(klon,klev))
542      allocate(d_u_lif(klon,klev),d_v_lif(klon,klev))
[1424]543      allocate(d_ts(klon,nbsrf), d_tr(klon,klev,nbtr))
[1989]544! Special RRTM
545      allocate(ZLWFT0_i(klon,klev+1),ZSWFT0_i(klon,klev+1),ZFLDN0(klon,klev+1))
546      allocate(ZFLUP0(klon,klev+1),ZFSDN0(klon,klev+1),ZFSUP0(klon,klev+1))
547!
[1279]548      allocate(topswad_aero(klon), solswad_aero(klon))
549      allocate(topswai_aero(klon), solswai_aero(klon))
550      allocate(topswad0_aero(klon), solswad0_aero(klon))
[2146]551     ! LW diagnostics CK
552      allocate(toplwad_aero(klon), sollwad_aero(klon))
553      allocate(toplwai_aero(klon), sollwai_aero(klon))
554      allocate(toplwad0_aero(klon), sollwad0_aero(klon))
555      ! end
[1279]556      allocate(topsw_aero(klon,naero_grp), solsw_aero(klon,naero_grp))
557      allocate(topsw0_aero(klon,naero_grp), solsw0_aero(klon,naero_grp))
558      allocate(topswcf_aero(klon,3), solswcf_aero(klon,3))
[2333]559      allocate(du_gwd_hines(klon,klev),dv_gwd_hines(klon,klev))
560      allocate(dv_gwd_rando(klon,klev),dv_gwd_front(klon,klev))
561      allocate(east_gwstress(klon,klev),west_gwstress(klon,klev))
562      allocate(d_t_hin(klon,klev))
[2136]563      allocate(d_q_ch4(klon,klev))
[2003]564!      allocate(tausum_aero(klon,nwave,naero_spc))
565!      allocate(tau3d_aero(klon,klev,nwave,naero_spc))
[2536]566      allocate(stratomask(klon,klev))
[2003]567!--correction mini bug OB
568      allocate(tausum_aero(klon,nwave,naero_tot))
569      allocate(tau3d_aero(klon,klev,nwave,naero_tot))
[1337]570      allocate(scdnc(klon, klev))
571      allocate(cldncl(klon))
572      allocate(reffclwtop(klon))
573      allocate(lcc(klon))
574      allocate(reffclws(klon, klev))
575      allocate(reffclwc(klon, klev))
576      allocate(cldnvi(klon))
577      allocate(lcc3d(klon, klev))
578      allocate(lcc3dcon(klon, klev))
579      allocate(lcc3dstra(klon, klev))
[2159]580      allocate(od550aer(klon))
581      allocate(od865aer(klon))
582      allocate(absvisaer(klon))
[1337]583      allocate(ec550aer(klon,klev))
[2159]584      allocate(od550lt1aer(klon))
[1337]585      allocate(sconcso4(klon))
[2146]586      allocate(sconcno3(klon))
[1337]587      allocate(sconcoa(klon))
588      allocate(sconcbc(klon))
589      allocate(sconcss(klon))
590      allocate(sconcdust(klon))
591      allocate(concso4(klon,klev))
[2146]592      allocate(concno3(klon,klev))
[1337]593      allocate(concoa(klon,klev))
594      allocate(concbc(klon,klev))
595      allocate(concss(klon,klev))
596      allocate(concdust(klon,klev))
597      allocate(loadso4(klon))
598      allocate(loadoa(klon))
599      allocate(loadbc(klon))
600      allocate(loadss(klon))
601      allocate(loaddust(klon))
602      allocate(load_tmp1(klon))
603      allocate(load_tmp2(klon))
604      allocate(load_tmp3(klon))
605      allocate(load_tmp4(klon))
606      allocate(load_tmp5(klon))
607      allocate(load_tmp6(klon))
608      allocate(load_tmp7(klon))
[1279]609
[1539]610!IM ajout variables CFMIP2/CMIP5
611      ALLOCATE(topswad_aerop(klon), solswad_aerop(klon))
612      ALLOCATE(topswai_aerop(klon), solswai_aerop(klon))
613      ALLOCATE(topswad0_aerop(klon), solswad0_aerop(klon))
614      ALLOCATE(topsw_aerop(klon,naero_grp), topsw0_aerop(klon,naero_grp))
615      ALLOCATE(solsw_aerop(klon,naero_grp), solsw0_aerop(klon,naero_grp))
616      ALLOCATE(topswcf_aerop(klon,naero_grp), solswcf_aerop(klon,naero_grp))
617
[2146]618! additional LW variables CK
619      ALLOCATE(toplwad_aerop(klon), sollwad_aerop(klon))
620      ALLOCATE(toplwai_aerop(klon), sollwai_aerop(klon))
621      ALLOCATE(toplwad0_aerop(klon), sollwad0_aerop(klon))
622
[1797]623! FH Ajout de celles nécessaires au phys_output_write_mod
624
[2385]625      ALLOCATE(tal1(klon), pal1(klon), pab1(klon), pab2(klon))
626      ALLOCATE(ptstar(klon),pt0(klon),slp(klon))
[2635]627!!
628!!          Wake variables
629      ALLOCATE(ale_wake(klon), alp_wake(klon))
[2732]630      ALLOCATE(wake_h(klon),wake_k(klon))
[2635]631      ALLOCATE(wake_omg(klon, klev))
632      ALLOCATE(d_deltat_wk(klon, klev), d_deltaq_wk(klon, klev))
633      ALLOCATE(d_s_wk(klon), d_dens_wk(klon))
634      ALLOCATE(d_deltat_wk_gw(klon, klev), d_deltaq_wk_gw(klon, klev))
635      ALLOCATE(d_deltat_vdf(klon, klev), d_deltaq_vdf(klon, klev))
636!!      ALLOCATE( d_s_vdf(klon), d_dens_vdf(klon))
637      ALLOCATE(d_deltat_the(klon, klev), d_deltaq_the(klon, klev))
638!!      ALLOCATE( d_s_the(klon), d_dens_the(klon))
639      ALLOCATE(d_deltat_ajs_cv(klon, klev), d_deltaq_ajs_cv(klon, klev))
640!!         End of wake variables
641!!
642      ALLOCATE(bils(klon))
[1797]643      ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon))
[2243]644      ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon))
[1924]645      ALLOCATE(cldhjn(klon), cldljn(klon), cldmjn(klon), cldtjn(klon))
646      ALLOCATE(JrNt(klon))
[1797]647      ALLOCATE(dthmin(klon), evap(klon), fder(klon), plcl(klon), plfc(klon))
[2496]648      ALLOCATE(prw(klon), prlw(klon), prsw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon))
[1797]649      ALLOCATE(s_lcl(klon))
650      ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon))
[2159]651!
652!nrlmd+jyg<
653      ALLOCATE(s_pblh_x(klon), s_pblh_w(klon))
654      ALLOCATE(s_lcl_x(klon), s_lcl_w(klon))
655!>nrlmd+jyg
656!
[1797]657      ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon))
658      ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon))
[2243]659      ALLOCATE(zxfqcalving(klon), zxfluxlat(klon))
[1797]660      ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon))
[2518]661      ALLOCATE(zxrunofflic(klon))
[2159]662      ALLOCATE(rain_lsc(klon))
[2516]663      ALLOCATE(rain_num(klon))
[2159]664!
665      ALLOCATE(sens_x(klon), sens_w(klon))
666      ALLOCATE(zxfluxlat_x(klon), zxfluxlat_w(klon))
[2181]667!jyg<
668!!      ALLOCATE(t_x(klon,klev), t_w(klon,klev))
669!!      ALLOCATE(q_x(klon,klev), q_w(klon,klev))
670!>jyg
[2159]671      ALLOCATE(dtvdf_x(klon,klev), dtvdf_w(klon,klev))
672      ALLOCATE(dqvdf_x(klon,klev), dqvdf_w(klon,klev))
673      ALLOCATE(pbl_tke_input(klon,klev+1,nbsrf))
[2607]674      ALLOCATE(t_therm(klon,klev), q_therm(klon,klev),u_therm(klon,klev), v_therm(klon,klev))
[2159]675      ALLOCATE(cdragh_x(klon), cdragh_w(klon))
676      ALLOCATE(cdragm_x(klon), cdragm_w(klon))
677      ALLOCATE(kh(klon), kh_x(klon), kh_w(klon))
678!
[2635]679      ALLOCATE(wbeff(klon), zmax_th(klon))
[1797]680      ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon))
[2103]681      ALLOCATE(zt2m_min_mon(klon), zt2m_max_mon(klon))
682      ALLOCATE(t2m_min_mon(klon), t2m_max_mon(klon))
[1797]683      ALLOCATE(sens(klon), flwp(klon), fiwp(klon))
684      ALLOCATE(ale_bl_stat(klon), alp_bl_conv(klon), alp_bl_det(klon))
685      ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon))
686      ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon))
687      ALLOCATE(proba_notrig(klon), random_notrig(klon))
688
689      ALLOCATE(dnwd(klon, klev), dnwd0(klon, klev))
690!      ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev))
691      ALLOCATE(upwd(klon, klev), omega(klon, klev))
[2481]692      ALLOCATE(epmax_diag(klon)) ! epmax_cape
693      ALLOCATE(ep(klon,klev)) ! epmax_cape
[1797]694!      ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev))
695      ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev))
696      ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev))
697      ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev))
698      ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev))
[1989]699      ALLOCATE(ref_liq_pi(klon, klev), ref_ice_pi(klon, klev))
[2635]700      ALLOCATE(zphi(klon, klev), zx_rh(klon, klev))
[1797]701      ALLOCATE(pmfd(klon, klev), pmfu(klon, klev))
702
[2243]703      ALLOCATE(t2m(klon, nbsrf), fluxlat(klon, nbsrf))
704      ALLOCATE(fsollw(klon, nbsrf))
[1797]705      ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf), wfbilo(klon, nbsrf))
[2670]706      ALLOCATE(wfevap(klon, nbsrf), wfrain(klon,nbsrf), wfsnow(klon, nbsrf))
[1797]707      ALLOCATE(evap_pot(klon, nbsrf))
708
709      ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1), prfl(klon, klev+1))
710      ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1))
711      ALLOCATE(zw2(klon, klev+1))
712
713      ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf))
714      ALLOCATE(fluxt(klon, klev, nbsrf))
715
716      ALLOCATE(uwriteSTD(klon,nlevSTD,nfiles), vwriteSTD(klon,nlevSTD,nfiles))
717      ALLOCATE(wwriteSTD(klon,nlevSTD,nfiles), phiwriteSTD(klon,nlevSTD,nfiles))
718      ALLOCATE(qwriteSTD(klon,nlevSTD,nfiles), twriteSTD(klon,nlevSTD,nfiles))
[1828]719      ALLOCATE(rhwriteSTD(klon,nlevSTD,nfiles))
[1797]720
721! ug et d'autres encore:
722      ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev))
723      ALLOCATE(beta_prec(klon,klev))
[1924]724      ALLOCATE(rneb(klon,klev),rnebjn(klon,klev))
[1797]725
726
[1872]727      ALLOCATE (zxsnow(klon),snowhgt(klon),qsnow(klon),to_ice(klon))
728      ALLOCATE (sissnow(klon),runoff(klon),albsol3_lic(klon))
[1865]729
[2690]730#ifdef CPP_StratAer
731      ALLOCATE (R2SO4(klon,klev))
732      ALLOCATE (DENSO4(klon,klev))
733      ALLOCATE (f_r_wet(klon,klev))
734      ALLOCATE (decfluxaer(klon,nbtr))
735      ALLOCATE (mdw(nbtr))
[2752]736      ALLOCATE (budg_3D_nucl(klon,klev))
737      ALLOCATE (budg_3D_cond_evap(klon,klev))
738      ALLOCATE (budg_3D_ocs_to_so2(klon,klev))
739      ALLOCATE (budg_3D_so2_to_h2so4(klon,klev))
740      ALLOCATE (budg_3D_backgr_ocs(klon,klev))
741      ALLOCATE (budg_3D_backgr_so2(klon,klev))
[2690]742      ALLOCATE (OCS_lifetime(klon,klev))
743      ALLOCATE (SO2_lifetime(klon,klev))
744      ALLOCATE (alpha_bin(nbands_sw_rrtm+nbands_lw_rrtm+nwave+nwave_lw,nbtr))
745      ALLOCATE (piz_bin(nbands_sw_rrtm+nbands_lw_rrtm+nwave+nwave_lw,nbtr))
746      ALLOCATE (cg_bin(nbands_sw_rrtm+nbands_lw_rrtm+nwave+nwave_lw,nbtr))
747      ALLOCATE (tau_strat_550(klon,klev))
748      ALLOCATE (tau_strat_1020(klon,klev))
749      ALLOCATE (tausum_strat(klon,3))
[2752]750      ALLOCATE (budg_dep_dry_h2so4(klon))
751      ALLOCATE (budg_dep_wet_h2so4(klon))
752      ALLOCATE (budg_dep_dry_part(klon))
753      ALLOCATE (budg_dep_wet_part(klon))
754      ALLOCATE (budg_emi_ocs(klon))
755      ALLOCATE (budg_emi_so2(klon))
756      ALLOCATE (budg_emi_h2so4(klon))
757      ALLOCATE (budg_emi_part(klon))
758      ALLOCATE (budg_ocs_to_so2(klon))
759      ALLOCATE (budg_so2_to_h2so4(klon))
760      ALLOCATE (budg_h2so4_to_part(klon))
761      ALLOCATE (budg_sed_part(klon))
[2690]762      ALLOCATE (surf_PM25_sulf(klon))
763      ALLOCATE (p_tropopause(klon))
764      ALLOCATE (vsed_aer(klon,klev))
765#endif
[1865]766
[904]767END SUBROUTINE phys_local_var_init
768
769!======================================================================
770SUBROUTINE phys_local_var_end
[1785]771USE dimphy
772USE indice_sol_mod
[904]773IMPLICIT NONE
774      deallocate(t_seri,q_seri,ql_seri,qs_seri)
775      deallocate(u_seri,v_seri)
[2561]776      deallocate(l_mixmin,l_mix)
[909]777
778      deallocate(tr_seri)
779      deallocate(d_t_dyn,d_q_dyn)
[2496]780      deallocate(d_ql_dyn,d_qs_dyn)
[2499]781      deallocate(d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d)
[1054]782      deallocate(d_u_dyn,d_v_dyn)
[1742]783      deallocate(d_tr_dyn)                      !RomP
[909]784      deallocate(d_t_con,d_q_con)
785      deallocate(d_u_con,d_v_con)
786      deallocate(d_t_wake,d_q_wake)
787      deallocate(d_t_lsc,d_q_lsc)
[2194]788      deallocate(d_t_lwr,d_t_lw0)
789      deallocate(d_t_swr,d_t_sw0)
[2086]790      deallocate(d_ql_lsc,d_qi_lsc)
[909]791      deallocate(d_t_ajsb,d_q_ajsb)
792      deallocate(d_t_ajs,d_q_ajs)
[2159]793!nrlmd<
794      deallocate(d_t_ajs_w,d_q_ajs_w)
795      deallocate(d_t_ajs_x,d_q_ajs_x)
796!>nrlmd
[909]797      deallocate(d_u_ajs,d_v_ajs)
798      deallocate(d_t_eva,d_q_eva)
[2706]799      deallocate(d_ql_eva,d_qi_eva)
[1507]800      deallocate(d_t_lscst,d_q_lscst)
801      deallocate(d_t_lscth,d_q_lscth)
[1513]802      deallocate(plul_st,plul_th)
[1761]803      deallocate(d_t_vdf,d_q_vdf,d_t_diss)
[2159]804!nrlmd+jyg<
805      deallocate(d_t_vdf_w,d_q_vdf_w)
806      deallocate(d_t_vdf_x,d_q_vdf_x)
807!>nrlmd+jyg
[909]808      deallocate(d_u_vdf,d_v_vdf)
809      deallocate(d_t_oli,d_t_oro)
810      deallocate(d_u_oli,d_v_oli)
811      deallocate(d_u_oro,d_v_oro)
812      deallocate(d_t_lif,d_t_ec)
813      deallocate(d_u_lif,d_v_lif)
814      deallocate(d_ts, d_tr)
[1279]815      deallocate(topswad_aero,solswad_aero)
816      deallocate(topswai_aero,solswai_aero)
817      deallocate(topswad0_aero,solswad0_aero)
[2146]818      ! LW additional CK
819      deallocate(toplwad_aero,sollwad_aero)
820      deallocate(toplwai_aero,sollwai_aero)
821      deallocate(toplwad0_aero,sollwad0_aero)
822      ! end
[1279]823      deallocate(topsw_aero,solsw_aero)
824      deallocate(topsw0_aero,solsw0_aero)
825      deallocate(topswcf_aero,solswcf_aero)
[2536]826      deallocate(stratomask)
[1279]827      deallocate(tausum_aero)
828      deallocate(tau3d_aero)
[1337]829      deallocate(scdnc)
830      deallocate(cldncl)
831      deallocate(reffclwtop)
832      deallocate(lcc)
833      deallocate(reffclws)
834      deallocate(reffclwc)
835      deallocate(cldnvi)
836      deallocate(lcc3d)
837      deallocate(lcc3dcon)
838      deallocate(lcc3dstra)
[2159]839      deallocate(od550aer)
[1337]840      deallocate(od865aer)
841      deallocate(absvisaer)
842      deallocate(ec550aer)
843      deallocate(od550lt1aer)
844      deallocate(sconcso4)
[2146]845      deallocate(sconcno3)
[1337]846      deallocate(sconcoa)
847      deallocate(sconcbc)
848      deallocate(sconcss)
849      deallocate(sconcdust)
850      deallocate(concso4)
[2146]851      deallocate(concno3)
[1337]852      deallocate(concoa)
853      deallocate(concbc)
854      deallocate(concss)
855      deallocate(concdust)
856      deallocate(loadso4)
857      deallocate(loadoa)
858      deallocate(loadbc)
859      deallocate(loadss)
860      deallocate(loaddust)
861      deallocate(load_tmp1)
862      deallocate(load_tmp2)
863      deallocate(load_tmp3)
864      deallocate(load_tmp4)
865      deallocate(load_tmp5)
866      deallocate(load_tmp6)
867      deallocate(load_tmp7)
[2333]868      deallocate(du_gwd_hines,dv_gwd_hines,d_t_hin)
[2136]869      deallocate(d_q_ch4)
[2333]870      deallocate(dv_gwd_rando,dv_gwd_front)
871      deallocate(east_gwstress,west_gwstress)
[1279]872
[1539]873!IM ajout variables CFMIP2/CMIP5
874      deallocate(topswad_aerop, solswad_aerop)
875      deallocate(topswai_aerop, solswai_aerop)
876      deallocate(topswad0_aerop, solswad0_aerop)
877      deallocate(topsw_aerop, topsw0_aerop)
878      deallocate(solsw_aerop, solsw0_aerop)
879      deallocate(topswcf_aerop, solswcf_aerop)
880
[2146]881!CK LW diagnostics
882      deallocate(toplwad_aerop, sollwad_aerop)
883      deallocate(toplwai_aerop, sollwai_aerop)
884      deallocate(toplwad0_aerop, sollwad0_aerop)
[1797]885
886! FH Ajout de celles nécessaires au phys_output_write_mod
[2385]887      DEALLOCATE(tal1, pal1, pab1, pab2)
888      DEALLOCATE(ptstar, pt0, slp)
[2635]889!
890      DEALLOCATE(ale_wake, alp_wake)
[2732]891      DEALLOCATE(wake_h,wake_k)
[2635]892      DEALLOCATE(wake_omg)
893      DEALLOCATE(d_deltat_wk, d_deltaq_wk)
894      DEALLOCATE(d_s_wk, d_dens_wk)
895      DEALLOCATE(d_deltat_wk_gw, d_deltaq_wk_gw)
896      DEALLOCATE(d_deltat_vdf, d_deltaq_vdf)
897!!      DEALLOCATE( d_s_vdf, d_dens_vdf)
898      DEALLOCATE(d_deltat_the, d_deltaq_the)
899!!      DEALLOCATE( d_s_the, d_dens_the)
900      DEALLOCATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)
901!
902      DEALLOCATE(bils)
[1797]903      DEALLOCATE(cdragm, cdragh, cldh, cldl)
[2243]904      DEALLOCATE(cldm, cldq, cldt, qsat2m)
[1924]905      DEALLOCATE(cldljn, cldmjn, cldhjn, cldtjn, JrNt)
[1797]906      DEALLOCATE(dthmin, evap, fder, plcl, plfc)
[2496]907      DEALLOCATE(prw, prlw, prsw, zustar, zu10m, zv10m, rh2m, s_lcl)
[1797]908      DEALLOCATE(s_pblh, s_pblt, s_therm)
[2159]909!
910!nrlmd+jyg<
911      DEALLOCATE(s_pblh_x, s_pblh_w)
912      DEALLOCATE(s_lcl_x, s_lcl_w)
913!>nrlmd+jyg
914!
[1797]915      DEALLOCATE(slab_wfbils, tpot, tpote, ue)
916      DEALLOCATE(uq, ve, vq, zxffonte)
[2243]917      DEALLOCATE(zxfqcalving, zxfluxlat)
[2518]918      DEALLOCATE(zxrunofflic)
[1797]919      DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
[2159]920      DEALLOCATE(rain_lsc)
[2516]921      DEALLOCATE(rain_num)
[2159]922!
923      DEALLOCATE(sens_x, sens_w)
924      DEALLOCATE(zxfluxlat_x, zxfluxlat_w)
[2181]925!jyg<
926!!      DEALLOCATE(t_x, t_w)
927!!      DEALLOCATE(q_x, q_w)
928!>jyg
[2159]929      DEALLOCATE(dtvdf_x, dtvdf_w)
930      DEALLOCATE(dqvdf_x, dqvdf_w)
931      DEALLOCATE(pbl_tke_input)
[2607]932      DEALLOCATE(t_therm, q_therm, u_therm, v_therm)
[2159]933      DEALLOCATE(cdragh_x, cdragh_w)
934      DEALLOCATE(cdragm_x, cdragm_w)
935      DEALLOCATE(kh, kh_x, kh_w)
936!
[2635]937      DEALLOCATE(wbeff, zmax_th)
[1797]938      DEALLOCATE(zq2m, zt2m, weak_inversion)
[2103]939      DEALLOCATE(zt2m_min_mon, zt2m_max_mon)
940      DEALLOCATE(t2m_min_mon, t2m_max_mon)
[1797]941      DEALLOCATE(sens, flwp, fiwp)
942      DEALLOCATE(ale_bl_stat,alp_bl_conv,alp_bl_det)
943      DEALLOCATE(alp_bl_fluct_m,alp_bl_fluct_tke)
944      DEALLOCATE(alp_bl_stat, n2, s2)
945      DEALLOCATE(proba_notrig, random_notrig)
946
947      DEALLOCATE(dnwd, dnwd0)
948!      DEALLOCATE(upwd, omega, coefh)
949      DEALLOCATE(upwd, omega)
[2481]950      DEALLOCATE(epmax_diag)
951      DEALLOCATE(ep)
[1797]952!      DEALLOCATE(coefm, lambda_th, cldemi)
953      DEALLOCATE(lambda_th, cldemi)
954      DEALLOCATE(cldfra, cldtau, fiwc)
955      DEALLOCATE(fl, re, flwc)
956      DEALLOCATE(ref_liq, ref_ice, theta)
[1989]957      DEALLOCATE(ref_liq_pi, ref_ice_pi)
[2635]958      DEALLOCATE(zphi, zx_rh)
[1797]959      DEALLOCATE(pmfd, pmfu)
960
[2243]961      DEALLOCATE(t2m, fluxlat)
962      DEALLOCATE(fsollw, evap_pot)
[1797]963      DEALLOCATE(fsolsw, wfbils, wfbilo)
[2670]964      DEALLOCATE(wfevap,wfrain,wfsnow)
[1797]965
966      DEALLOCATE(pmflxr, pmflxs, prfl)
967      DEALLOCATE(psfl, fraca, Vprecip)
968      DEALLOCATE(zw2)
969
970      DEALLOCATE(fluxu, fluxv)
971      DEALLOCATE(fluxt)
972
973      DEALLOCATE(uwriteSTD, vwriteSTD)
974      DEALLOCATE(wwriteSTD, phiwriteSTD)
[1828]975      DEALLOCATE(qwriteSTD, twriteSTD, rhwriteSTD)
[1797]976
977! ug et d'autres encore:
978      DEALLOCATE(wdtrainA, wdtrainM)
979      DEALLOCATE(beta_prec)
980      DEALLOCATE(rneb)
[1865]981      DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic)
[1797]982
[2690]983#ifdef CPP_StratAer
984! variables for strat. aerosol CK
985      DEALLOCATE (R2SO4)
986      DEALLOCATE (DENSO4)
987      DEALLOCATE (f_r_wet)
988      DEALLOCATE (decfluxaer)
989      DEALLOCATE (mdw)
990      DEALLOCATE (SO2_lifetime)
991      DEALLOCATE (OCS_lifetime)
992      DEALLOCATE (alpha_bin)
993      DEALLOCATE (piz_bin)
994      DEALLOCATE (cg_bin)
995      DEALLOCATE (tau_strat_550)
996      DEALLOCATE (tau_strat_1020)
997      DEALLOCATE (tausum_strat)
998      DEALLOCATE (surf_PM25_sulf)
999      DEALLOCATE (p_tropopause)
1000      DEALLOCATE (vsed_aer)
[2752]1001      DEALLOCATE (budg_3D_ocs_to_so2)
1002      DEALLOCATE (budg_3D_so2_to_h2so4)
1003      DEALLOCATE (budg_3D_backgr_ocs)
1004      DEALLOCATE (budg_3D_backgr_so2)
1005      DEALLOCATE (budg_3D_nucl)
1006      DEALLOCATE (budg_3D_cond_evap)
1007      DEALLOCATE (budg_dep_dry_h2so4)
1008      DEALLOCATE (budg_dep_wet_h2so4)
1009      DEALLOCATE (budg_dep_dry_part)
1010      DEALLOCATE (budg_dep_wet_part)
1011      DEALLOCATE (budg_emi_ocs)
1012      DEALLOCATE (budg_emi_so2)
1013      DEALLOCATE (budg_emi_h2so4)
1014      DEALLOCATE (budg_emi_part)
1015      DEALLOCATE (budg_ocs_to_so2)
1016      DEALLOCATE (budg_so2_to_h2so4)
1017      DEALLOCATE (budg_h2so4_to_part)
1018      DEALLOCATE (budg_sed_part)
[2690]1019#endif
1020
[904]1021END SUBROUTINE phys_local_var_end
1022
[2136]1023END MODULE phys_local_var_mod
Note: See TracBrowser for help on using the repository browser.