source: CONFIG/publications/ICOLMDZORINCA_CO2_Transport_GMD_2023/INCA/src/INCA_MOD/chem_mod.F90 @ 6610

Last change on this file since 6610 was 6610, checked in by acosce, 10 months ago

INCA used for ICOLMDZORINCA_CO2_Transport_GMD_2023

File size: 18.1 KB
Line 
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
56MODULE 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
270CONTAINS
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
492END MODULE CHEM_MODS
493
494
495
496
497
498
Note: See TracBrowser for help on using the repository browser.