source: palm/trunk/UTIL/chemistry/gasphase_preproc/kpp/examples/MCM/mcm_constants.f90 @ 2696

Last change on this file since 2696 was 2696, checked in by kanani, 6 years ago

Merge of branch palm4u into trunk

File size: 10.2 KB
Line 
1MODULE constants
2
3  USE model_Precision, ONLY: dp
4  IMPLICIT NONE
5  PRIVATE dp
6
7  INTEGER, PARAMETER :: mnsp=250, mre=2000
8  INTEGER i
9  ! variables for zenith routine which calculates zenith angle
10  REAL(dp) theta, secx, cosx
11  ! generic reaction rate variables
12  REAL(dp) kro2no, kro2ho2, kapho2, kapno, kro2no3, kno3al, kdec, &
13    krosec, kalkoxy, kalkpxy, kroprim
14  ! variables for calculation of kfpan and kbpan
15  REAL(dp) kfpan, kbpan
16  REAL(dp) kc0, kci, krc, fcc, nc, fc
17  REAL(dp) kd0, kdi, krd, fcd, ncd, fd
18  ! variables for calculation of kmt01
19  REAL(dp) kmt01
20  REAL(dp) k10, k1i, kr1, fc1, nc1, f1
21  ! variables for calculation of kmt02
22  REAL(dp) kmt02
23  REAL(dp) k20, k2i, kr2, fc2, nc2, f2
24  ! variables for calculation of kmt03
25  REAL(dp) kmt03
26  REAL(dp) k30, k3i, kr3, fc3, nc3, f3
27  ! variables for calculation of kmt04
28  REAL(dp) kmt04
29  REAL(dp) k40, k4i, kr4, fc4, nc4, f4
30  ! variables for calculation of kmt05
31  REAL(dp) kmt05
32  ! variables for calculation of kmt06
33  REAL(dp) kmt06
34  ! variables for calculation of kmt07
35  REAL(dp) kmt07
36  REAL(dp) k70, k7i, kr7, fc7, nc7, f7
37  ! variables for calculation of kmt08
38  REAL(dp) kmt08
39  REAL(dp) k80, k8i, kr8, fc8, nc8, f8
40  ! variables for calculation of kmt09
41  REAL(dp) kmt09
42  REAL(dp) k90, k9i, kr9, fc9, nc9, f9
43  ! variables for calculation of kmt10
44  REAL(dp) kmt10
45  REAL(dp) k100, k10i, kr10, fc10, nc10, f10
46  ! variables for calculation of kmt11
47  REAL(dp) kmt11
48  REAL(dp) k1,k2,k3,k4
49  ! variables for calculation of kmt12
50  REAL(dp) kmt12
51  REAL(dp) k0, ki, x, ssign,f
52  REAL(dp) k120, k12i, kr12, fc12, nc12, f12
53  ! variables for calculation of kmt13
54  REAL(dp) kmt13
55  REAL(dp) k130, k13i, kr13, nc13, fc13, f13
56  ! variables for calculation of kmt14
57  REAL(dp) kmt14
58  REAL(dp) k140, k14i, kr14, nc14, fc14, f14
59  ! variables for calculation of kmt15
60  REAL(dp) kmt15
61  REAL(dp) k150, k15i, kr15, fc15, nc15, f15
62  ! variables for calculation of kmt16
63  REAL(dp) kmt16
64  REAL(dp) k160, k16i, kr16, nc16, fc16, f16
65  ! variables for calculation of kmt17
66  REAL(dp) kmt17
67  REAL(dp) k170, k17i, kr17, fc17, nc17, f17
68  ! variables for calculation of kmt17
69  REAL(dp) kmt18
70
71  REAL(dp) kch3o2, k298ch3o2
72 
73  REAL(dp) kp_rooh, kp_ho2, kp_n2o5, kp_no3, kp_all
74 
75  INTEGER k
76
77CONTAINS
78
79  !***************************************************************************
80
81  SUBROUTINE mcm_constants(time, temp, M, N2, O2, RO2, H2O)
82    ! calculates rate constants from arrhenius informtion
83    USE model_Global,  ONLY:LAT, LON, JDAY, SZAS, SVJ_TJ, bs,cs,ds, jfactno2, jfacto1d, &
84         DEP_ROOH, DEP_HO2, DEP_N2O5, DEP_NO3, DEP_ALL
85    REAL(dp) time, temp, M, N2, O2, RO2, H2O, THETA, TIME2, LAT2
86    REAL*8 y,dy,x,tmp(19), tmp2(19),b(19),c(19),d(19)
87    integer i,n,jl
88    INTEGER LK
89
90 
91    ! ************************************************************************
92    ! define generic reaction rates.
93    ! ************************************************************************
94
95    ! constants used in calculation of reaction rates
96    !M  = 2.55E+19
97    N2 = 0.79*M
98    O2 = 0.2095*M
99
100    kp_rooh = DEP_ROOH
101    kp_ho2  = DEP_HO2
102    kp_n2o5 = DEP_N2O5
103    kp_no3  = DEP_NO3
104    kp_all  = DEP_ALL
105
106
107    ! kro2no : ro2      + no      = ro      + no2
108    !        : ro2      + no      = rono2
109    ! mcm v3.2
110    !kro2no    = 2.7d-12*EXP(360.0/temp)
111
112    ! kro2ho2: ro2      + ho2     = rooh    + o2
113    ! mcm protocol v3.2
114    !kro2ho2   = 2.91d-13*EXP(1300.0/temp)
115
116    ! kapho2 : rcoo2    + ho2     = products
117    ! mcm protocol v3.2
118    !kapho2    = 5.20d-13*EXP(980.0/temp)
119
120    ! kapno  : rcoo2    + no      = products
121    ! mcm v3.2
122    !kapno = 7.50d-12*EXP(290.0/temp)
123
124    ! kro2no3: ro2      + no3     = products
125    ! mcm protocol v3.2
126    !kro2no3   = 2.30d-12
127
128    ! kno3al : no3      + rcho    = rcoo2   + hno3
129    ! mcm protocol v3.2
130    !kno3al    = 1.4d-12*EXP(-1860.0/temp)
131
132    ! kdec   : ro                 = products
133    ! mcm protocol v3.2
134    !kdec      = 1.00d+06
135   
136    kalkoxy=6.00d-14*EXP(-550.0/temp)*o2
137    kalkpxy=1.50d-14*EXP(-200.0/temp)*o2
138
139    !kch3o2 = 1.03d-13*EXP(365.0/TEMP)
140    !k298ch3o2 = 3.5d-13
141
142    ! -------------------------------------------------------------------
143    ! complex reactions
144    ! -------------------------------------------------------------------
145
146    ! kfpan kbpan
147    ! formation and decomposition of pan
148    ! iupac 2001 (mcmv3.2)
149    kc0     = 2.70d-28*m*(temp/300.0)**(-7.1)
150    kci     = 1.21d-11*(temp/300.0)**(-0.9)
151    krc     = kc0/kci
152    fcc     = 0.30
153    nc      = 0.75-(1.27*dlog10(fcc))
154    fc      = 10**(dlog10(fcc)/(1+((dlog10(krc))/nc)**2))
155    kfpan   = (kc0*kci)*fc/(kc0+kci)
156
157    kd0     = 4.90d-03*m*EXP(-12100.0/temp)
158    kdi     = 5.40d+16*EXP(-13830.0/temp)
159    krd     = kd0/kdi
160    fcd     = 0.30
161    ncd     = 0.75-(1.27*dlog10(fcd))
162    fd      = 10**(dlog10(fcd)/(1+((dlog10(krd))/ncd)**2))
163    kbpan   = (kd0*kdi)*fd/(kd0+kdi)
164
165    ! kmt01  : o        + no      = no2
166    ! iupac 2001 (mcmv3.2)
167    k10     = 1.00d-31*m*(temp/300.0)**(-1.6)
168
169    k1i     = 3.00d-11*(temp/300.0)**(0.3)
170    kr1     = k10/k1i
171    fc1     = 0.85
172    nc1     = 0.75-(1.27*dlog10(fc1))
173    f1      = 10**(dlog10(fc1)/(1+((dlog10(kr1)/nc1))**2))
174    kmt01   = (k10*k1i)*f1/(k10+k1i)
175
176    ! kmt02  : o        + no2     = no3
177    ! iupac 2001 (mcmv3.2)
178    k20     = 1.30d-31*m*(temp/300.0)**(-1.5)
179    k2i     = 2.30d-11*(temp/300.0)**(0.24)
180    kr2     = k20/k2i
181    fc2     = 0.6
182    nc2     = 0.75-(1.27*dlog10(fc2))
183    f2      = 10**(dlog10(fc2)/(1+((dlog10(kr2)/nc2))**2))
184    kmt02   = (k20*k2i)*f2/(k20+k2i)
185
186    ! kmt03  : no2      + no3     = n2o5
187    ! iupac 2006, mcmv3.2
188    k30     = 3.60d-30*m*(temp/300.0)**(-4.1)
189    k3i     = 1.90d-12*(temp/300.0)**(0.2)
190    kr3     = k30/k3i
191    fc3     = 0.35
192    nc3     = 0.75-(1.27*dlog10(fc3))
193    f3      = 10**(dlog10(fc3)/(1+((dlog10(kr3)/nc3))**2))
194    kmt03   = (k30*k3i)*f3/(k30+k3i)
195
196    ! kmt04  : n2o5               = no2     + no3
197    ! iupac 2006, mcmv3.2
198    k40     = 1.30d-03*m*(temp/300.0)**(-3.5)*EXP(-11000.0/temp)
199    k4i     = 9.70d+14*(temp/300.0)**(0.1)*EXP(-11080.0/temp)
200    kr4     = k40/k4i
201    fc4     = 0.35
202    nc4     = 0.75-(1.27*dlog10(fc4))
203    f4      = 10**(dlog10(fc4)/(1+((dlog10(kr4)/nc4))**2))
204    kmt04   = (k40*k4i)*f4/(k40+k4i)
205
206    ! kmt05  : oh       + co(+o2) = ho2     + co2
207    ! iupac 2006
208    kmt05  = (1 + (m/4.2d19))
209
210    ! kmt06  : ho2      + ho2     = h2o2    + o2
211    ! water enhancement factor
212    ! iupac 1992
213
214    kmt06  = 1 + (1.40d-21*EXP(2200.0/temp)*h2o)
215
216    ! kmt06  = 1 + (2.00d-25*EXP(4670.0/temp)*h2o)
217    ! S+R 2005 values
218
219    ! kmt07  : oh       + no      = hono
220
221    ! iupac 2006, mcmv3.2
222    k70     = 7.40d-31*m*(temp/300.0)**(-2.4)
223    k7i     = 3.30d-11*(temp/300.0)**(-0.3)
224    kr7     = k70/k7i
225    fc7     = EXP(-temp/1420.0)
226    nc7     = 0.75-(1.27*dlog10(fc7))
227    f7      = 10**(dlog10(fc7)/(1+((dlog10(kr7)/nc7))**2))
228    kmt07   = (k70*k7i)*f7/(k70+k7i)
229
230    ! kmt08  : oh       + no2     = hno3
231
232    ! iupac 2006, mcmv3.2
233    k80     = 3.30d-30*m*(temp/300.0)**(-3.0)
234    k8i     = 4.10d-11
235    kr8     = k80/k8i
236    fc8     = 0.4
237    nc8     = 0.75-(1.27*dlog10(fc8))
238    f8      = 10**(dlog10(fc8)/(1+((dlog10(kr8)/nc8))**2))
239    kmt08   = (k80*k8i)*f8/(k80+k8i)
240
241    ! kmt09  : ho2      + no2     = ho2no2
242    ! iupac 1997, mcmv3.2
243
244    k90     = 1.80d-31*m*(temp/300.0)**(-3.2)
245    k9i     = 4.70d-12
246    kr9     = k90/k9i
247    fc9     = 0.6
248    nc9     = 0.75-(1.27*dlog10(fc9))
249    f9      = 10**(dlog10(fc9)/(1+((dlog10(kr9)/nc9))**2))
250    kmt09   = (k90*k9i)*f9/(k90+k9i)
251
252    ! kmt10  : ho2no2             = ho2     + no2
253    ! iupac 1997, mcmv3.2
254
255    k100     = 4.10d-05*m*EXP(-10650.0/temp)
256    k10i     = 4.80d+15*EXP(-11170.0/temp)
257    kr10     = k100/k10i
258    fc10     = 0.6
259    nc10     = 0.75-(1.27*dlog10(fc10))
260    f10      = 10**(dlog10(fc10)/(1+((dlog10(kr10)/nc10))**2))
261    kmt10    = (k100*k10i)*f10/(k100+k10i)
262
263    ! kmt11  : oh       + hno3    = h2o     + no3
264    ! iupac 2006, mcmv3.2
265
266    k1     = 2.40d-14*EXP(460.0/temp)
267    k3     = 6.50d-34*EXP(1335.0/temp)
268    k4     = 2.70d-17*EXP(2199.0/temp)
269    k2     = (k3*m)/(1+(k3*m/k4))
270    kmt11  = k1 + k2
271
272    ! kmt12 iupac 2006, mcmv3.2
273
274    k120 = 4.50d-31*((temp/300.0)**(-3.9))*m
275    k12i = 1.30d-12*((temp/300.0)**(-0.7))
276    kr12 = k120/k12i
277    fc12 = 0.525
278    nc12 = 0.75-(1.27*dlog10(fc12))
279    f12  = 10**(dlog10(fc12)/(1.+((dlog10(kr12)/nc12))**2))
280    kmt12    = (k120*k12i)*f12/(k120+k12i)
281
282    ! kmt13  : ch3o2    + no2     = ch3o2no2
283    ! iupac 2006
284
285    k130     = 2.50d-30*((temp/300.0)**(-5.5))*m
286    k13i     = 1.80d-11
287    kr13     = k130/k13i
288    fc13     = 0.36
289    nc13     = 0.75-(1.27*dlog10(fc13))
290    f13      = 10**(dlog10(fc13)/(1+((dlog10(kr13)/nc13))**2))
291    kmt13    = (k130*k13i)*f13/(k130+k13i)
292
293    ! kmt14  : ch3o2no2           = ch3o2   + no2
294    ! iupac 2006, mcmv3.2
295
296    k140     = 9.00d-05*EXP(-9690.0/temp)*m
297    k14i     = 1.10d+16*EXP(-10560.0/temp)
298    kr14     = k140/k14i
299    fc14     = 0.4
300    nc14     = 0.75-(1.27*dlog10(fc14))
301    f14      = 10**(dlog10(fc14)/(1+((dlog10(kr14)/nc14))**2))
302    kmt14    = (k140*k14i)*f14/(k140+k14i)
303
304    ! kmt15 iupac 2006, mcmv3.2
305
306    k150 = 8.60d-29*((temp/300.0)**(-3.1))*m
307    k15i = 9.00d-12*((temp/300.0)**(-0.85))
308    kr15 = k150/k15i
309    fc15 = 0.48
310    nc15 = 0.75-(1.27*dlog10(fc15))
311    f15  = 10**(dlog10(fc15)/(1+((dlog10(kr15)/nc15))**2))
312    kmt15 = (k150*k15i)*f15/(k150+k15i)
313
314    ! kmt16  :  oh  +  c3h6
315    ! iupac 2006
316
317    k160     = 8.00d-27*((temp/300.0)**(-3.5))*m
318    k16i     = 3.00d-11*((temp/300.0)**(-1.0))
319    kr16     = k160/k16i
320    fc16     = 0.5
321    nc16     = 0.75-(1.27*dlog10(fc16))
322    f16      = 10**(dlog10(fc16)/(1+((dlog10(kr16)/nc16))**2))
323    kmt16    = (k160*k16i)*f16/(k160+k16i)
324
325    ! kmt17 iupac 2006
326
327    k170 = 5.00d-30*((temp/300.0)**(-1.5))*m
328    k17i = 1.00d-12
329    kr17 = k170/k17i
330    fc17 = (0.17*EXP(-51./temp))+EXP(-temp/204.)
331    nc17 = 0.75-(1.27*dlog10(fc17))
332    f17  = 10**(dlog10(fc17)/(1+((dlog10(kr17)/nc17))**2))
333    kmt17 = (k170*k17i)*f17/(k170+k17i)
334
335    ! kmt18 2011 oh + dms
336
337    !kmt18=(9.5d-39*O2*EXP(5270./TEMP))/(1+7.5d-29*O2*exp(5610./TEMP))
338
339    !       mcm v3.2
340
341    !kroprim  = 2.50d-14*EXP(-300.0/temp)
342    !krosec   = 2.50d-14*EXP(-300.0/temp)
343
344 
345  END SUBROUTINE mcm_constants
346
347  !***************************************************************************
348
349     
350END MODULE constants
Note: See TracBrowser for help on using the repository browser.