source: LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_local_var_mod.F90 @ 1179

Last change on this file since 1179 was 1179, checked in by jghattas, 15 years ago
  • Ajout de l'interpolation vertical pour les nouveaux fichiers de forcage des aerosols. Utilisant les anciennes fichiers de SO4 pas d'interpolation possible. Convergence numerique avec la version precedente en utilisant les anciens fichiers des SO4. aerosol_optic.F90 change du nom pour readaerosol_optic.F90 (lecture d'aerosol + optic) Les fichiers de forcage aerosol doit maintenant avoir le suffix .nc.
  • Correction des bugs pour inca et certain diagnostiques optionelles de radlwsw.
  • Ajout de test pour le choix advection schema.
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.6 KB
Line 
1!
2! $Id: phys_local_var_mod.F90 1179 2009-06-11 14:18:47Z jghattas $
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      REAL, SAVE, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:)
26      !$OMP THREADPRIVATE(d_t_con,d_q_con)
27      REAL, SAVE, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
28      !$OMP THREADPRIVATE(d_u_con,d_v_con)
29      REAL, SAVE, ALLOCATABLE :: d_t_wake(:,:),d_q_wake(:,:)
30      !$OMP THREADPRIVATE( d_t_wake,d_q_wake)
31      REAL, SAVE, ALLOCATABLE :: d_t_lsc(:,:),d_q_lsc(:,:),d_ql_lsc(:,:)
32      !$OMP THREADPRIVATE(d_t_lsc,d_q_lsc,d_ql_lsc)
33      REAL, SAVE, ALLOCATABLE :: d_t_ajsb(:,:), d_q_ajsb(:,:)
34      !$OMP THREADPRIVATE(d_t_ajsb, d_q_ajsb)
35      REAL, SAVE, ALLOCATABLE :: d_t_ajs(:,:), d_q_ajs(:,:)
36      !$OMP THREADPRIVATE(d_t_ajs, d_q_ajs)
37      REAL, SAVE, ALLOCATABLE :: d_u_ajs(:,:), d_v_ajs(:,:)
38      !$OMP THREADPRIVATE(d_u_ajs, d_v_ajs)
39      REAL, SAVE, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:)
40      !$OMP THREADPRIVATE(d_t_eva,d_q_eva)
41!tendances dues a oro et lif
42      REAL, SAVE, ALLOCATABLE :: d_t_oli(:,:)
43      !$OMP THREADPRIVATE(d_t_oli)
44      REAL, SAVE, ALLOCATABLE :: d_u_oli(:,:), d_v_oli(:,:)
45      !$OMP THREADPRIVATE(d_u_oli, d_v_oli)
46      REAL, SAVE, ALLOCATABLE :: d_t_vdf(:,:), d_q_vdf(:,:)
47      !$OMP THREADPRIVATE( d_t_vdf, d_q_vdf)
48      REAL, SAVE, ALLOCATABLE :: d_u_vdf(:,:), d_v_vdf(:,:)
49      !$OMP THREADPRIVATE(d_u_vdf, d_v_vdf)
50      REAL, SAVE, ALLOCATABLE :: d_t_oro(:,:)
51      !$OMP THREADPRIVATE(d_t_oro)
52      REAL, SAVE, ALLOCATABLE :: d_u_oro(:,:), d_v_oro(:,:)
53      !$OMP THREADPRIVATE(d_u_oro, d_v_oro)
54      REAL, SAVE, ALLOCATABLE :: d_t_lif(:,:)
55      !$OMP THREADPRIVATE(d_t_lif)
56      REAL, SAVE, ALLOCATABLE :: d_u_lif(:,:), d_v_lif(:,:)
57      !$OMP THREADPRIVATE(d_u_lif, d_v_lif)
58! Tendances Ondes de G non oro (runs strato).
59      REAL, SAVE, ALLOCATABLE :: d_u_hin(:,:)
60      !$OMP THREADPRIVATE(d_u_hin)
61      REAL, SAVE, ALLOCATABLE :: d_v_hin(:,:)
62      !$OMP THREADPRIVATE(d_v_hin)
63      REAL, SAVE, ALLOCATABLE :: d_t_hin(:,:)
64      !$OMP THREADPRIVATE(d_t_hin)
65
66! tendance du a la conersion Ec -> E thermique
67      REAL, SAVE, ALLOCATABLE :: d_t_ec(:,:)
68      !$OMP THREADPRIVATE(d_t_ec)
69      REAL, SAVE, ALLOCATABLE :: d_ts(:,:), d_tr(:,:,:)
70      !$OMP THREADPRIVATE(d_ts, d_tr)
71
72! diagnostique pour le rayonnement
73      REAL, SAVE, ALLOCATABLE :: topswad_aero(:),  solswad_aero(:)  ! diag
74      !$OMP THREADPRIVATE(topswad_aero,solswad_aero)
75      REAL, SAVE, ALLOCATABLE :: topswai_aero(:),  solswai_aero(:)  ! diag
76      !$OMP THREADPRIVATE(topswai_aero,solswai_aero)
77      REAL, SAVE, ALLOCATABLE :: topswad0_aero(:), solswad0_aero(:) ! pas utilise, eventuellment pour diag
78      !$OMP THREADPRIVATE(topswad0_aero,solswad0_aero)
79      REAL, SAVE, ALLOCATABLE :: topsw_aero(:,:),  solsw_aero(:,:)  ! pas utilise, eventuellment pour diag
80      !$OMP THREADPRIVATE(topsw_aero,solsw_aero)
81      REAL, SAVE, ALLOCATABLE :: topsw0_aero(:,:), solsw0_aero(:,:) ! pas utilise, eventuellment pour diag
82      !$OMP THREADPRIVATE(topsw0_aero,solsw0_aero)
83CONTAINS
84
85!======================================================================
86SUBROUTINE phys_local_var_init
87use dimphy
88use infotrac, ONLY : nbtr
89IMPLICIT NONE
90#include "indicesol.h"
91      allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev))
92      allocate(u_seri(klon,klev),v_seri(klon,klev))
93
94      allocate(tr_seri(klon,klev,nbtr))
95      allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
96      allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev))
97      allocate(d_t_con(klon,klev),d_q_con(klon,klev))
98      allocate(d_u_con(klon,klev),d_v_con(klon,klev))
99      allocate(d_t_wake(klon,klev),d_q_wake(klon,klev))
100      allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev))
101      allocate(d_ql_lsc(klon,klev))
102      allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev))
103      allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev))
104      allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev))
105      allocate(d_t_eva(klon,klev),d_q_eva(klon,klev))
106      allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev))
107      allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev))
108      allocate(d_t_oli(klon,klev),d_t_oro(klon,klev))
109      allocate(d_u_oli(klon,klev),d_v_oli(klon,klev))
110      allocate(d_u_oro(klon,klev),d_v_oro(klon,klev))
111      allocate(d_t_lif(klon,klev),d_t_ec(klon,klev))
112      allocate(d_u_lif(klon,klev),d_v_lif(klon,klev))
113      allocate(d_ts(klon,klev), d_tr(klon,klev,nbtr))
114      allocate(topswad_aero(klon), solswad_aero(klon))
115      allocate(topswai_aero(klon), solswai_aero(klon))
116      allocate(topswad0_aero(klon), solswad0_aero(klon))
117      allocate(topsw_aero(klon,9), solsw_aero(klon,9))
118      allocate(topsw0_aero(klon,9), solsw0_aero(klon,9))
119      allocate(d_u_hin(klon,klev),d_v_hin(klon,klev),d_t_hin(klon,klev))
120
121END SUBROUTINE phys_local_var_init
122
123!======================================================================
124SUBROUTINE phys_local_var_end
125use dimphy
126IMPLICIT NONE
127#include "indicesol.h"
128      deallocate(t_seri,q_seri,ql_seri,qs_seri)
129      deallocate(u_seri,v_seri)
130
131      deallocate(tr_seri)
132      deallocate(d_t_dyn,d_q_dyn)
133      deallocate(d_u_dyn,d_v_dyn)
134      deallocate(d_t_con,d_q_con)
135      deallocate(d_u_con,d_v_con)
136      deallocate(d_t_wake,d_q_wake)
137      deallocate(d_t_lsc,d_q_lsc)
138      deallocate(d_ql_lsc)
139      deallocate(d_t_ajsb,d_q_ajsb)
140      deallocate(d_t_ajs,d_q_ajs)
141      deallocate(d_u_ajs,d_v_ajs)
142      deallocate(d_t_eva,d_q_eva)
143      deallocate(d_t_vdf,d_q_vdf)
144      deallocate(d_u_vdf,d_v_vdf)
145      deallocate(d_t_oli,d_t_oro)
146      deallocate(d_u_oli,d_v_oli)
147      deallocate(d_u_oro,d_v_oro)
148      deallocate(d_t_lif,d_t_ec)
149      deallocate(d_u_lif,d_v_lif)
150      deallocate(d_ts, d_tr)
151      deallocate(topswad_aero,solswad_aero)
152      deallocate(topswai_aero,solswai_aero)
153      deallocate(topswad0_aero,solswad0_aero)
154      deallocate(topsw_aero,solsw_aero)
155      deallocate(topsw0_aero,solsw0_aero)
156      deallocate(d_u_hin,d_v_hin,d_t_hin)
157
158END SUBROUTINE phys_local_var_end
159
160END MODULE phys_local_var_mod
Note: See TracBrowser for help on using the repository browser.