Source code for pykpp.funcs.mcm
__all__ = ['MCMJ']
from warnings import warn
from pykpp.tuv.tuv5pt0 import TUV_J
[docs]def MCMJ(idx, THETA):
"""
Parameters:
idx - index from MCM export (v3.3.1)
THETA - zenith angle in degrees
Returns:
photolysis frequency (s**-1) from TUV_J
for closest surrogate.
"""
if idx == 1:
"""
MCM
1 = O3 -> O(1D) +O2
TUV v5.0
2 = O3 -> O2 + O(1D)
"""
return TUV_J(2, THETA)
elif idx == 2:
"""
MCM
2 = O3 - O(3P) +O2
TUV v5.0
3 = O3 -> O2 + O(3P)
"""
return TUV_J(3, THETA)
elif idx == 3:
"""
MCM
3 = H2O2 -> OH + OH
TUV v5.0
5 = H2O2 -> 2 OH
"""
return TUV_J(5, THETA)
elif idx == 4:
"""
MCM
4 = NO2 -> NO + O(3P)
TUV v5.0
6 = NO2 -> NO + O(3P)
"""
return TUV_J(6, THETA)
elif idx == 5:
"""
MCM
5 = NO3 -> NO + O2
TUV v5.0
7 = NO3 -> NO + O2
"""
return TUV_J(7, THETA)
elif idx == 6:
"""
MCM
6 = NO3 -> NO2 + O(3P)
TUV v5.0
8 = NO3 -> NO2 + O(3P)
"""
return TUV_J(8, THETA)
elif idx == 7:
"""
MCM
7 = HONO -> NO + OH
TUV v5.0
12 = HNO2 -> OH + NO
"""
return TUV_J(12, THETA)
elif idx == 8:
"""
MCM
8 = HNO3 -> NO2 + OH
TUV v5.0
13 = HNO3 -> OH + NO2
"""
return TUV_J(13, THETA)
elif idx == 11:
"""
MCM
11 = HCHO -> H + HCO
TUV v5.0
17 = CH2O -> H + HCO
"""
return TUV_J(17, THETA)
elif idx == 12:
"""
MCM
12 = HCHO -> H2 + CO
TUV v5.0
18 = CH2O -> H2 + CO
"""
return TUV_J(18, THETA)
elif idx == 13:
"""
MCM
13 = CH3CHO -> CH3 + HCO
TUV v5.0
19 = CH3CHO -> CH3 + HCO
20 = CH3CHO -> CH4 + CO
21 = CH3CHO -> CH3CO + H
Notes: Assuming the MCM uses same total QY with only one product set.
"""
return TUV_J(19, THETA)+TUV_J(20, THETA)+TUV_J(21, THETA)
elif idx == 14:
"""
MCM
14 = C2H5CHO -> C2H5 + HCO
TUV v5.0
22 = C2H5CHO -> C2H5 + HCO
"""
return TUV_J(22, THETA)
elif idx == 15:
"""
MCM
15 = C3H7CHO -> n-C3H7 + HCO (QY: 0.21)
16 = C3H7CHO -> C2H4 + CH3CHO (QY: 0.1)
TUV v5.0
22 = C2H5CHO -> C2H5 + HCO
Notes: Using C3 aldehyde as a surrogate.
"""
return .667*TUV_J(22, THETA)
elif idx == 16:
"""
MCM
15 = C3H7CHO -> n-C3H7 + HCO (QY: 0.21)
16 = C3H7CHO -> C2H4 + CH3CHO (QY: 0.1)
TUV v5.0
22 = C2H5CHO -> C2H5 + HCO
Notes: Using C3 aldehyde as a surrogate.
"""
return .333*TUV_J(22, THETA)
elif idx == 17:
"""
MCM
17 = IPRCHO -> n-C4H9 + HCO
TUV v5.0
22 = C2H5CHO -> C2H5 + HCO
Notes: Using C3 aldehyde as a surrogate.
"""
return TUV_J(22, THETA)
elif idx == 18:
"""
MCM
18 = MACR -> CH2=CCH3 + HCO (QY = 1.9e-3)
19 = MACR -> CH2=C(CH3)CO + H (QY = 1.9e-3)
TUV v5.0
25 = CH2=C(CH3)CHO -> Products
Notes: Assuming equal distribution among QY channels.
"""
return .5*TUV_J(25, THETA)
elif idx == 19:
"""
MCM
18 = MACR -> CH2=CCH3 + HCO (QY = 1.9e-3)
19 = MACR -> CH2=C(CH3)CO + H (QY = 1.9e-3)
TUV v5.0
25 = CH2=C(CH3)CHO -> Products
Notes: Assuming equal distribution among QY channels.
"""
return .5*TUV_J(25, THETA)
elif idx == 20:
"""
MCM
20 = C5HPALD1 -> CH3C(CHO)=CHCH2O + OH
TUV v5.0
25 = CH2=C(CH3)CHO -> Products
Notes: This compound cleaves at the peroxide, so using CH3OOH as a
surrogate.
"""
return TUV_J(31, THETA)
elif idx == 21:
"""
MCM
21 = CH3COCH3 -> CH3CO + CH3
TUV v5.0
26 = CH3COCH3 -> CH3CO + CH3
"""
return TUV_J(26, THETA)
elif idx == 22:
"""
MCM
22 = MEK -> CH3CO + C2H5
TUV v5.0
28 = CH3COCH2CH3 -> CH3CO + CH2CH3
"""
return TUV_J(28, THETA)
elif idx == 23:
"""
MCM
23 = MVK -> CH3CH=CH2 + CO
24 = MVK -> CH3CO + CH2=CH
TUV v5.0
27 = CH3COCHCH2 -> Products
Note: Assuming equal split.
"""
return .5*TUV_J(27, THETA)
elif idx == 24:
"""
MCM
23 = MVK -> CH3CH=CH2 + CO
24 = MVK -> CH3CO + CH2=CH
TUV v5.0
27 = CH3COCHCH2 -> Products
Note: Assuming equal split.
"""
return .5*TUV_J(27, THETA)
elif idx == 31:
"""
MCM
31 = GLYOX -> CO + CO + H2
TUV v5.0
unavailable for this channel
"""
return 0.
elif idx == 32:
"""
MCM
32 = GLYOX -> HCHO + CO
TUV v5.0
45 = CHOCHO -> CH2O + CO
"""
return TUV_J(45, THETA)
elif idx == 33:
"""
MCM
33 = GLYOX -> HCO + HCO
TUV v5.0
44 = CHOCHO -> HCO + HCO
"""
return TUV_J(44, THETA)
elif idx == 34:
"""
MCM
34 = MGLYOX -> CH3CO + HCO
TUV v5.0
46 = CH3COCHO -> CH3CO + HCO
"""
return TUV_J(46, THETA)
elif idx == 35:
"""
MCM
35 = BIACET -> CH3CO + CH3CO
TUV v5.0
47 = CH3COCOCH3 -> Products
"""
return TUV_J(47, THETA)
elif idx == 41:
"""
MCM
41 = CH3OOH -> CH3O + OH
TUV v5.0
31 = CH3OOH -> CH3O + OH
"""
return TUV_J(31, THETA)
elif idx == 51:
"""
MCM
51 = CH3NO3 -> CH3O + NO2
TUV v5.0
34 = CH3ONO2 -> CH3O + NO2
"""
return TUV_J(34, THETA)
elif idx == 52:
"""
MCM
52 = C2H5NO3 -> C2H5O + NO2
TUV v5.0
35 = CH3CH2ONO2 -> CH3CH2O + NO2
"""
return TUV_J(35, THETA)
elif idx == 53:
"""
MCM
53 = NC3H7NO3 -> n-C3H7O + NO2
TUV v5.0
35 = CH3CH2ONO2 -> CH3CH2O + NO2
"""
return TUV_J(35, THETA)
elif idx == 54:
"""
MCM
54 = IC3H7NO3 -> CH3C(O.)CH3 + NO2
TUV v5.0
36 = CH3CHONO2CH3 -> CH3CHOCH3 + NO2
"""
return TUV_J(36, THETA)
elif idx == 55:
"""
MCM
55 = TC4H9NO3 -> t-C4H9O + NO2
TUV v5.0
39 = C(CH3)3(ONO2) -> C(CH3)3(O.) + NO2
"""
return TUV_J(39, THETA)
elif idx == 56:
"""
MCM
56 = NOA -> CH3C(O)CH2(O.) + NO2
56 = NOA -> CH3CO + HCHO + NO2
TUV v5.0
38 = CH3COCH2(ONO2) -> CH3COCH2(O.) + NO2
"""
return TUV_J(38, THETA)
elif idx == 57:
"""
57 = existed in v3.1, but has been removed
MCM v3.1
C51NO32CO = PEN2ONE1O + NO2 : J(56) ;
C51NO32CO = C3H7CO3 + HCHO + NO2 : J(57) ;
C52NO31CO = C4CHO2O + NO2 : J(56) ;
C52NO31CO = C3H7CHO + CO + HO2 + NO2 : J(57) ;
NO3CH2CHO = NO2 + HCOCH2O : J(56) ;
NO3CH2CHO = HO2 + CO + HCHO + NO2 : J(57) ;
NOA = CH3CO3 + HCHO + NO2 : J(57) ;
CHOPRNO3 = HO2 + CO + CH3CHO + NO2 : J(57) ;
C51NO324CO = HCHO + CO2C3CO3 + NO2 : J(57) ;
C5NO3CO4OH = HO2CO4C5O + NO2 : J(56) ;
C5NO3CO4OH = IPROPOLO2 + HCHO + CO + NO2 : J(57) ;
C5NO3OAOOH = C5NO3COAO + OH : J(41)+J(56)+J(57) ;
C3NO3COOOH = C3NO3COO + OH : J(41)+J(56)+J(57) ;
"""
warn('mcm TUV has been updated to v3.3.1 and uses J(56) only')
return 0
elif idx == 61:
"""
MCM
61 = existed in v3.1, but has been removed
"""
return 0