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

Last change on this file since 1246 was 1246, checked in by Laurent Fairhead, 15 years ago
  • En deconnectant les aérosols (ok_ade=ok_aie=n) on a les mêmes

résultats avant et après les modifs.

  • preindustrial readin fields are used to compute natural aerosol fields

to allow for clean double calls to radiation

  • full forcing diagnostics (NAT, ANT, ZERO, Cloud forcing, CS,AS) are

activated with lev_histmth 4, If lev_histmth is not 4, the call to the
radiation is minimized, for efficiency, but ade and aie are computed and
applied (however for species wise forcing one would need to do
difference runs) (still quite a bit new forcing info, requires probably

some more explanation)

  • there is a hardcoded key in sw_aeroAR4.F90 which lets you choose to use the zero aerosol, or natural aerosol perturbation acting on the meteorology, but still would put out the full forcing diagnostics.
  • aod fields from offline aerosol fields are also output in histmth for

all aerosol tracers read in and available for evaluation

  • aeropt contains the ss humidity correction from nicolas&yves
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.2 KB
Line 
1!
2! $Id: phys_local_var_mod.F90 1246 2009-09-23 14:47:40Z fairhead $
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
91CONTAINS
92
93!======================================================================
94SUBROUTINE phys_local_var_init
95use dimphy
96use infotrac, ONLY : nbtr
97USE aero_mod
98
99IMPLICIT NONE
100#include "indicesol.h"
101      allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev))
102      allocate(u_seri(klon,klev),v_seri(klon,klev))
103
104      allocate(tr_seri(klon,klev,nbtr))
105      allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
106      allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev))
107      allocate(d_t_con(klon,klev),d_q_con(klon,klev))
108      allocate(d_u_con(klon,klev),d_v_con(klon,klev))
109      allocate(d_t_wake(klon,klev),d_q_wake(klon,klev))
110      allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev))
111      allocate(d_ql_lsc(klon,klev))
112      allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev))
113      allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev))
114      allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev))
115      allocate(d_t_eva(klon,klev),d_q_eva(klon,klev))
116      allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev))
117      allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev))
118      allocate(d_t_oli(klon,klev),d_t_oro(klon,klev))
119      allocate(d_u_oli(klon,klev),d_v_oli(klon,klev))
120      allocate(d_u_oro(klon,klev),d_v_oro(klon,klev))
121      allocate(d_t_lif(klon,klev),d_t_ec(klon,klev))
122      allocate(d_u_lif(klon,klev),d_v_lif(klon,klev))
123      allocate(d_ts(klon,klev), d_tr(klon,klev,nbtr))
124      allocate(topswad_aero(klon), solswad_aero(klon))
125      allocate(topswai_aero(klon), solswai_aero(klon))
126      allocate(topswad0_aero(klon), solswad0_aero(klon))
127      allocate(topsw_aero(klon,naero_grp), solsw_aero(klon,naero_grp))
128      allocate(topsw0_aero(klon,naero_grp), solsw0_aero(klon,naero_grp))
129      allocate(topswcf_aero(klon,3), solswcf_aero(klon,3))
130      allocate(d_u_hin(klon,klev),d_v_hin(klon,klev),d_t_hin(klon,klev))
131      allocate(tausum_aero(klon,nwave,naero_spc))
132      allocate(tau3d_aero(klon,klev,nwave,naero_spc))
133
134END SUBROUTINE phys_local_var_init
135
136!======================================================================
137SUBROUTINE phys_local_var_end
138use dimphy
139IMPLICIT NONE
140#include "indicesol.h"
141      deallocate(t_seri,q_seri,ql_seri,qs_seri)
142      deallocate(u_seri,v_seri)
143
144      deallocate(tr_seri)
145      deallocate(d_t_dyn,d_q_dyn)
146      deallocate(d_u_dyn,d_v_dyn)
147      deallocate(d_t_con,d_q_con)
148      deallocate(d_u_con,d_v_con)
149      deallocate(d_t_wake,d_q_wake)
150      deallocate(d_t_lsc,d_q_lsc)
151      deallocate(d_ql_lsc)
152      deallocate(d_t_ajsb,d_q_ajsb)
153      deallocate(d_t_ajs,d_q_ajs)
154      deallocate(d_u_ajs,d_v_ajs)
155      deallocate(d_t_eva,d_q_eva)
156      deallocate(d_t_vdf,d_q_vdf)
157      deallocate(d_u_vdf,d_v_vdf)
158      deallocate(d_t_oli,d_t_oro)
159      deallocate(d_u_oli,d_v_oli)
160      deallocate(d_u_oro,d_v_oro)
161      deallocate(d_t_lif,d_t_ec)
162      deallocate(d_u_lif,d_v_lif)
163      deallocate(d_ts, d_tr)
164      deallocate(topswad_aero,solswad_aero)
165      deallocate(topswai_aero,solswai_aero)
166      deallocate(topswad0_aero,solswad0_aero)
167      deallocate(topsw_aero,solsw_aero)
168      deallocate(topsw0_aero,solsw0_aero)
169      deallocate(topswcf_aero,solswcf_aero)
170      deallocate(tausum_aero)
171      deallocate(tau3d_aero)
172      deallocate(d_u_hin,d_v_hin,d_t_hin)
173
174END SUBROUTINE phys_local_var_end
175
176END MODULE phys_local_var_mod
Note: See TracBrowser for help on using the repository browser.