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

Last change on this file since 1507 was 1507, checked in by idelkadi, 14 years ago
  1. Introduction de nouvelles facon de calucler les ratqs pour firstilp quand iflag_cldcon>=7 : ratqs devient pronos

tic avec une relaxation vers un ratqs issu de la convection (ratqsc) quand celle-ci est active et une relaxation ve
rs ratqss dans le cas contraire.
Les constantes de temps sont a 3h en dur dans le code (en attendant mieux)
On met un coeff iflag_cldcon/100 devant ratqsc
On plafone le ratqs a 0.5 (la aussi en dur dans le code en attendant de stabiliser une facon de faire).

  1. Introduction de nouveaux diagnostics concernant la separation entre la contribution des thermiques et le reste d

ans fisrtilp (dq/tlscth, dq/tlscst,plulth, plulst)
Correction de la sortie de la hauteur des thermiques zmax_th

  1. Introduction d'une option iflag_wake=2 pour prendre en compte les precipitations issues de fisrtipl dans le forc

age des wake.

  1. Correction d'un bug sur l'identification des points affectes par les thermiques (ptconvth(:,k)=fm_therm(:,k+1)>0

.)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 12.9 KB
Line 
1!
2! $Id: phys_local_var_mod.F90 1507 2011-04-15 10:44:31Z idelkadi $
3!
4      MODULE phys_local_var_mod
5
6! Variables locales pour effectuer les appels en serie
7!======================================================================
8!
9!
10!======================================================================
11! Declaration des variables
12
13      REAL, SAVE, ALLOCATABLE :: t_seri(:,:), q_seri(:,:)
14      !$OMP THREADPRIVATE(t_seri, q_seri)
15      REAL, SAVE, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:)
16      !$OMP THREADPRIVATE(ql_seri,qs_seri)
17      REAL, SAVE, ALLOCATABLE :: u_seri(:,:), v_seri(:,:)
18      !$OMP THREADPRIVATE(u_seri, v_seri)
19
20      REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:)
21      !$OMP THREADPRIVATE(tr_seri)
22      REAL, SAVE, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:)
23      !$OMP THREADPRIVATE(d_t_dyn, d_q_dyn)
24      REAL, SAVE, ALLOCATABLE :: d_u_dyn(:,:), d_v_dyn(:,:)
25      !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn)
26      REAL, SAVE, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:)
27      !$OMP THREADPRIVATE(d_t_con,d_q_con)
28      REAL, SAVE, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
29      !$OMP THREADPRIVATE(d_u_con,d_v_con)
30      REAL, SAVE, ALLOCATABLE :: d_t_wake(:,:),d_q_wake(:,:)
31      !$OMP THREADPRIVATE( d_t_wake,d_q_wake)
32      REAL, SAVE, ALLOCATABLE :: d_t_lsc(:,:),d_q_lsc(:,:),d_ql_lsc(:,:)
33      !$OMP THREADPRIVATE(d_t_lsc,d_q_lsc,d_ql_lsc)
34      REAL, SAVE, ALLOCATABLE :: d_t_ajsb(:,:), d_q_ajsb(:,:)
35      !$OMP THREADPRIVATE(d_t_ajsb, d_q_ajsb)
36      REAL, SAVE, ALLOCATABLE :: d_t_ajs(:,:), d_q_ajs(:,:)
37      !$OMP THREADPRIVATE(d_t_ajs, d_q_ajs)
38      REAL, SAVE, ALLOCATABLE :: d_u_ajs(:,:), d_v_ajs(:,:)
39      !$OMP THREADPRIVATE(d_u_ajs, d_v_ajs)
40      REAL, SAVE, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:)
41      !$OMP THREADPRIVATE(d_t_eva,d_q_eva)
42      REAL, SAVE, ALLOCATABLE :: d_t_lscst(:,:),d_q_lscst(:,:)
43      !$OMP THREADPRIVATE(d_t_lscst,d_q_lscst)
44      REAL, SAVE, ALLOCATABLE :: d_t_lscth(:,:),d_q_lscth(:,:)
45      !$OMP THREADPRIVATE(d_t_lscth,d_q_lscth)
46      REAL, SAVE, ALLOCATABLE :: plul_th(:),plul_st(:)
47      !$OMP THREADPRIVATE(plul_th,plul_st)
48!tendances dues a oro et lif
49      REAL, SAVE, ALLOCATABLE :: d_t_oli(:,:)
50      !$OMP THREADPRIVATE(d_t_oli)
51      REAL, SAVE, ALLOCATABLE :: d_u_oli(:,:), d_v_oli(:,:)
52      !$OMP THREADPRIVATE(d_u_oli, d_v_oli)
53      REAL, SAVE, ALLOCATABLE :: d_t_vdf(:,:), d_q_vdf(:,:)
54      !$OMP THREADPRIVATE( d_t_vdf, d_q_vdf)
55      REAL, SAVE, ALLOCATABLE :: d_u_vdf(:,:), d_v_vdf(:,:)
56      !$OMP THREADPRIVATE(d_u_vdf, d_v_vdf)
57      REAL, SAVE, ALLOCATABLE :: d_t_oro(:,:)
58      !$OMP THREADPRIVATE(d_t_oro)
59      REAL, SAVE, ALLOCATABLE :: d_u_oro(:,:), d_v_oro(:,:)
60      !$OMP THREADPRIVATE(d_u_oro, d_v_oro)
61      REAL, SAVE, ALLOCATABLE :: d_t_lif(:,:)
62      !$OMP THREADPRIVATE(d_t_lif)
63      REAL, SAVE, ALLOCATABLE :: d_u_lif(:,:), d_v_lif(:,:)
64      !$OMP THREADPRIVATE(d_u_lif, d_v_lif)
65! Tendances Ondes de G non oro (runs strato).
66      REAL, SAVE, ALLOCATABLE :: d_u_hin(:,:)
67      !$OMP THREADPRIVATE(d_u_hin)
68      REAL, SAVE, ALLOCATABLE :: d_v_hin(:,:)
69      !$OMP THREADPRIVATE(d_v_hin)
70      REAL, SAVE, ALLOCATABLE :: d_t_hin(:,:)
71      !$OMP THREADPRIVATE(d_t_hin)
72
73! tendance du a la conersion Ec -> E thermique
74      REAL, SAVE, ALLOCATABLE :: d_t_ec(:,:)
75      !$OMP THREADPRIVATE(d_t_ec)
76      REAL, SAVE, ALLOCATABLE :: d_ts(:,:), d_tr(:,:,:)
77      !$OMP THREADPRIVATE(d_ts, d_tr)
78
79! diagnostique pour le rayonnement
80      REAL, SAVE, ALLOCATABLE :: topswad_aero(:),  solswad_aero(:)      ! diag
81      !$OMP THREADPRIVATE(topswad_aero,solswad_aero)
82      REAL, SAVE, ALLOCATABLE :: topswai_aero(:),  solswai_aero(:)      ! diag
83      !$OMP THREADPRIVATE(topswai_aero,solswai_aero)
84      REAL, SAVE, ALLOCATABLE :: topswad0_aero(:), solswad0_aero(:)     ! diag
85      !$OMP THREADPRIVATE(topswad0_aero,solswad0_aero)
86      REAL, SAVE, ALLOCATABLE :: topsw_aero(:,:),  solsw_aero(:,:)      ! diag
87      !$OMP THREADPRIVATE(topsw_aero,solsw_aero)
88      REAL, SAVE, ALLOCATABLE :: topsw0_aero(:,:), solsw0_aero(:,:)     ! diag
89      !$OMP THREADPRIVATE(topsw0_aero,solsw0_aero)
90      REAL, SAVE, ALLOCATABLE :: topswcf_aero(:,:),  solswcf_aero(:,:)  ! diag
91      !$OMP THREADPRIVATE(topswcf_aero,solswcf_aero)
92      REAL, SAVE, ALLOCATABLE :: tausum_aero(:,:,:)
93      !$OMP THREADPRIVATE(tausum_aero)
94      REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:)
95      !$OMP THREADPRIVATE(tau3d_aero)
96      REAL, SAVE, ALLOCATABLE :: scdnc(:,:)
97      !$OMP THREADPRIVATE(scdnc)
98      REAL, SAVE, ALLOCATABLE :: cldncl(:)
99      !$OMP THREADPRIVATE(cldncl)
100      REAL, SAVE, ALLOCATABLE :: reffclwtop(:)
101      !$OMP THREADPRIVATE(reffclwtop)
102      REAL, SAVE, ALLOCATABLE :: lcc(:)
103      !$OMP THREADPRIVATE(lcc)
104      REAL, SAVE, ALLOCATABLE :: reffclws(:,:)
105      !$OMP THREADPRIVATE(reffclws)
106      REAL, SAVE, ALLOCATABLE :: reffclwc(:,:)
107      !$OMP THREADPRIVATE(reffclwc)
108      REAL, SAVE, ALLOCATABLE :: cldnvi(:)
109      !$OMP THREADPRIVATE(cldnvi)
110      REAL, SAVE, ALLOCATABLE :: lcc3d(:,:)
111      !$OMP THREADPRIVATE(lcc3d)
112      REAL, SAVE, ALLOCATABLE :: lcc3dcon(:,:)
113      !$OMP THREADPRIVATE(lcc3dcon)
114      REAL, SAVE, ALLOCATABLE :: lcc3dstra(:,:)
115      !$OMP THREADPRIVATE(lcc3dstra)
116      REAL, SAVE, ALLOCATABLE :: od550aer(:)
117      !$OMP THREADPRIVATE(od550aer)
118      REAL, SAVE, ALLOCATABLE :: absvisaer(:)
119      !$OMP THREADPRIVATE(absvisaer)
120      REAL, SAVE, ALLOCATABLE :: od865aer(:)
121      !$OMP THREADPRIVATE(od865aer)
122      REAL, SAVE, ALLOCATABLE :: ec550aer(:,:)
123      !$OMP THREADPRIVATE(ec550aer)
124      REAL, SAVE, ALLOCATABLE :: od550lt1aer(:)
125      !$OMP THREADPRIVATE(od550lt1aer)
126      REAL, SAVE, ALLOCATABLE :: sconcso4(:)
127      !$OMP THREADPRIVATE(sconcso4)
128      REAL, SAVE, ALLOCATABLE :: sconcoa(:)
129      !$OMP THREADPRIVATE(sconcoa)
130      REAL, SAVE, ALLOCATABLE :: sconcbc(:)
131      !$OMP THREADPRIVATE(sconcbc)
132      REAL, SAVE, ALLOCATABLE :: sconcss(:)
133      !$OMP THREADPRIVATE(sconcss)
134      REAL, SAVE, ALLOCATABLE :: sconcdust(:)
135      !$OMP THREADPRIVATE(sconcdust)
136      REAL, SAVE, ALLOCATABLE :: concso4(:,:)
137      !$OMP THREADPRIVATE(concso4)
138      REAL, SAVE, ALLOCATABLE :: concoa(:,:)
139      !$OMP THREADPRIVATE(concoa)
140      REAL, SAVE, ALLOCATABLE :: concbc(:,:)
141      !$OMP THREADPRIVATE(concbc)
142      REAL, SAVE, ALLOCATABLE :: concss(:,:)
143      !$OMP THREADPRIVATE(concss)
144      REAL, SAVE, ALLOCATABLE :: concdust(:,:)
145      !$OMP THREADPRIVATE(concdust)
146      REAL, SAVE, ALLOCATABLE :: loadso4(:)
147      !$OMP THREADPRIVATE(loadso4)
148      REAL, SAVE, ALLOCATABLE :: loadoa(:)
149      !$OMP THREADPRIVATE(loadoa)
150      REAL, SAVE, ALLOCATABLE :: loadbc(:)
151      !$OMP THREADPRIVATE(loadbc)
152      REAL, SAVE, ALLOCATABLE :: loadss(:)
153      !$OMP THREADPRIVATE(loadss)
154      REAL, SAVE, ALLOCATABLE :: loaddust(:)
155      !$OMP THREADPRIVATE(loaddust)
156      REAL, SAVE, ALLOCATABLE :: load_tmp1(:)
157      !$OMP THREADPRIVATE(load_tmp1)
158      REAL, SAVE, ALLOCATABLE :: load_tmp2(:)
159      !$OMP THREADPRIVATE(load_tmp2)
160      REAL, SAVE, ALLOCATABLE :: load_tmp3(:)
161      !$OMP THREADPRIVATE(load_tmp3)
162      REAL, SAVE, ALLOCATABLE :: load_tmp4(:)
163      !$OMP THREADPRIVATE(load_tmp4)
164      REAL, SAVE, ALLOCATABLE :: load_tmp5(:)
165      !$OMP THREADPRIVATE(load_tmp5)
166      REAL, SAVE, ALLOCATABLE :: load_tmp6(:)
167      !$OMP THREADPRIVATE(load_tmp6)
168      REAL, SAVE, ALLOCATABLE :: load_tmp7(:)
169      !$OMP THREADPRIVATE(load_tmp7)
170
171CONTAINS
172
173!======================================================================
174SUBROUTINE phys_local_var_init
175use dimphy
176use infotrac, ONLY : nbtr
177USE aero_mod
178
179IMPLICIT NONE
180#include "indicesol.h"
181      allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev))
182      allocate(u_seri(klon,klev),v_seri(klon,klev))
183
184      allocate(tr_seri(klon,klev,nbtr))
185      allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
186      allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev))
187      allocate(d_t_con(klon,klev),d_q_con(klon,klev))
188      allocate(d_u_con(klon,klev),d_v_con(klon,klev))
189      allocate(d_t_wake(klon,klev),d_q_wake(klon,klev))
190      allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev))
191      allocate(d_ql_lsc(klon,klev))
192      allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev))
193      allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev))
194      allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev))
195      allocate(d_t_eva(klon,klev),d_q_eva(klon,klev))
196      allocate(d_t_lscst(klon,klev),d_q_lscst(klon,klev))
197      allocate(d_t_lscth(klon,klev),d_q_lscth(klon,klev))
198      allocate(plul_st(klon),plul_th(klon))
199      allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev))
200      allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev))
201      allocate(d_t_oli(klon,klev),d_t_oro(klon,klev))
202      allocate(d_u_oli(klon,klev),d_v_oli(klon,klev))
203      allocate(d_u_oro(klon,klev),d_v_oro(klon,klev))
204      allocate(d_t_lif(klon,klev),d_t_ec(klon,klev))
205      allocate(d_u_lif(klon,klev),d_v_lif(klon,klev))
206      allocate(d_ts(klon,nbsrf), d_tr(klon,klev,nbtr))
207      allocate(topswad_aero(klon), solswad_aero(klon))
208      allocate(topswai_aero(klon), solswai_aero(klon))
209      allocate(topswad0_aero(klon), solswad0_aero(klon))
210      allocate(topsw_aero(klon,naero_grp), solsw_aero(klon,naero_grp))
211      allocate(topsw0_aero(klon,naero_grp), solsw0_aero(klon,naero_grp))
212      allocate(topswcf_aero(klon,3), solswcf_aero(klon,3))
213      allocate(d_u_hin(klon,klev),d_v_hin(klon,klev),d_t_hin(klon,klev))
214      allocate(tausum_aero(klon,nwave,naero_spc))
215      allocate(tau3d_aero(klon,klev,nwave,naero_spc))
216      allocate(scdnc(klon, klev))
217      allocate(cldncl(klon))
218      allocate(reffclwtop(klon))
219      allocate(lcc(klon))
220      allocate(reffclws(klon, klev))
221      allocate(reffclwc(klon, klev))
222      allocate(cldnvi(klon))
223      allocate(lcc3d(klon, klev))
224      allocate(lcc3dcon(klon, klev))
225      allocate(lcc3dstra(klon, klev))
226      allocate(od550aer(klon))   
227      allocate(od865aer(klon))   
228      allocate(absvisaer(klon)) 
229      allocate(ec550aer(klon,klev))
230      allocate(od550lt1aer(klon))               
231      allocate(sconcso4(klon))
232      allocate(sconcoa(klon))
233      allocate(sconcbc(klon))
234      allocate(sconcss(klon))
235      allocate(sconcdust(klon))
236      allocate(concso4(klon,klev))
237      allocate(concoa(klon,klev))
238      allocate(concbc(klon,klev))
239      allocate(concss(klon,klev))
240      allocate(concdust(klon,klev))
241      allocate(loadso4(klon))
242      allocate(loadoa(klon))
243      allocate(loadbc(klon))
244      allocate(loadss(klon))
245      allocate(loaddust(klon))
246      allocate(load_tmp1(klon))
247      allocate(load_tmp2(klon))
248      allocate(load_tmp3(klon))
249      allocate(load_tmp4(klon))
250      allocate(load_tmp5(klon))
251      allocate(load_tmp6(klon))
252      allocate(load_tmp7(klon))
253
254END SUBROUTINE phys_local_var_init
255
256!======================================================================
257SUBROUTINE phys_local_var_end
258use dimphy
259IMPLICIT NONE
260#include "indicesol.h"
261      deallocate(t_seri,q_seri,ql_seri,qs_seri)
262      deallocate(u_seri,v_seri)
263
264      deallocate(tr_seri)
265      deallocate(d_t_dyn,d_q_dyn)
266      deallocate(d_u_dyn,d_v_dyn)
267      deallocate(d_t_con,d_q_con)
268      deallocate(d_u_con,d_v_con)
269      deallocate(d_t_wake,d_q_wake)
270      deallocate(d_t_lsc,d_q_lsc)
271      deallocate(d_ql_lsc)
272      deallocate(d_t_ajsb,d_q_ajsb)
273      deallocate(d_t_ajs,d_q_ajs)
274      deallocate(d_u_ajs,d_v_ajs)
275      deallocate(d_t_eva,d_q_eva)
276      deallocate(d_t_lscst,d_q_lscst)
277      deallocate(d_t_lscth,d_q_lscth)
278      deallocate(plul_th,plul_th)
279      deallocate(d_t_vdf,d_q_vdf)
280      deallocate(d_u_vdf,d_v_vdf)
281      deallocate(d_t_oli,d_t_oro)
282      deallocate(d_u_oli,d_v_oli)
283      deallocate(d_u_oro,d_v_oro)
284      deallocate(d_t_lif,d_t_ec)
285      deallocate(d_u_lif,d_v_lif)
286      deallocate(d_ts, d_tr)
287      deallocate(topswad_aero,solswad_aero)
288      deallocate(topswai_aero,solswai_aero)
289      deallocate(topswad0_aero,solswad0_aero)
290      deallocate(topsw_aero,solsw_aero)
291      deallocate(topsw0_aero,solsw0_aero)
292      deallocate(topswcf_aero,solswcf_aero)
293      deallocate(tausum_aero)
294      deallocate(tau3d_aero)
295      deallocate(scdnc)
296      deallocate(cldncl)
297      deallocate(reffclwtop)
298      deallocate(lcc)
299      deallocate(reffclws)
300      deallocate(reffclwc)
301      deallocate(cldnvi)
302      deallocate(lcc3d)
303      deallocate(lcc3dcon)
304      deallocate(lcc3dstra)
305      deallocate(od550aer)       
306      deallocate(od865aer)
307      deallocate(absvisaer)
308      deallocate(ec550aer)
309      deallocate(od550lt1aer)
310      deallocate(sconcso4)
311      deallocate(sconcoa)
312      deallocate(sconcbc)
313      deallocate(sconcss)
314      deallocate(sconcdust)
315      deallocate(concso4)
316      deallocate(concoa)
317      deallocate(concbc)
318      deallocate(concss)
319      deallocate(concdust)
320      deallocate(loadso4)
321      deallocate(loadoa)
322      deallocate(loadbc)
323      deallocate(loadss)
324      deallocate(loaddust)
325      deallocate(load_tmp1)
326      deallocate(load_tmp2)
327      deallocate(load_tmp3)
328      deallocate(load_tmp4)
329      deallocate(load_tmp5)
330      deallocate(load_tmp6)
331      deallocate(load_tmp7)
332      deallocate(d_u_hin,d_v_hin,d_t_hin)
333
334END SUBROUTINE phys_local_var_end
335
336END MODULE phys_local_var_mod
Note: See TracBrowser for help on using the repository browser.