1 | !$Id: chem_mod.F90 104 2008-12-23 10:28:51Z acosce $ |
---|
2 | !! ========================================================================= |
---|
3 | !! INCA - INteraction with Chemistry and Aerosols |
---|
4 | !! |
---|
5 | !! Copyright Laboratoire des Sciences du Climat et de l'Environnement (LSCE) |
---|
6 | !! Unite mixte CEA-CNRS-UVSQ |
---|
7 | !! |
---|
8 | !! Contributors to this INCA subroutine: |
---|
9 | !! |
---|
10 | !! Didier Hauglustaine, LSCE, hauglustaine@cea.fr |
---|
11 | !! Stacy Walters, NCAR, stacy@ucar.edu |
---|
12 | !! |
---|
13 | !! Anne Cozic, LSCE, anne.cozic@cea.fr |
---|
14 | !! Yann Meurdesoif, LSCE, yann.meurdesoif@cea.fr |
---|
15 | !! |
---|
16 | !! This software is a computer program whose purpose is to simulate the |
---|
17 | !! atmospheric gas phase and aerosol composition. The model is designed to be |
---|
18 | !! used within a transport model or a general circulation model. This version |
---|
19 | !! of INCA was designed to be coupled to the LMDz GCM. LMDz-INCA accounts |
---|
20 | !! for emissions, transport (resolved and sub-grid scale), photochemical |
---|
21 | !! transformations, and scavenging (dry deposition and washout) of chemical |
---|
22 | !! species and aerosols interactively in the GCM. Several versions of the INCA |
---|
23 | !! model are currently used depending on the envisaged applications with the |
---|
24 | !! chemistry-climate model. |
---|
25 | !! |
---|
26 | !! This software is governed by the CeCILL license under French law and |
---|
27 | !! abiding by the rules of distribution of free software. You can use, |
---|
28 | !! modify and/ or redistribute the software under the terms of the CeCILL |
---|
29 | !! license as circulated by CEA, CNRS and INRIA at the following URL |
---|
30 | !! "http://www.cecill.info". |
---|
31 | !! |
---|
32 | !! As a counterpart to the access to the source code and rights to copy, |
---|
33 | !! modify and redistribute granted by the license, users are provided only |
---|
34 | !! with a limited warranty and the software's author, the holder of the |
---|
35 | !! economic rights, and the successive licensors have only limited |
---|
36 | !! liability. |
---|
37 | !! |
---|
38 | !! In this respect, the user's attention is drawn to the risks associated |
---|
39 | !! with loading, using, modifying and/or developing or reproducing the |
---|
40 | !! software by the user in light of its specific status of free software, |
---|
41 | !! that may mean that it is complicated to manipulate, and that also |
---|
42 | !! therefore means that it is reserved for developers and experienced |
---|
43 | !! professionals having in-depth computer knowledge. Users are therefore |
---|
44 | !! encouraged to load and test the software's suitability as regards their |
---|
45 | !! requirements in conditions enabling the security of their systems and/or |
---|
46 | !! data to be ensured and, more generally, to use and operate it in the |
---|
47 | !! same conditions as regards security. |
---|
48 | !! |
---|
49 | !! The fact that you are presently reading this means that you have had |
---|
50 | !! knowledge of the CeCILL license and that you accept its terms. |
---|
51 | !! ========================================================================= |
---|
52 | |
---|
53 | #include <inca_define.h> |
---|
54 | |
---|
55 | |
---|
56 | MODULE CHEM_MODS |
---|
57 | !-------------------------------------------------------------- |
---|
58 | ! ... Basic chemistry array parameters |
---|
59 | ! Stacy Walters, NCAR, 1998. |
---|
60 | ! Modified Didier Hauglustaine, IPSL, 2001. |
---|
61 | !-------------------------------------------------------------- |
---|
62 | |
---|
63 | |
---|
64 | USE CONST_MOD |
---|
65 | IMPLICIT NONE |
---|
66 | |
---|
67 | INTEGER, PARAMETER :: hetcnt = HETCNT ! number of heterogeneous processes |
---|
68 | INTEGER, PARAMETER :: phtcnt = PHTCNT ! number of photo processes |
---|
69 | INTEGER, PARAMETER :: rxntot = RXNCNT ! number of total reactions |
---|
70 | INTEGER, PARAMETER :: ncol = NCOL ! number of column densities |
---|
71 | INTEGER, PARAMETER :: nfs = NFS ! number of "fixed" species |
---|
72 | INTEGER, PARAMETER :: relcnt = RELCNT ! number of relationship species |
---|
73 | INTEGER, PARAMETER :: grpcnt = GRPCNT ! number of group members |
---|
74 | INTEGER, PARAMETER :: extcnt = EXTCNT ! number of external forcings |
---|
75 | |
---|
76 | INTEGER, SAVE :: clscnt(5) |
---|
77 | INTEGER, SAVE :: cls_rxt_cnt(4,5) |
---|
78 | INTEGER, SAVE :: clsmap(PCNST,5) |
---|
79 | INTEGER, SAVE :: permute(PCNST,5) |
---|
80 | !$OMP THREADPRIVATE(clscnt) |
---|
81 | !$OMP THREADPRIVATE(cls_rxt_cnt) |
---|
82 | !$OMP THREADPRIVATE(clsmap) |
---|
83 | !$OMP THREADPRIVATE(permute) |
---|
84 | |
---|
85 | # if CLSCNT4 != 0 |
---|
86 | INTEGER, SAVE :: diag_map(CLSCNT4) |
---|
87 | # elif CLSCNT5 != 0 |
---|
88 | INTEGER, SAVE :: diag_map(CLSCNT5) |
---|
89 | # else |
---|
90 | INTEGER, SAVE :: diag_map(no_size) |
---|
91 | # endif |
---|
92 | !$OMP THREADPRIVATE(diag_map) |
---|
93 | REAL, SAVE :: adv_mass(PCNST) |
---|
94 | !$OMP THREADPRIVATE(adv_mass) |
---|
95 | |
---|
96 | # if GRPCNT != 0 |
---|
97 | REAL, SAVE :: nadv_mass(GRPCNT) |
---|
98 | REAL, SAVE, ALLOCATABLE :: nas(:,:,:) ! non-advected species( mmr ) |
---|
99 | # else |
---|
100 | REAL, SAVE :: nadv_mass(no_size) |
---|
101 | REAL, SAVE :: nas(no_size) ! place holder |
---|
102 | # endif |
---|
103 | !$OMP THREADPRIVATE(nadv_mass) |
---|
104 | !$OMP THREADPRIVATE(nas) |
---|
105 | |
---|
106 | # if NFS != 0 |
---|
107 | REAL, SAVE, ALLOCATABLE :: invariants(:,:,:) |
---|
108 | # else |
---|
109 | REAL, SAVE :: invariants(no_size) |
---|
110 | # endif |
---|
111 | !$OMP THREADPRIVATE(invariants) |
---|
112 | |
---|
113 | # if HETCNT != 0 |
---|
114 | REAL,SAVE,ALLOCATABLE :: hrates(:,:,:) |
---|
115 | REAL,SAVE,ALLOCATABLE :: hrates_st(:,:,:) |
---|
116 | REAL,SAVE,ALLOCATABLE :: hrates_cv(:,:,:) |
---|
117 | # else |
---|
118 | REAL, SAVE :: hrates(no_size) |
---|
119 | REAL, SAVE :: hrates_st(no_size) |
---|
120 | REAL, SAVE :: hrates_cv(no_size) |
---|
121 | # endif |
---|
122 | !$OMP THREADPRIVATE(hrates) |
---|
123 | !$OMP THREADPRIVATE(hrates_st) |
---|
124 | !$OMP THREADPRIVATE(hrates_cv) |
---|
125 | |
---|
126 | # if EXTCNT != 0 |
---|
127 | REAL,SAVE,ALLOCATABLE :: extflx(:,:,:) |
---|
128 | REAL,SAVE,ALLOCATABLE :: extfrc(:,:,:) |
---|
129 | REAL,SAVE,ALLOCATABLE :: extfrc_col(:,:) |
---|
130 | # else |
---|
131 | REAL, SAVE :: extflx(no_size) |
---|
132 | REAL, SAVE :: extfrc(no_size) |
---|
133 | REAL, SAVE :: extfrc_col(no_size) |
---|
134 | # endif |
---|
135 | !$OMP THREADPRIVATE(extflx, extfrc, extfrc_col) |
---|
136 | |
---|
137 | REAL, SAVE, ALLOCATABLE :: krates(:,:,:) |
---|
138 | !$OMP THREADPRIVATE(krates) |
---|
139 | |
---|
140 | # if NCOL != 0 |
---|
141 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: o3_col |
---|
142 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: co_col |
---|
143 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: so2_col |
---|
144 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: oh_col |
---|
145 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: ch4_col |
---|
146 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: no2_col |
---|
147 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: ch2o_col |
---|
148 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: hno2_col |
---|
149 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: o3l_col |
---|
150 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: o3tot_col |
---|
151 | !$OMP THREADPRIVATE(o3_col,co_col,so2_col, oh_col, ch4_col,no2_col,ch2o_col,hno2_col,o3l_col,o3tot_col) |
---|
152 | #endif |
---|
153 | |
---|
154 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: dry_hno3 |
---|
155 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: dry_noy |
---|
156 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: dry_hono |
---|
157 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hno3_p_g |
---|
158 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hno3_p_a |
---|
159 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hno3_l_g |
---|
160 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hno3_l_a |
---|
161 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: wet3d_hno3 |
---|
162 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: wet3d_hono |
---|
163 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: wet3d_noy |
---|
164 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: wet3d_h2o2 |
---|
165 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: wetloss |
---|
166 | !$OMP THREADPRIVATE(dry_hno3,dry_noy, dry_hono) |
---|
167 | !$OMP THREADPRIVATE(wet3d_hno3,wet3d_noy,wet3d_h2o2, wet3d_hono, wetloss) |
---|
168 | !$OMP THREADPRIVATE(hno3_p_g,hno3_p_a,hno3_l_g,hno3_l_a) |
---|
169 | |
---|
170 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: prod_light_col |
---|
171 | !$OMP THREADPRIVATE(prod_light_col) |
---|
172 | |
---|
173 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: o3_st_flx |
---|
174 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: o3_prod |
---|
175 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: o3_loss |
---|
176 | !$OMP THREADPRIVATE(o3_st_flx,o3_prod,o3_loss) |
---|
177 | |
---|
178 | ! Cgaf variables for the CO2 budget |
---|
179 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: co2_basprod |
---|
180 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: co2_nmhcprod |
---|
181 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: co2_radicalprod |
---|
182 | !$OMP THREADPRIVATE(co2_basprod, co2_nmhcprod, co2_radicalprod) |
---|
183 | |
---|
184 | ! Cgaf variables for the budgets |
---|
185 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hno3_prod |
---|
186 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hno3_loss |
---|
187 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: co_prod |
---|
188 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: co_loss |
---|
189 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: ch4_loss |
---|
190 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: n2o_loss |
---|
191 | !$OMP THREADPRIVATE(hno3_prod, hno3_loss, co_prod, co_loss) |
---|
192 | !$OMP THREADPRIVATE(ch4_loss,n2o_loss) |
---|
193 | |
---|
194 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: nh3_col |
---|
195 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: dry_nh3 |
---|
196 | !$OMP THREADPRIVATE(nh3_col,dry_nh3) |
---|
197 | |
---|
198 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: so2_p_h2soh |
---|
199 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: so2_p_dmsoh |
---|
200 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: so2_p_dmsno3 |
---|
201 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: so2_p_dmsooh |
---|
202 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: asmsam_p_dmsooh |
---|
203 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: dmso_p_dmsoh |
---|
204 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: asso4m_p_so2oh |
---|
205 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: asso4m_p_so2o3 |
---|
206 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: asso4m_p_so2h2o2 |
---|
207 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: wet3d_so2 |
---|
208 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: wet3d_dms |
---|
209 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: wet3d_dmso |
---|
210 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: ph_hist |
---|
211 | !$OMP THREADPRIVATE(so2_p_h2soh,so2_p_dmsoh,so2_p_dmsno3,so2_p_dmsooh) |
---|
212 | !$OMP THREADPRIVATE(asmsam_p_dmsooh,dmso_p_dmsoh,asso4m_p_so2oh,asso4m_p_so2o3) |
---|
213 | !$OMP THREADPRIVATE(asso4m_p_so2h2o2,wet3d_so2,wet3d_dms,wet3d_dmso, ph_hist) |
---|
214 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: Wet3D_ASSO4M |
---|
215 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: Wet3D_ASNH4M |
---|
216 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: Wet3D_ASNO3M |
---|
217 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: Wet3D_CSNO3M |
---|
218 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: Wet3D_CINO3M |
---|
219 | !$OMP THREADPRIVATE(Wet3D_ASSO4M,Wet3D_ASNH4M,Wet3D_ASNO3M,Wet3D_CSNO3M,Wet3D_CINO3M) |
---|
220 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: ASAPp1a_p,ASAPp2a_p,ASARp1a_p,ASARp2a_p |
---|
221 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: asno3m_p_nh3hno3 |
---|
222 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: asnh4m_p_nh3hno3 |
---|
223 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: nh3_p_nh3hno3 |
---|
224 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hno3_p_nh3hno3 |
---|
225 | !$OMP THREADPRIVATE(asno3m_p_nh3hno3,asnh4m_p_nh3hno3,nh3_p_nh3hno3,hno3_p_nh3hno3) |
---|
226 | !$OMP THREADPRIVATE(ASAPp1a_p,ASAPp2a_p,ASARp1a_p,ASARp2a_p) |
---|
227 | |
---|
228 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: asso4m_p_so2oh_col |
---|
229 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: asso4m_p_so2o3_col |
---|
230 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: asso4m_p_so2h2o2_col |
---|
231 | REAL, SAVE, ALLOCATABLE, DIMENSION(:) :: ASAP_p_col, ASAR_p_col |
---|
232 | !$OMP THREADPRIVATE(asso4m_p_so2oh_col,asso4m_p_so2o3_col,asso4m_p_so2h2o2_col) |
---|
233 | !$OMP THREADPRIVATE(ASAP_p_col,ASAR_p_col) |
---|
234 | |
---|
235 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: nh3_l_g |
---|
236 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: nh3_l_a |
---|
237 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: pom_p_g |
---|
238 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hono_l_a |
---|
239 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hono_p_a |
---|
240 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hono_l_g |
---|
241 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: hono_p_g |
---|
242 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: csno3_p_a1 |
---|
243 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: csno3_p_a2 |
---|
244 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: cino3_p_a |
---|
245 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: wet3d_nh3 |
---|
246 | !$OMP THREADPRIVATE(hono_l_a, hono_p_a, hono_l_g, hono_p_g) |
---|
247 | !$OMP THREADPRIVATE(nh3_l_g,nh3_l_a,csno3_p_a1,csno3_p_a2,cino3_p_a,pom_p_g) |
---|
248 | !$OMP THREADPRIVATE(wet3d_nh3) |
---|
249 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: no_daytime |
---|
250 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: day_cnt |
---|
251 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: o3_inca |
---|
252 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: h2o_inca |
---|
253 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: ch4_inca |
---|
254 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: n2o_inca |
---|
255 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: cfc11_inca |
---|
256 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: cfc12_inca |
---|
257 | !$OMP THREADPRIVATE(no_daytime,day_cnt,o3_inca,h2o_inca,ch4_inca,n2o_inca,cfc11_inca,cfc12_inca) |
---|
258 | |
---|
259 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: ch4_inca_2d |
---|
260 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: n2o_inca_2d |
---|
261 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: cfc11_inca_2d |
---|
262 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: cfc12_inca_2d |
---|
263 | !$OMP THREADPRIVATE(ch4_inca_2d,n2o_inca_2d,cfc11_inca_2d,cfc12_inca_2d) |
---|
264 | |
---|
265 | |
---|
266 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: h2oc |
---|
267 | REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: h2o |
---|
268 | !$OMP THREADPRIVATE(h2oc,h2o) |
---|
269 | |
---|
270 | CONTAINS |
---|
271 | |
---|
272 | SUBROUTINE INIT_CHEM_MODS |
---|
273 | USE inca_dim |
---|
274 | IMPLICIT NONE |
---|
275 | |
---|
276 | # if GRPCNT != 0 |
---|
277 | ALLOCATE( nas(PLON,PLEV,GRPCNT)) |
---|
278 | # endif |
---|
279 | # if NFS != 0 |
---|
280 | ALLOCATE( invariants(PLON,PLEV,NFS)) |
---|
281 | # endif |
---|
282 | # if HETCNT != 0 |
---|
283 | ALLOCATE( hrates(PLON,PLEV,HETCNT)) |
---|
284 | ALLOCATE( hrates_cv(PLON,PLEV,HETCNT)) |
---|
285 | # endif |
---|
286 | # if EXTCNT != 0 |
---|
287 | ALLOCATE( extflx(PLON,PLEV,EXTCNT)) |
---|
288 | ALLOCATE( extfrc(PLON,PLEV,EXTCNT)) |
---|
289 | ALLOCATE( extfrc_col(PLON,EXTCNT)) |
---|
290 | # endif |
---|
291 | ALLOCATE( krates(PLON,PLEV,4)) |
---|
292 | # if NCOL != 0 |
---|
293 | ALLOCATE( o3_col(PLON)) |
---|
294 | ALLOCATE( so2_col(PLON)) |
---|
295 | ALLOCATE( oh_col(PLON)) |
---|
296 | ALLOCATE( co_col(PLON)) |
---|
297 | ALLOCATE( ch4_col(PLON)) |
---|
298 | ALLOCATE( no2_col(PLON)) |
---|
299 | ALLOCATE( ch2o_col(PLON)) |
---|
300 | ALLOCATE( hno2_col(PLON)) |
---|
301 | ALLOCATE(o3l_col(PLON)) |
---|
302 | ALLOCATE(o3tot_col(PLON)) |
---|
303 | #endif |
---|
304 | ALLOCATE( prod_light_col(PLON)) |
---|
305 | ALLOCATE( o3_st_flx(PLON)) |
---|
306 | ALLOCATE( o3_prod(PLON,PLEV)) |
---|
307 | ALLOCATE( o3_loss(PLON,PLEV)) |
---|
308 | ALLOCATE( dry_hno3(PLON)) |
---|
309 | ALLOCATE( dry_hono(PLON)) |
---|
310 | ALLOCATE( dry_noy(PLON)) |
---|
311 | ALLOCATE( hno3_p_g(PLON,PLEV)) |
---|
312 | ALLOCATE( hno3_p_a(PLON,PLEV)) |
---|
313 | ALLOCATE( hno3_l_g(PLON,PLEV)) |
---|
314 | ALLOCATE( hno3_l_a(PLON,PLEV)) |
---|
315 | ALLOCATE( wet3d_hno3(PLON,PLEV)) |
---|
316 | ALLOCATE( wet3d_hono(PLON,PLEV)) |
---|
317 | ALLOCATE( wet3d_noy(PLON,PLEV)) |
---|
318 | ALLOCATE( wet3d_h2o2(PLON,PLEV)) |
---|
319 | ALLOCATE( wetloss(PLON,PLEV,HETCNT)) |
---|
320 | ALLOCATE( co2_basprod(PLON,PLEV) ) |
---|
321 | ALLOCATE( co2_nmhcprod(PLON,PLEV) ) |
---|
322 | ALLOCATE( co2_radicalprod(PLON,PLEV) ) |
---|
323 | ALLOCATE( hno3_prod(PLON,PLEV) ) |
---|
324 | ALLOCATE( hno3_loss(PLON,PLEV) ) |
---|
325 | ALLOCATE( co_prod(PLON,PLEV) ) |
---|
326 | ALLOCATE( co_loss(PLON,PLEV) ) |
---|
327 | ALLOCATE( ch4_loss(PLON,PLEV) ) |
---|
328 | ALLOCATE( n2o_loss(PLON,PLEV) ) |
---|
329 | ALLOCATE( nh3_col(PLON)) |
---|
330 | ALLOCATE( dry_nh3(PLON)) |
---|
331 | ALLOCATE( so2_p_h2soh(PLON,PLEV) ) |
---|
332 | ALLOCATE( so2_p_dmsoh(PLON,PLEV) ) |
---|
333 | ALLOCATE( so2_p_dmsno3(PLON,PLEV) ) |
---|
334 | ALLOCATE( so2_p_dmsooh(PLON,PLEV) ) |
---|
335 | ALLOCATE( asmsam_p_dmsooh(PLON,PLEV) ) |
---|
336 | ALLOCATE( dmso_p_dmsoh(PLON,PLEV) ) |
---|
337 | ALLOCATE( asso4m_p_so2oh(PLON,PLEV) ) |
---|
338 | ALLOCATE( asso4m_p_so2o3(PLON,PLEV) ) |
---|
339 | ALLOCATE( asso4m_p_so2h2o2(PLON,PLEV) ) |
---|
340 | ALLOCATE( wet3d_so2(PLON,PLEV) ) |
---|
341 | ALLOCATE(Wet3D_ASSO4M(PLON, PLEV)) |
---|
342 | ALLOCATE(Wet3D_ASNH4M(PLON, PLEV)) |
---|
343 | ALLOCATE(Wet3D_ASNO3M(PLON, PLEV)) |
---|
344 | ALLOCATE(Wet3D_CSNO3M(PLON, PLEV)) |
---|
345 | ALLOCATE(Wet3D_CINO3M(PLON, PLEV)) |
---|
346 | ALLOCATE( wet3d_dms(PLON,PLEV) ) |
---|
347 | ALLOCATE( wet3d_dmso(PLON,PLEV) ) |
---|
348 | ALLOCATE( ph_hist(PLON,PLEV) ) |
---|
349 | ALLOCATE( ASAPp1a_p(PLON,PLEV) ) |
---|
350 | ALLOCATE( ASAPp2a_p(PLON,PLEV) ) |
---|
351 | ALLOCATE( ASARp1a_p(PLON,PLEV) ) |
---|
352 | ALLOCATE( ASARp2a_p(PLON,PLEV) ) |
---|
353 | ALLOCATE( pom_p_g(PLON,PLEV) ) |
---|
354 | ALLOCATE( asno3m_p_nh3hno3(PLON,PLEV) ) |
---|
355 | ALLOCATE( asnh4m_p_nh3hno3(PLON,PLEV) ) |
---|
356 | ALLOCATE( nh3_p_nh3hno3(PLON,PLEV) ) |
---|
357 | ALLOCATE( hno3_p_nh3hno3(PLON,PLEV) ) |
---|
358 | ALLOCATE( nh3_l_g(PLON,PLEV) ) |
---|
359 | ALLOCATE( nh3_l_a(PLON,PLEV) ) |
---|
360 | ALLOCATE( hono_p_g(PLON,PLEV)) |
---|
361 | ALLOCATE( hono_p_a(PLON,PLEV)) |
---|
362 | ALLOCATE( hono_l_g(PLON,PLEV)) |
---|
363 | ALLOCATE( hono_l_a(PLON,PLEV)) |
---|
364 | ALLOCATE( cino3_p_a(PLON,PLEV) ) |
---|
365 | ALLOCATE( csno3_p_a1(PLON,PLEV) ) |
---|
366 | ALLOCATE( csno3_p_a2(PLON,PLEV) ) |
---|
367 | ALLOCATE( wet3d_nh3(PLON,PLEV) ) |
---|
368 | ALLOCATE( no_daytime(PLON,PLEV) ) |
---|
369 | ALLOCATE( day_cnt(PLON,PLEV) ) |
---|
370 | ALLOCATE( o3_inca(PLON,PLEV) ) |
---|
371 | ALLOCATE( h2o_inca(PLON,PLEV) ) |
---|
372 | ALLOCATE( h2oc(PLON,PLEV) ) |
---|
373 | ALLOCATE( h2o(PLON,PLEV) ) |
---|
374 | ALLOCATE( ch4_inca(PLON,PLEV) ) |
---|
375 | ALLOCATE( n2o_inca(PLON,PLEV) ) |
---|
376 | ALLOCATE( cfc11_inca(PLON,PLEV) ) |
---|
377 | ALLOCATE( cfc12_inca(PLON,PLEV) ) |
---|
378 | ALLOCATE( ch4_inca_2d(PLON,3*PLEV) ) |
---|
379 | ALLOCATE( n2o_inca_2d(PLON,3*PLEV) ) |
---|
380 | ALLOCATE( cfc11_inca_2d(PLON,3*PLEV) ) |
---|
381 | ALLOCATE( cfc12_inca_2d(PLON,3*PLEV) ) |
---|
382 | |
---|
383 | ALLOCATE( asso4m_p_so2oh_col(PLON) ) |
---|
384 | ALLOCATE( asso4m_p_so2o3_col(PLON) ) |
---|
385 | ALLOCATE( asso4m_p_so2h2o2_col(PLON) ) |
---|
386 | ALLOCATE( ASAP_p_col(PLON) ) |
---|
387 | ALLOCATE( ASAR_p_col(PLON) ) |
---|
388 | |
---|
389 | # if GRPCNT != 0 |
---|
390 | nas(:,:,:) = 1.e-40 |
---|
391 | # endif |
---|
392 | # if NCOL != 0 |
---|
393 | o3_col(:) = 0. |
---|
394 | co_col(:) = 0. |
---|
395 | so2_col(:) = 0. |
---|
396 | oh_col(:) = 0. |
---|
397 | ch4_col(:) = 0. |
---|
398 | no2_col(:) = 0. |
---|
399 | ch2o_col(:) = 0. |
---|
400 | hno2_col(:) = 0. |
---|
401 | #endif |
---|
402 | prod_light_col(:) = 0. |
---|
403 | o3_st_flx(:) = 0. |
---|
404 | o3_prod(:,:) = 0. |
---|
405 | o3_loss(:,:) = 0. |
---|
406 | dry_hno3(:) = 0. |
---|
407 | dry_hono(:) = 0. |
---|
408 | dry_noy(:) = 0. |
---|
409 | hno3_p_g(:,:)= 0. |
---|
410 | hno3_p_a(:,:)= 0. |
---|
411 | hno3_l_g(:,:)= 0. |
---|
412 | hno3_l_a(:,:)= 0. |
---|
413 | wet3d_hno3(:,:)= 0. |
---|
414 | wet3d_hono(:,:)= 0. |
---|
415 | wet3d_noy(:,:) = 0. |
---|
416 | wet3d_h2o2(:,:)= 0. |
---|
417 | wetloss(:,:,:) = 0. |
---|
418 | # if NFS != 0 |
---|
419 | invariants(:,:,:) = 0. |
---|
420 | # endif |
---|
421 | # if HETCNT != 0 |
---|
422 | hrates(:,:,:) = 0. |
---|
423 | hrates_cv(:,:,:) = 0. |
---|
424 | #endif |
---|
425 | co2_basprod(:,:) = 0. |
---|
426 | co2_nmhcprod(:,:) = 0. |
---|
427 | co2_radicalprod(:,:) = 0. |
---|
428 | hno3_prod(:,:) = 0. |
---|
429 | hno3_loss(:,:) = 0. |
---|
430 | co_prod(:,:) = 0. |
---|
431 | co_loss(:,:) = 0. |
---|
432 | ch4_loss(:,:) = 0. |
---|
433 | n2o_loss(:,:) = 0. |
---|
434 | nh3_col(:) = 0. |
---|
435 | dry_nh3(:) = 0. |
---|
436 | so2_p_h2soh(:,:) = 0. |
---|
437 | so2_p_dmsoh(:,:) = 0. |
---|
438 | so2_p_dmsno3(:,:) = 0. |
---|
439 | so2_p_dmsooh(:,:) = 0. |
---|
440 | asmsam_p_dmsooh(:,:) = 0. |
---|
441 | dmso_p_dmsoh(:,:) = 0. |
---|
442 | asso4m_p_so2oh(:,:) = 0. |
---|
443 | asso4m_p_so2o3(:,:) = 0. |
---|
444 | asso4m_p_so2h2o2(:,:) = 0. |
---|
445 | wet3d_so2(:,:) = 0. |
---|
446 | wet3d_dms(:,:) = 0. |
---|
447 | wet3d_dmso(:,:) = 0. |
---|
448 | ph_hist(:,:) = 0. |
---|
449 | Wet3D_ASSO4M = 0. |
---|
450 | Wet3D_ASNH4M = 0. |
---|
451 | Wet3D_ASNO3M = 0. |
---|
452 | Wet3D_CSNO3M = 0. |
---|
453 | Wet3D_CINO3M = 0. |
---|
454 | ASAPp1a_p(:,:) = 0. |
---|
455 | ASAPp2a_p(:,:) = 0. |
---|
456 | ASARp1a_p(:,:) = 0. |
---|
457 | ASARp2a_p(:,:) = 0. |
---|
458 | pom_p_g(:,:) = 0. |
---|
459 | asno3m_p_nh3hno3(:,:) = 0. |
---|
460 | asnh4m_p_nh3hno3(:,:) = 0. |
---|
461 | hno3_p_nh3hno3(:,:) = 0. |
---|
462 | nh3_p_nh3hno3(:,:) = 0. |
---|
463 | nh3_l_g(:,:) = 0. |
---|
464 | nh3_l_a(:,:) = 0. |
---|
465 | hono_p_g(:,:) = 0. |
---|
466 | hono_p_a(:,:) = 0. |
---|
467 | hono_l_g(:,:) = 0. |
---|
468 | hono_l_a(:,:) = 0. |
---|
469 | cino3_p_a(:,:) = 0. |
---|
470 | csno3_p_a1(:,:) = 0. |
---|
471 | csno3_p_a2(:,:) = 0. |
---|
472 | wet3d_nh3(:,:) = 0. |
---|
473 | no_daytime(:,:) = 0. |
---|
474 | day_cnt(:,:) = 0. |
---|
475 | |
---|
476 | o3l_col(:) = 0. |
---|
477 | o3tot_col(:) = 0. |
---|
478 | h2oc(:,:) = 0. |
---|
479 | h2o(:,:) = 0. |
---|
480 | extflx = 0. |
---|
481 | extfrc = 0. |
---|
482 | extfrc_col = 0. |
---|
483 | |
---|
484 | asso4m_p_so2oh_col(:) = 0. |
---|
485 | asso4m_p_so2o3_col(:) = 0. |
---|
486 | asso4m_p_so2h2o2_col(:) = 0. |
---|
487 | ASAP_p_col(:) = 0. |
---|
488 | ASAR_p_col(:) = 0. |
---|
489 | |
---|
490 | END SUBROUTINE INIT_CHEM_MODS |
---|
491 | |
---|
492 | END MODULE CHEM_MODS |
---|
493 | |
---|
494 | |
---|
495 | |
---|
496 | |
---|
497 | |
---|
498 | |
---|