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

Last change on this file since 2103 was 2103, checked in by musat, 10 years ago

Ajout variables t2m_min_mon et t2m_max_mon dans les fichier
histmth. Ce sont les tempe©rature a minimales et
maximales journalie¨re) moyeneées sur le mo. Le calcul
est fait "manuelleÃment" dans calcul_divers.h.
Teste en sequentiel (en local) avec calendrier a 360 et 365 jours
et en parallele MPI avec calendrier 360 jours (sur adapp).
IM

  • This line, and those below, will be ignored--

M phys_output_ctrlout_mod.F90
M phys_local_var_mod.F90
M phys_output_write_mod.F90
M calcul_divers.h

  • 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: 25.5 KB
Line 
1!
2! $Id: phys_local_var_mod.F90 2103 2014-07-31 13:46:23Z musat $
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      REAL, SAVE, ALLOCATABLE :: u_seri(:,:), v_seri(:,:)
17      !$OMP THREADPRIVATE(u_seri, v_seri)
18
19      REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:)
20      !$OMP THREADPRIVATE(tr_seri)
21      REAL, SAVE, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:)
22      !$OMP THREADPRIVATE(d_t_dyn, d_q_dyn)
23      REAL, SAVE, ALLOCATABLE :: d_u_dyn(:,:), d_v_dyn(:,:)
24      !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn)
25!!!!
26      REAL, SAVE, ALLOCATABLE :: d_tr_dyn(:,:,:)
27      !$OMP THREADPRIVATE(d_tr_dyn)
28!!!!
29      REAL, SAVE, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:)
30      !$OMP THREADPRIVATE(d_t_con,d_q_con)
31      REAL, SAVE, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
32      !$OMP THREADPRIVATE(d_u_con,d_v_con)
33      REAL, SAVE, ALLOCATABLE :: d_t_wake(:,:),d_q_wake(:,:)
34      !$OMP THREADPRIVATE( d_t_wake,d_q_wake)
35      REAL, SAVE, ALLOCATABLE :: d_t_lsc(:,:),d_q_lsc(:,:),d_ql_lsc(:,:),d_qi_lsc(:,:)
36      !$OMP THREADPRIVATE(d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc)
37      REAL, SAVE, ALLOCATABLE :: d_t_ajsb(:,:), d_q_ajsb(:,:)
38      !$OMP THREADPRIVATE(d_t_ajsb, d_q_ajsb)
39      REAL, SAVE, ALLOCATABLE :: d_t_ajs(:,:), d_q_ajs(:,:)
40      !$OMP THREADPRIVATE(d_t_ajs, d_q_ajs)
41      REAL, SAVE, ALLOCATABLE :: d_u_ajs(:,:), d_v_ajs(:,:)
42      !$OMP THREADPRIVATE(d_u_ajs, d_v_ajs)
43      REAL, SAVE, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:)
44      !$OMP THREADPRIVATE(d_t_eva,d_q_eva)
45      REAL, SAVE, ALLOCATABLE :: d_t_lscst(:,:),d_q_lscst(:,:)
46      !$OMP THREADPRIVATE(d_t_lscst,d_q_lscst)
47      REAL, SAVE, ALLOCATABLE :: d_t_lscth(:,:),d_q_lscth(:,:)
48      !$OMP THREADPRIVATE(d_t_lscth,d_q_lscth)
49      REAL, SAVE, ALLOCATABLE :: plul_th(:),plul_st(:)
50      !$OMP THREADPRIVATE(plul_th,plul_st)
51!tendances dues a oro et lif
52      REAL, SAVE, ALLOCATABLE :: d_t_oli(:,:)
53      !$OMP THREADPRIVATE(d_t_oli)
54      REAL, SAVE, ALLOCATABLE :: d_u_oli(:,:), d_v_oli(:,:)
55      !$OMP THREADPRIVATE(d_u_oli, d_v_oli)
56      REAL, SAVE, ALLOCATABLE :: d_t_vdf(:,:), d_q_vdf(:,:), d_t_diss(:,:)
57      !$OMP THREADPRIVATE( d_t_vdf, d_q_vdf,d_t_diss)
58      REAL, SAVE, ALLOCATABLE :: d_u_vdf(:,:), d_v_vdf(:,:)
59      !$OMP THREADPRIVATE(d_u_vdf, d_v_vdf)
60      REAL, SAVE, ALLOCATABLE :: d_t_oro(:,:)
61      !$OMP THREADPRIVATE(d_t_oro)
62      REAL, SAVE, ALLOCATABLE :: d_u_oro(:,:), d_v_oro(:,:)
63      !$OMP THREADPRIVATE(d_u_oro, d_v_oro)
64      REAL, SAVE, ALLOCATABLE :: d_t_lif(:,:)
65      !$OMP THREADPRIVATE(d_t_lif)
66      REAL, SAVE, ALLOCATABLE :: d_u_lif(:,:), d_v_lif(:,:)
67      !$OMP THREADPRIVATE(d_u_lif, d_v_lif)
68! Tendances Ondes de G non oro (runs strato).
69      REAL, SAVE, ALLOCATABLE :: d_u_hin(:,:)
70      !$OMP THREADPRIVATE(d_u_hin)
71      REAL, SAVE, ALLOCATABLE :: d_v_hin(:,:)
72      !$OMP THREADPRIVATE(d_v_hin)
73      REAL, SAVE, ALLOCATABLE :: d_t_hin(:,:)
74      !$OMP THREADPRIVATE(d_t_hin)
75
76! tendance du a la conersion Ec -> E thermique
77      REAL, SAVE, ALLOCATABLE :: d_t_ec(:,:)
78      !$OMP THREADPRIVATE(d_t_ec)
79      REAL, SAVE, ALLOCATABLE :: d_ts(:,:), d_tr(:,:,:)
80      !$OMP THREADPRIVATE(d_ts, d_tr)
81
82! diagnostique pour le rayonnement
83      REAL, SAVE, ALLOCATABLE :: topswad_aero(:),  solswad_aero(:)      ! diag
84      !$OMP THREADPRIVATE(topswad_aero,solswad_aero)
85      REAL, SAVE, ALLOCATABLE :: topswai_aero(:),  solswai_aero(:)      ! diag
86      !$OMP THREADPRIVATE(topswai_aero,solswai_aero)
87      REAL, SAVE, ALLOCATABLE :: topswad0_aero(:), solswad0_aero(:)     ! diag
88      !$OMP THREADPRIVATE(topswad0_aero,solswad0_aero)
89      REAL, SAVE, ALLOCATABLE :: topsw_aero(:,:),  solsw_aero(:,:)      ! diag
90      !$OMP THREADPRIVATE(topsw_aero,solsw_aero)
91      REAL, SAVE, ALLOCATABLE :: topsw0_aero(:,:), solsw0_aero(:,:)     ! diag
92      !$OMP THREADPRIVATE(topsw0_aero,solsw0_aero)
93      REAL, SAVE, ALLOCATABLE :: topswcf_aero(:,:),  solswcf_aero(:,:)  ! diag
94      !$OMP THREADPRIVATE(topswcf_aero,solswcf_aero)
95! Special RRTM
96      REAL, SAVE, ALLOCATABLE :: ZLWFT0_i(:,:),  ZSWFT0_i(:,:)      ! diag
97      !$OMP THREADPRIVATE(ZLWFT0_i,ZSWFT0_i)
98      REAL, SAVE, ALLOCATABLE :: ZFLDN0(:,:),  ZFLUP0(:,:)      ! diag
99      !$OMP THREADPRIVATE(ZFLDN0,ZFLUP0)
100      REAL, SAVE, ALLOCATABLE :: ZFSDN0(:,:),  ZFSUP0(:,:)      ! diag
101      !$OMP THREADPRIVATE(ZFSDN0,ZFSUP0)
102!
103      REAL, SAVE, ALLOCATABLE :: tausum_aero(:,:,:)
104      !$OMP THREADPRIVATE(tausum_aero)
105      REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:)
106      !$OMP THREADPRIVATE(tau3d_aero)
107      REAL, SAVE, ALLOCATABLE :: scdnc(:,:)
108      !$OMP THREADPRIVATE(scdnc)
109      REAL, SAVE, ALLOCATABLE :: cldncl(:)
110      !$OMP THREADPRIVATE(cldncl)
111      REAL, SAVE, ALLOCATABLE :: reffclwtop(:)
112      !$OMP THREADPRIVATE(reffclwtop)
113      REAL, SAVE, ALLOCATABLE :: lcc(:)
114      !$OMP THREADPRIVATE(lcc)
115      REAL, SAVE, ALLOCATABLE :: reffclws(:,:)
116      !$OMP THREADPRIVATE(reffclws)
117      REAL, SAVE, ALLOCATABLE :: reffclwc(:,:)
118      !$OMP THREADPRIVATE(reffclwc)
119      REAL, SAVE, ALLOCATABLE :: cldnvi(:)
120      !$OMP THREADPRIVATE(cldnvi)
121      REAL, SAVE, ALLOCATABLE :: lcc3d(:,:)
122      !$OMP THREADPRIVATE(lcc3d)
123      REAL, SAVE, ALLOCATABLE :: lcc3dcon(:,:)
124      !$OMP THREADPRIVATE(lcc3dcon)
125      REAL, SAVE, ALLOCATABLE :: lcc3dstra(:,:)
126      !$OMP THREADPRIVATE(lcc3dstra)
127      REAL, SAVE, ALLOCATABLE :: od550aer(:)
128      !$OMP THREADPRIVATE(od550aer)
129      REAL, SAVE, ALLOCATABLE :: absvisaer(:)
130      !$OMP THREADPRIVATE(absvisaer)
131      REAL, SAVE, ALLOCATABLE :: od865aer(:)
132      !$OMP THREADPRIVATE(od865aer)
133      REAL, SAVE, ALLOCATABLE :: ec550aer(:,:)
134      !$OMP THREADPRIVATE(ec550aer)
135      REAL, SAVE, ALLOCATABLE :: od550lt1aer(:)
136      !$OMP THREADPRIVATE(od550lt1aer)
137      REAL, SAVE, ALLOCATABLE :: sconcso4(:)
138      !$OMP THREADPRIVATE(sconcso4)
139      REAL, SAVE, ALLOCATABLE :: sconcoa(:)
140      !$OMP THREADPRIVATE(sconcoa)
141      REAL, SAVE, ALLOCATABLE :: sconcbc(:)
142      !$OMP THREADPRIVATE(sconcbc)
143      REAL, SAVE, ALLOCATABLE :: sconcss(:)
144      !$OMP THREADPRIVATE(sconcss)
145      REAL, SAVE, ALLOCATABLE :: sconcdust(:)
146      !$OMP THREADPRIVATE(sconcdust)
147      REAL, SAVE, ALLOCATABLE :: concso4(:,:)
148      !$OMP THREADPRIVATE(concso4)
149      REAL, SAVE, ALLOCATABLE :: concoa(:,:)
150      !$OMP THREADPRIVATE(concoa)
151      REAL, SAVE, ALLOCATABLE :: concbc(:,:)
152      !$OMP THREADPRIVATE(concbc)
153      REAL, SAVE, ALLOCATABLE :: concss(:,:)
154      !$OMP THREADPRIVATE(concss)
155      REAL, SAVE, ALLOCATABLE :: concdust(:,:)
156      !$OMP THREADPRIVATE(concdust)
157      REAL, SAVE, ALLOCATABLE :: loadso4(:)
158      !$OMP THREADPRIVATE(loadso4)
159      REAL, SAVE, ALLOCATABLE :: loadoa(:)
160      !$OMP THREADPRIVATE(loadoa)
161      REAL, SAVE, ALLOCATABLE :: loadbc(:)
162      !$OMP THREADPRIVATE(loadbc)
163      REAL, SAVE, ALLOCATABLE :: loadss(:)
164      !$OMP THREADPRIVATE(loadss)
165      REAL, SAVE, ALLOCATABLE :: loaddust(:)
166      !$OMP THREADPRIVATE(loaddust)
167      REAL, SAVE, ALLOCATABLE :: load_tmp1(:)
168      !$OMP THREADPRIVATE(load_tmp1)
169      REAL, SAVE, ALLOCATABLE :: load_tmp2(:)
170      !$OMP THREADPRIVATE(load_tmp2)
171      REAL, SAVE, ALLOCATABLE :: load_tmp3(:)
172      !$OMP THREADPRIVATE(load_tmp3)
173      REAL, SAVE, ALLOCATABLE :: load_tmp4(:)
174      !$OMP THREADPRIVATE(load_tmp4)
175      REAL, SAVE, ALLOCATABLE :: load_tmp5(:)
176      !$OMP THREADPRIVATE(load_tmp5)
177      REAL, SAVE, ALLOCATABLE :: load_tmp6(:)
178      !$OMP THREADPRIVATE(load_tmp6)
179      REAL, SAVE, ALLOCATABLE :: load_tmp7(:)
180      !$OMP THREADPRIVATE(load_tmp7)
181
182!IM ajout variables CFMIP2/CMIP5
183      REAL,ALLOCATABLE,SAVE :: topswad_aerop(:), solswad_aerop(:)
184!$OMP THREADPRIVATE(topswad_aerop, solswad_aerop)
185      REAL,ALLOCATABLE,SAVE :: topswai_aerop(:), solswai_aerop(:)
186!$OMP THREADPRIVATE(topswai_aerop, solswai_aerop)
187      REAL,ALLOCATABLE,SAVE :: topswad0_aerop(:), solswad0_aerop(:)
188!$OMP THREADPRIVATE(topswad0_aerop, solswad0_aerop)
189      REAL,ALLOCATABLE,SAVE :: topsw_aerop(:,:), topsw0_aerop(:,:) 
190!$OMP THREADPRIVATE(topsw_aerop, topsw0_aerop)
191      REAL,ALLOCATABLE,SAVE :: solsw_aerop(:,:), solsw0_aerop(:,:)
192!$OMP THREADPRIVATE(solsw_aerop, solsw0_aerop)
193      REAL,ALLOCATABLE,SAVE :: topswcf_aerop(:,:), solswcf_aerop(:,:)
194!$OMP THREADPRIVATE(topswcf_aerop, solswcf_aerop)
195
196
197!Ajout de celles nécessaires au phys_output_write_mod
198      REAL, SAVE, ALLOCATABLE :: slp(:)
199!$OMP THREADPRIVATE(slp)
200      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp
201!$OMP THREADPRIVATE(sens, flwp, fiwp)
202      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake, bils
203!$OMP THREADPRIVATE(ale_wake, alp_wake, bils)
204      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh
205!$OMP THREADPRIVATE(cdragm, cdragh)
206      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m, qsol
207!$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m, qsol)
208      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldhjn, cldljn, cldmjn,cldtjn
209!$OMP THREADPRIVATE(cldhjn, cldljn, cldmjn, cldtjn)
210      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: JrNt
211!$OMP THREADPRIVATE(JrNt)
212      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw
213!$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw)
214      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m
215!$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m)
216      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_lcl, s_pblh, s_pblt, s_therm
217!$OMP THREADPRIVATE(s_lcl, s_pblh, s_pblt, s_therm)
218      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: slab_wfbils
219!$OMP THREADPRIVATE(slab_wfbils)
220      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: tpot, tpote, ue, uq, ve, vq, zxffonte
221!$OMP THREADPRIVATE(tpot, tpote, ue, uq, ve, vq, zxffonte)
222      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfqcalving
223!$OMP THREADPRIVATE(zxfqcalving)
224      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte
225!$OMP THREADPRIVATE(zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte)
226      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc
227!$OMP THREADPRIVATE(zxqsurf, rain_lsc)
228      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wake_h, wbeff, zmax_th, zq2m, zt2m
229!$OMP THREADPRIVATE(wake_h, wbeff, zmax_th, zq2m, zt2m)
230      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zt2m_min_mon, zt2m_max_mon
231!$OMP THREADPRIVATE(zt2m_min_mon, zt2m_max_mon)
232      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: t2m_min_mon, t2m_max_mon
233!$OMP THREADPRIVATE(t2m_min_mon, t2m_max_mon)
234      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: weak_inversion
235!$OMP THREADPRIVATE(weak_inversion)
236      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_bl_stat,alp_bl_conv,alp_bl_det
237!$OMP THREADPRIVATE(ale_bl_stat,alp_bl_conv,alp_bl_det)
238      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_fluct_m,alp_bl_fluct_tke
239!$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke)
240      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_stat, n2, s2
241!$OMP THREADPRIVATE(alp_bl_stat, n2, s2)
242      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: proba_notrig, random_notrig
243!$OMP THREADPRIVATE(proba_notrig, random_notrig)
244      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: fsolsw, wfbils, wfbilo
245!$OMP THREADPRIVATE(fsolsw, wfbils, wfbilo)
246      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: t2m, fevap, fluxlat, fsollw,evap_pot
247!$OMP THREADPRIVATE(t2m, fevap, fluxlat, fsollw,evap_pot)
248      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd, dnwd0, upwd, omega
249!$OMP THREADPRIVATE(dnwd, dnwd0, upwd, omega)
250!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th
251      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: lambda_th
252!$OMP THREADPRIVATE(lambda_th)
253      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc
254!$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc)
255      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq, ref_ice, theta, zphi
256!$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi)
257      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq_pi, ref_ice_pi
258!$OMP THREADPRIVATE(ref_liq_pi, ref_ice_pi)
259      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg, zx_rh
260!$OMP THREADPRIVATE(wake_omg, zx_rh)
261      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: frugs, agesno
262!$OMP THREADPRIVATE(frugs, agesno)
263      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca
264!$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca)
265      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: Vprecip, zw2
266!$OMP THREADPRIVATE(Vprecip, zw2)
267      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmfd, pmfu
268!$OMP THREADPRIVATE(pmfd, pmfu)
269      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: fluxt, fluxu, fluxv
270!$OMP THREADPRIVATE(fluxt, fluxu, fluxv)
271      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: uwriteSTD, vwriteSTD, wwriteSTD
272!$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD)
273      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD
274!$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD)
275
276! ug et d'autres encore:
277      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wdtrainA, wdtrainM
278!$OMP THREADPRIVATE(wdtrainA, wdtrainM)
279      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec
280!$OMP THREADPRIVATE(beta_prec)
281      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rneb,rnebjn
282!$OMP THREADPRIVATE(rneb,rnebjn)
283
284! variables de sorties MM
285      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxsnow,snowhgt,qsnow,to_ice
286      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: sissnow,runoff,albsol3_lic
287!$OMP THREADPRIVATE(zxsnow,snowhgt,qsnow,to_ice)
288!$OMP THREADPRIVATE(sissnow,runoff,albsol3_lic)
289
290CONTAINS
291
292!======================================================================
293SUBROUTINE phys_local_var_init
294USE dimphy
295USE infotrac, ONLY : nbtr
296USE aero_mod
297USE indice_sol_mod
298USE phys_output_var_mod
299USE phys_state_var_mod
300
301IMPLICIT NONE
302      allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev))
303      allocate(u_seri(klon,klev),v_seri(klon,klev))
304
305      allocate(tr_seri(klon,klev,nbtr))
306      allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
307      allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev))
308      allocate(d_tr_dyn(klon,klev,nbtr))                   !RomP
309      allocate(d_t_con(klon,klev),d_q_con(klon,klev))
310      allocate(d_u_con(klon,klev),d_v_con(klon,klev))
311      allocate(d_t_wake(klon,klev),d_q_wake(klon,klev))
312      allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev))
313      allocate(d_ql_lsc(klon,klev),d_qi_lsc(klon,klev))
314      allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev))
315      allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev))
316      allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev))
317      allocate(d_t_eva(klon,klev),d_q_eva(klon,klev))
318      allocate(d_t_lscst(klon,klev),d_q_lscst(klon,klev))
319      allocate(d_t_lscth(klon,klev),d_q_lscth(klon,klev))
320      allocate(plul_st(klon),plul_th(klon))
321      allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev),d_t_diss(klon,klev))
322      allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev))
323      allocate(d_t_oli(klon,klev),d_t_oro(klon,klev))
324      allocate(d_u_oli(klon,klev),d_v_oli(klon,klev))
325      allocate(d_u_oro(klon,klev),d_v_oro(klon,klev))
326      allocate(d_t_lif(klon,klev),d_t_ec(klon,klev))
327      allocate(d_u_lif(klon,klev),d_v_lif(klon,klev))
328      allocate(d_ts(klon,nbsrf), d_tr(klon,klev,nbtr))
329! Special RRTM
330      allocate(ZLWFT0_i(klon,klev+1),ZSWFT0_i(klon,klev+1),ZFLDN0(klon,klev+1))
331      allocate(ZFLUP0(klon,klev+1),ZFSDN0(klon,klev+1),ZFSUP0(klon,klev+1))
332!
333      allocate(topswad_aero(klon), solswad_aero(klon))
334      allocate(topswai_aero(klon), solswai_aero(klon))
335      allocate(topswad0_aero(klon), solswad0_aero(klon))
336      allocate(topsw_aero(klon,naero_grp), solsw_aero(klon,naero_grp))
337      allocate(topsw0_aero(klon,naero_grp), solsw0_aero(klon,naero_grp))
338      allocate(topswcf_aero(klon,3), solswcf_aero(klon,3))
339      allocate(d_u_hin(klon,klev),d_v_hin(klon,klev),d_t_hin(klon,klev))
340!      allocate(tausum_aero(klon,nwave,naero_spc))
341!      allocate(tau3d_aero(klon,klev,nwave,naero_spc))
342!--correction mini bug OB
343      allocate(tausum_aero(klon,nwave,naero_tot))
344      allocate(tau3d_aero(klon,klev,nwave,naero_tot))
345      allocate(scdnc(klon, klev))
346      allocate(cldncl(klon))
347      allocate(reffclwtop(klon))
348      allocate(lcc(klon))
349      allocate(reffclws(klon, klev))
350      allocate(reffclwc(klon, klev))
351      allocate(cldnvi(klon))
352      allocate(lcc3d(klon, klev))
353      allocate(lcc3dcon(klon, klev))
354      allocate(lcc3dstra(klon, klev))
355      allocate(od550aer(klon))   
356      allocate(od865aer(klon))   
357      allocate(absvisaer(klon)) 
358      allocate(ec550aer(klon,klev))
359      allocate(od550lt1aer(klon))               
360      allocate(sconcso4(klon))
361      allocate(sconcoa(klon))
362      allocate(sconcbc(klon))
363      allocate(sconcss(klon))
364      allocate(sconcdust(klon))
365      allocate(concso4(klon,klev))
366      allocate(concoa(klon,klev))
367      allocate(concbc(klon,klev))
368      allocate(concss(klon,klev))
369      allocate(concdust(klon,klev))
370      allocate(loadso4(klon))
371      allocate(loadoa(klon))
372      allocate(loadbc(klon))
373      allocate(loadss(klon))
374      allocate(loaddust(klon))
375      allocate(load_tmp1(klon))
376      allocate(load_tmp2(klon))
377      allocate(load_tmp3(klon))
378      allocate(load_tmp4(klon))
379      allocate(load_tmp5(klon))
380      allocate(load_tmp6(klon))
381      allocate(load_tmp7(klon))
382
383!IM ajout variables CFMIP2/CMIP5
384      ALLOCATE(topswad_aerop(klon), solswad_aerop(klon))
385      ALLOCATE(topswai_aerop(klon), solswai_aerop(klon))
386      ALLOCATE(topswad0_aerop(klon), solswad0_aerop(klon))
387      ALLOCATE(topsw_aerop(klon,naero_grp), topsw0_aerop(klon,naero_grp))
388      ALLOCATE(solsw_aerop(klon,naero_grp), solsw0_aerop(klon,naero_grp))
389      ALLOCATE(topswcf_aerop(klon,naero_grp), solswcf_aerop(klon,naero_grp))
390
391! FH Ajout de celles nécessaires au phys_output_write_mod
392
393      ALLOCATE(slp(klon))
394      ALLOCATE(ale_wake(klon), alp_wake(klon), bils(klon))
395      ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon))
396      ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon), qsol(klon))
397      ALLOCATE(cldhjn(klon), cldljn(klon), cldmjn(klon), cldtjn(klon))
398      ALLOCATE(JrNt(klon))
399      ALLOCATE(dthmin(klon), evap(klon), fder(klon), plcl(klon), plfc(klon))
400      ALLOCATE(prw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon))
401      ALLOCATE(s_lcl(klon))
402      ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon))
403      ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon))
404      ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon))
405      ALLOCATE(zxfqcalving(klon), zxfluxlat(klon), zxrugs(klon))
406      ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon))
407      ALLOCATE(rain_lsc(klon), wake_h(klon), wbeff(klon), zmax_th(klon))
408      ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon))
409      ALLOCATE(zt2m_min_mon(klon), zt2m_max_mon(klon))
410      ALLOCATE(t2m_min_mon(klon), t2m_max_mon(klon))
411      ALLOCATE(sens(klon), flwp(klon), fiwp(klon))
412      ALLOCATE(ale_bl_stat(klon), alp_bl_conv(klon), alp_bl_det(klon))
413      ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon))
414      ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon))
415      ALLOCATE(proba_notrig(klon), random_notrig(klon))
416
417      ALLOCATE(dnwd(klon, klev), dnwd0(klon, klev))
418!      ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev))
419      ALLOCATE(upwd(klon, klev), omega(klon, klev))
420!      ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev))
421      ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev))
422      ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev))
423      ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev))
424      ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev))
425      ALLOCATE(ref_liq_pi(klon, klev), ref_ice_pi(klon, klev))
426      ALLOCATE(zphi(klon, klev), wake_omg(klon, klev), zx_rh(klon, klev))
427      ALLOCATE(pmfd(klon, klev), pmfu(klon, klev))
428
429      ALLOCATE(t2m(klon, nbsrf), fevap(klon, nbsrf), fluxlat(klon, nbsrf))
430      ALLOCATE(frugs(klon, nbsrf), agesno(klon, nbsrf), fsollw(klon, nbsrf))
431      ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf), wfbilo(klon, nbsrf))
432      ALLOCATE(evap_pot(klon, nbsrf))
433
434      ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1), prfl(klon, klev+1))
435      ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1))
436      ALLOCATE(zw2(klon, klev+1))
437
438      ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf))
439      ALLOCATE(fluxt(klon, klev, nbsrf))
440
441      ALLOCATE(uwriteSTD(klon,nlevSTD,nfiles), vwriteSTD(klon,nlevSTD,nfiles))
442      ALLOCATE(wwriteSTD(klon,nlevSTD,nfiles), phiwriteSTD(klon,nlevSTD,nfiles))
443      ALLOCATE(qwriteSTD(klon,nlevSTD,nfiles), twriteSTD(klon,nlevSTD,nfiles))
444      ALLOCATE(rhwriteSTD(klon,nlevSTD,nfiles))
445
446! ug et d'autres encore:
447      ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev))
448      ALLOCATE(beta_prec(klon,klev))
449      ALLOCATE(rneb(klon,klev),rnebjn(klon,klev))
450
451
452      ALLOCATE (zxsnow(klon),snowhgt(klon),qsnow(klon),to_ice(klon))
453      ALLOCATE (sissnow(klon),runoff(klon),albsol3_lic(klon))
454
455
456
457END SUBROUTINE phys_local_var_init
458
459!======================================================================
460SUBROUTINE phys_local_var_end
461USE dimphy
462USE indice_sol_mod
463IMPLICIT NONE
464      deallocate(t_seri,q_seri,ql_seri,qs_seri)
465      deallocate(u_seri,v_seri)
466
467      deallocate(tr_seri)
468      deallocate(d_t_dyn,d_q_dyn)
469      deallocate(d_u_dyn,d_v_dyn)
470      deallocate(d_tr_dyn)                      !RomP
471      deallocate(d_t_con,d_q_con)
472      deallocate(d_u_con,d_v_con)
473      deallocate(d_t_wake,d_q_wake)
474      deallocate(d_t_lsc,d_q_lsc)
475      deallocate(d_ql_lsc,d_qi_lsc)
476      deallocate(d_t_ajsb,d_q_ajsb)
477      deallocate(d_t_ajs,d_q_ajs)
478      deallocate(d_u_ajs,d_v_ajs)
479      deallocate(d_t_eva,d_q_eva)
480      deallocate(d_t_lscst,d_q_lscst)
481      deallocate(d_t_lscth,d_q_lscth)
482      deallocate(plul_st,plul_th)
483      deallocate(d_t_vdf,d_q_vdf,d_t_diss)
484      deallocate(d_u_vdf,d_v_vdf)
485      deallocate(d_t_oli,d_t_oro)
486      deallocate(d_u_oli,d_v_oli)
487      deallocate(d_u_oro,d_v_oro)
488      deallocate(d_t_lif,d_t_ec)
489      deallocate(d_u_lif,d_v_lif)
490      deallocate(d_ts, d_tr)
491      deallocate(topswad_aero,solswad_aero)
492      deallocate(topswai_aero,solswai_aero)
493      deallocate(topswad0_aero,solswad0_aero)
494      deallocate(topsw_aero,solsw_aero)
495      deallocate(topsw0_aero,solsw0_aero)
496      deallocate(topswcf_aero,solswcf_aero)
497      deallocate(tausum_aero)
498      deallocate(tau3d_aero)
499      deallocate(scdnc)
500      deallocate(cldncl)
501      deallocate(reffclwtop)
502      deallocate(lcc)
503      deallocate(reffclws)
504      deallocate(reffclwc)
505      deallocate(cldnvi)
506      deallocate(lcc3d)
507      deallocate(lcc3dcon)
508      deallocate(lcc3dstra)
509      deallocate(od550aer)       
510      deallocate(od865aer)
511      deallocate(absvisaer)
512      deallocate(ec550aer)
513      deallocate(od550lt1aer)
514      deallocate(sconcso4)
515      deallocate(sconcoa)
516      deallocate(sconcbc)
517      deallocate(sconcss)
518      deallocate(sconcdust)
519      deallocate(concso4)
520      deallocate(concoa)
521      deallocate(concbc)
522      deallocate(concss)
523      deallocate(concdust)
524      deallocate(loadso4)
525      deallocate(loadoa)
526      deallocate(loadbc)
527      deallocate(loadss)
528      deallocate(loaddust)
529      deallocate(load_tmp1)
530      deallocate(load_tmp2)
531      deallocate(load_tmp3)
532      deallocate(load_tmp4)
533      deallocate(load_tmp5)
534      deallocate(load_tmp6)
535      deallocate(load_tmp7)
536      deallocate(d_u_hin,d_v_hin,d_t_hin)
537
538!IM ajout variables CFMIP2/CMIP5
539      deallocate(topswad_aerop, solswad_aerop)
540      deallocate(topswai_aerop, solswai_aerop)
541      deallocate(topswad0_aerop, solswad0_aerop)
542      deallocate(topsw_aerop, topsw0_aerop)
543      deallocate(solsw_aerop, solsw0_aerop)
544      deallocate(topswcf_aerop, solswcf_aerop)
545
546
547! FH Ajout de celles nécessaires au phys_output_write_mod
548      DEALLOCATE(slp)
549      DEALLOCATE(ale_wake, alp_wake, bils)
550      DEALLOCATE(cdragm, cdragh, cldh, cldl)
551      DEALLOCATE(cldm, cldq, cldt, qsat2m, qsol)
552      DEALLOCATE(cldljn, cldmjn, cldhjn, cldtjn, JrNt)
553      DEALLOCATE(dthmin, evap, fder, plcl, plfc)
554      DEALLOCATE(prw, zustar, zu10m, zv10m, rh2m, s_lcl)
555      DEALLOCATE(s_pblh, s_pblt, s_therm)
556      DEALLOCATE(slab_wfbils, tpot, tpote, ue)
557      DEALLOCATE(uq, ve, vq, zxffonte)
558      DEALLOCATE(zxfqcalving, zxfluxlat, zxrugs)
559      DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
560      DEALLOCATE(rain_lsc, wake_h, wbeff, zmax_th)
561      DEALLOCATE(zq2m, zt2m, weak_inversion)
562      DEALLOCATE(zt2m_min_mon, zt2m_max_mon)
563      DEALLOCATE(t2m_min_mon, t2m_max_mon)
564      DEALLOCATE(sens, flwp, fiwp)
565      DEALLOCATE(ale_bl_stat,alp_bl_conv,alp_bl_det)
566      DEALLOCATE(alp_bl_fluct_m,alp_bl_fluct_tke)
567      DEALLOCATE(alp_bl_stat, n2, s2)
568      DEALLOCATE(proba_notrig, random_notrig)
569
570      DEALLOCATE(dnwd, dnwd0)
571!      DEALLOCATE(upwd, omega, coefh)
572      DEALLOCATE(upwd, omega)
573!      DEALLOCATE(coefm, lambda_th, cldemi)
574      DEALLOCATE(lambda_th, cldemi)
575      DEALLOCATE(cldfra, cldtau, fiwc)
576      DEALLOCATE(fl, re, flwc)
577      DEALLOCATE(ref_liq, ref_ice, theta)
578      DEALLOCATE(ref_liq_pi, ref_ice_pi)
579      DEALLOCATE(zphi, wake_omg, zx_rh)
580      DEALLOCATE(pmfd, pmfu)
581
582      DEALLOCATE(t2m, fevap, fluxlat)
583      DEALLOCATE(frugs, agesno, fsollw, evap_pot)
584      DEALLOCATE(fsolsw, wfbils, wfbilo)
585
586      DEALLOCATE(pmflxr, pmflxs, prfl)
587      DEALLOCATE(psfl, fraca, Vprecip)
588      DEALLOCATE(zw2)
589
590      DEALLOCATE(fluxu, fluxv)
591      DEALLOCATE(fluxt)
592
593      DEALLOCATE(uwriteSTD, vwriteSTD)
594      DEALLOCATE(wwriteSTD, phiwriteSTD)
595      DEALLOCATE(qwriteSTD, twriteSTD, rhwriteSTD)
596
597! ug et d'autres encore:
598      DEALLOCATE(wdtrainA, wdtrainM)
599      DEALLOCATE(beta_prec)
600      DEALLOCATE(rneb)
601      DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic)
602
603END SUBROUTINE phys_local_var_end
604
605END MODULE phys_local_var_mod
Note: See TracBrowser for help on using the repository browser.