source: LMDZ4/trunk/libf/phylmd/phys_local_var_mod.F90 @ 3840

Last change on this file since 3840 was 1424, checked in by jghattas, 14 years ago
  • Modified name of tracers in history files to their real name(from tracer.def) ; for exemple RN instead of trac01
  • Corrected allocation of d_ts.


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