Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / chem / module_wave_data.F
blob8178f4428110b4ea0841bc854122cf738083ed31
3     MODULE module_wave_data
5       implicit none
7       integer, parameter :: dp = selected_real_kind(14,300)
9 !-------------------------------------------------------
10 !     public interfaces
11 !-------------------------------------------------------
12       public :: r01, r04, r44, r08, r06, r10, r11, r14, r15, r17, r18, &
13                 wave_data_inti, xs_mvk, xs_macr
15 !-------------------------------------------------------
16 !     private interfaces
17 !-------------------------------------------------------
18       private :: r44_inti, r08_inti
20 !-------------------------------------------------------
21 !     public variables
22 !-------------------------------------------------------
23       integer, public, parameter :: nw = 18
24 !      integer, public, parameter :: nj = 56
25 ! species table extended
26       integer, public, parameter :: nj = 58
27 !     integer, public, parameter :: tuv_jmax = 28
28 !      integer, public, parameter :: tuv_jmax = 30
29 ! species table extended
30       integer, public, parameter :: tuv_jmax = 58
32       real(dp), public :: sflx(nw), wl(nw), wc(nw), wu(nw), deltaw(nw)
33       real(dp), public :: xso3(nw), s226(nw), s263(nw), s298(nw)
34       real(dp), public :: c20(5,tuv_jmax), c40(5,tuv_jmax), c60(5,tuv_jmax), c80(5,tuv_jmax)
36       real(dp), public, allocatable :: sq(:,:,:)
38 !-------------------------------------------------------
39 !     private variables
40 !-------------------------------------------------------
41       real(dp), private :: r01g1(nw), r01g2(nw), r01g3(nw), r01g4(nw)
42       real(dp), private :: r04g(nw) 
43       real(dp), private :: r08g(nw) 
44       real(dp), private :: r06g1(nw), r06g2(nw) 
45       real(dp), private :: r10g1(nw), r10g2(nw), r10g3(nw), r10g4(nw), r10g5(nw)
46       real(dp), private :: r11g(nw), r11g1(nw), r11g2(nw), r11g3(nw), r11g4(nw)
47       real(dp), private :: r14g(nw), r14g1(nw), r14g2(nw)
48       real(dp), private :: r15g(nw), r15g1(nw), r15g2(nw), r15g3(nw)
49       real(dp), private :: r17g(nw), r17g1(nw)
50       real(dp), private :: r18g(nw), r18g2(nw)
52       real(dp), private :: sjref(nw,nj)
54       real(dp), private :: acrolein_xs(nw)
56       real(dp), private, allocatable :: a(:), b(:)
57       real(dp), private, allocatable :: suma(:), sumb(:)
59       integer, private :: ii, kk
61 !-------------------------------------------------------
62 ! NOTE wavelength
63 !-------------------------------------------------------
64       data (wl(ii),ii=1,18)/  &
65             0.1786E+03_dp, 0.1800E+03_dp, 0.1830E+03_dp, 0.1870E+03_dp, 0.1920E+03_dp,  &
66             0.1980E+03_dp, 0.2050E+03_dp, 0.2130E+03_dp, 0.2220E+03_dp, 0.2410E+03_dp,  &
67             0.2899E+03_dp, 0.3055E+03_dp, 0.3135E+03_dp, 0.3375E+03_dp, 0.4200E+03_dp,  &
68             0.4750E+03_dp, 0.7290E+03_dp, 0.7436E+03_dp /
70       data (wc(ii),ii=1,17)/  &
71             0.1793E+03_dp, 0.1815E+03_dp, 0.1850E+03_dp, 0.1895E+03_dp, 0.1950E+03_dp,  &
72             0.2015E+03_dp, 0.2090E+03_dp, 0.2175E+03_dp, 0.2265E+03_dp, 0.2655E+03_dp,  &
73             0.2977E+03_dp, 0.3095E+03_dp, 0.3255E+03_dp, 0.3788E+03_dp, 0.4475E+03_dp,  &
74             0.6020E+03_dp, 0.7363E+03_dp /
76       data (wu(ii),ii=1,17)/  &
77             0.1800E+03_dp, 0.1830E+03_dp, 0.1870E+03_dp, 0.1920E+03_dp, 0.1980E+03_dp,  &
78             0.2050E+03_dp, 0.2130E+03_dp, 0.2220E+03_dp, 0.2310E+03_dp, 0.2899E+03_dp,  &
79             0.3055E+03_dp, 0.3135E+03_dp, 0.3375E+03_dp, 0.4200E+03_dp, 0.4750E+03_dp,  &
80             0.7290E+03_dp, 0.7436E+03_dp /
82       data (deltaw(ii),ii=1,17)/  &
83             0.1265E+15_dp, 0.2744E+15_dp, 0.3729E+15_dp, 0.4774E+15_dp, 0.5896E+15_dp,  &
84             0.7108E+15_dp, 0.8425E+15_dp, 0.9864E+15_dp, 0.1027E+16_dp, 0.6541E+16_dp,  &
85             0.2340E+16_dp, 0.1248E+16_dp, 0.3936E+16_dp, 0.1575E+17_dp, 0.1240E+17_dp,  &
86             0.7705E+17_dp, 0.5417E+16_dp /
88 !-------------------------------------------------------
89 ! NOTE top solar flux (1-wl,2-flux)
90 !-------------------------------------------------------
91       data (sflx(ii),ii=1,17)/  &
92             0.1628E-02_dp, 0.2184E-02_dp, 0.2459E-02_dp, 0.3736E-02_dp, 0.5386E-02_dp,  &
93             0.8259E-02_dp, 0.2115E-01_dp, 0.4013E-01_dp, 0.4934E-01_dp, 0.1674E+00_dp,  &
94             0.5534E+00_dp, 0.6459E+00_dp, 0.8579E+00_dp, 0.9751E+00_dp, 0.1878E+01_dp,  &
95             0.1706E+01_dp, 0.1301E+01_dp /
97 !-------------------------------------------------------
98 ! NOTE O3 cross (wl,xso3,s226,s263,s298)
99 !-------------------------------------------------------
100       data (xso3(ii),ii=1,17)/  &
101             0.7858E-18_dp, 0.7516E-18_dp, 0.6632E-18_dp, 0.5325E-18_dp, 0.4089E-18_dp,  &
102             0.3319E-18_dp, 0.4999E-18_dp, 0.1396E-17_dp, 0.5096E-17_dp, 0.7774E-17_dp,  &
103             0.6241E-18_dp, 0.1152E-18_dp, 0.1831E-19_dp, 0.1494E-21_dp, 0.2066E-21_dp,  &
104             0.2476E-20_dp, 0.4732E-21_dp /
106       data (s226(ii),ii=1,17)/  &
107             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
108             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.2299E-18_dp, 0.7880E-17_dp,  &
109             0.5887E-18_dp, 0.1018E-18_dp, 0.1533E-19_dp, 0.8263E-22_dp, 0.0000E+00_dp,  &
110             0.0000E+00_dp, 0.0000E+00_dp /
112       data (s263(ii),ii=1,17)/  &
113             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
114             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.2284E-18_dp, 0.7854E-17_dp,  &
115             0.6065E-18_dp, 0.1079E-18_dp, 0.1704E-19_dp, 0.1115E-21_dp, 0.0000E+00_dp,  &
116             0.0000E+00_dp, 0.0000E+00_dp /
118       data (s298(ii),ii=1,17)/  &
119             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
120             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.2290E-18_dp, 0.7867E-17_dp,  &
121             0.6320E-18_dp, 0.1176E-18_dp, 0.1945E-19_dp, 0.1497E-21_dp, 0.0000E+00_dp,  &
122             0.0000E+00_dp, 0.0000E+00_dp /
124 !-------------------------------------------------------
125 ! NOTE temperature dependence of parameter
126 !-------------------------------------------------------
128 !-------------------------------------------------------
129 ! O3 -> O2 + O(3P)
130 !-------------------------------------------------------
131       data (r01g1(ii),ii=1,17)/  &
132             0.9600E+00, 0.9600E+00, 0.9600E+00, 0.9600E+00, 0.9600E+00,  &
133             0.9600E+00, 0.9600E+00, 0.9600E+00, 0.9600E+00, 0.9600E+00,  &
134             0.9600E+00, 0.2747E+01, 0.1280E+02, 0.1120E+02, 0.1120E+02,  &
135             0.1120E+02, 0.1120E+02 /
137       data (r01g2(ii),ii=1,17)/  &
138             0.5659E+01, 0.5659E+01, 0.5659E+01, 0.5659E+01, 0.5659E+01,  &
139             0.5659E+01, 0.5659E+01, 0.5659E+01, 0.5659E+01, 0.5659E+01,  &
140             0.5746E+01, 0.3976E+03, 0.1769E+04, 0.2065E+04, 0.2065E+04,  &
141             0.2065E+04, 0.2065E+04 /
143       data (r01g3(ii),ii=1,17)/  &
144             0.7266E+03, 0.7147E+03, 0.6899E+03, 0.6698E+03, 0.6460E+03,  &
145             0.6140E+03, 0.5968E+03, 0.5913E+03, 0.5606E+03, 0.5450E+03,  &
146             0.5221E+03, 0.5096E+03, 0.4906E+03, 0.4668E+03, 0.4516E+03,  &
147             0.4326E+03, 0.4158E+03 /
149       data (r01g4(ii),ii=1,17)/  &
150             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
151             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
152             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
153             0.0000E+00, 0.0000E+00 /
155 !-------------------------------------------------------
156 ! N2O5 -> NO3 + NO2
157 !-------------------------------------------------------
158       data (r04g(ii),ii=1,17)/  &
159             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
160             0.6227E-17, 0.6199E-17, 0.3001E-17, 0.1030E-17, 0.2288E-18,  &
161             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
162             0.0000E+00, 0.0000E+00 /
164 !-------------------------------------------------------
165 ! H2O2 -> 2 OH
166 !-------------------------------------------------------
167       data (r08g(ii),ii=1,17)/  &
168             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2614E-18, 0.5668E-18,  &
169             0.4562E-18, 0.3673E-18, 0.2829E-18, 0.1749E-18, 0.4953E-19,  &
170             0.8043E-20, 0.4051E-20, 0.1756E-20, 0.8721E-22, 0.0000E+00,  &
171             0.0000E+00, 0.0000E+00 /
173 !-------------------------------------------------------
174 ! HNO3 -> OH + NO2
175 !-------------------------------------------------------
176       data (r06g1(ii),ii=1,17)/  &
177             0.0000E+00, 0.0000E+00, 0.3924E+03, 0.1386E+04, 0.1011E+04,  &
178             0.4960E+03, 0.1419E+03, 0.2597E+02, 0.5679E+01, 0.1612E+01,  &
179             0.3449E+00, 0.9030E-01, 0.1428E-01, 0.1162E-03, 0.0000E+00,  &
180             0.0000E+00, 0.0000E+00 /
182       data (r06g2(ii),ii=1,17)/  &
183             0.1700E+01, 0.1700E+01, 0.1700E+01, 0.1700E+01, 0.1692E+01,  &
184             0.1691E+01, 0.1919E+01, 0.2160E+01, 0.1902E+01, 0.1524E+01,  &
185             0.2895E+01, 0.4240E+01, 0.7779E+01, 0.9579E+01, 0.9300E+01,  &
186             0.9300E+01, 0.9300E+01 /
188 !-------------------------------------------------------
189 ! HCHO -> H2 + CO
190 !-------------------------------------------------------
191       data (r10g1(ii),ii=1,17)/  &
192             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
193             0.0000E+00, 0.1401E-38, 0.1401E-38, 0.4764E-38, 0.0000E+00,  & !BSINGH(PNNL) - To avoid underflow errors, E-43 and E-44 were changed to E-38
194             0.0000E+00, 0.4764E-38, 0.1401E-38, 0.0000E+00, 0.0000E+00,  & 
195             0.4147E-33, 0.4147E-33 /
197       data (r10g2(ii),ii=1,17)/  &
198             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
199             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2517E-22, 0.9677E-20,  &
200             0.2944E-19, 0.2061E-19, 0.1965E-19, 0.2352E-20, 0.0000E+00,  &
201             0.0000E+00, 0.0000E+00 /
203       data (r10g3(ii),ii=1,17)/  &
204             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
205             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
206             -.6612E-23, 0.3843E-23, -.1605E-22, -.6776E-23, 0.0000E+00,  &
207             0.0000E+00, 0.0000E+00 /
209       data (r10g4(ii),ii=1,17)/  &
210             0.3200E+00, 0.3200E+00, 0.3200E+00, 0.3200E+00, 0.3200E+00,  &
211             0.3200E+00, 0.3200E+00, 0.3200E+00, 0.3200E+00, 0.4116E+00,  &
212             0.7417E+00, 0.7470E+00, 0.4245E+00, 0.2078E-03, 0.0000E+00,  &
213             0.0000E+00, 0.0000E+00 /
215       data (r10g5(ii),ii=1,17)/  &
216             0.4900E+00, 0.4900E+00, 0.4900E+00, 0.4900E+00, 0.4900E+00,  &
217             0.4900E+00, 0.4900E+00, 0.4900E+00, 0.4900E+00, 0.4390E+00,  &
218             0.2662E+00, 0.2596E+00, 0.5374E+00, 0.1096E+00, 0.0000E+00,  &
219             0.0000E+00, 0.0000E+00 /
221 !-------------------------------------------------------
222 ! CH3CHO -> CH3CO + H
223 !-------------------------------------------------------
224       data (r11g(ii),ii=1,17)/  &
225             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
226             0.2360E-21, 0.5041E-21, 0.5357E-21, 0.2195E-20, 0.2829E-19,  &
227             0.4195E-19, 0.2992E-19, 0.1144E-19, 0.1073E-21, 0.0000E+00,  &
228             0.0000E+00, 0.0000E+00 /
230       data (r11g1(ii),ii=1,17)/  &
231             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
232             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2833E+00,  &
233             0.4510E+00, 0.2919E+00, 0.5863E-01, 0.0000E+00, 0.0000E+00,  &
234             0.0000E+00, 0.0000E+00 /
236       data (r11g2(ii),ii=1,17)/  &
237             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
238             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1218E+00,  &
239             0.1668E-02, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
240             0.0000E+00, 0.0000E+00 /
242       data (r11g3(ii),ii=1,17)/  &
243             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
244             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
245             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
246             0.0000E+00, 0.0000E+00 /
248       data (r11g4(ii),ii=1,17)/  &
249             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
250             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
251             0.1528E+01, 0.4668E+01, 0.4616E+01, 0.0000E+00, 0.0000E+00,  &
252             0.0000E+00, 0.0000E+00 /
254 !-------------------------------------------------------
255 ! CH3COCHO -> products
256 !-------------------------------------------------------
257       data (r14g(ii),ii=1,17)/  &
258             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
259             0.0000E+00, 0.0000E+00, 0.3316E-20, 0.1626E-19, 0.3444E-19,  &
260             0.3923E-19, 0.2396E-19, 0.9245E-20, 0.3321E-19, 0.6271E-19,  &
261             0.9944E-23, 0.0000E+00 /
263       data (r14g1(ii),ii=1,17)/  &
264             0.0000E+00, 0.2126E+01, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
265             0.1401E-38, 0.0000E+00, 0.1401E-38, 0.2286E+01, 0.0000E+00,  &!BSINGH(PNNL) - To avoid underflow errors, E-43 and E-44 were changed to E-38
266             0.4204E-38, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2127E+01,  &
267             0.1067E-07, 0.6409E-09 /
269       data (r14g2(ii),ii=1,17)/  &
270             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
271             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
272             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
273             0.0000E+00, 0.0000E+00 /
275 !-------------------------------------------------------
276 ! CH3COCH3
277 !-------------------------------------------------------
278       data (r15g(ii),ii=1,17)/  &
279             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
280             0.1636E-20, 0.1205E-20, 0.1660E-20, 0.6857E-20, 0.3884E-19,  &
281             0.3123E-19, 0.1487E-19, 0.2983E-20, 0.5364E-23, 0.0000E+00,  &
282             0.0000E+00, 0.0000E+00 /
284       data (r15g1(ii),ii=1,17)/  &
285             0.0000E+00, 0.0000E+00, 0.8408E-38, 0.8408E-38, 0.0000E+00,  &!BSINGH(PNNL) - To avoid underflow errors, E-43 and E-44 were changed to E-38
286             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
287             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
288             0.0000E+00, 0.0000E+00 /
290       data (r15g2(ii),ii=1,17)/  &
291             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
292             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
293             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
294             0.0000E+00, 0.0000E+00 /
296       data (r15g3(ii),ii=1,17)/  &
297             0.1401E-38, 0.0000E+00, 0.0000E+00, 0.5605E-38, 0.0000E+00,  &!BSINGH(PNNL) - To avoid underflow errors, E-43 and E-44 were changed to E-38
298             0.0000E+00, 0.2278E+01, 0.0000E+00, 0.2285E+01, 0.1401E-38,  &
299             0.0000E+00, 0.2286E+01, 0.0000E+00, 0.2275E+01, 0.2119E+01,  &
300             0.0000E+00, 0.2275E+01 /
302 !-------------------------------------------------------
303 ! CH3ONO2 -> CH3O+NO2
304 !-------------------------------------------------------
305       data (r17g(ii),ii=1,17)/  &
306             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
307             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1739E-19, 0.2671E-19,  &
308             0.4845E-20, 0.1333E-20, 0.2144E-21, 0.8327E-24, 0.0000E+00,  &
309             0.0000E+00, 0.0000E+00 /
311       data (r17g1(ii),ii=1,17)/  &
312             0.3350E-02, 0.3350E-02, 0.3350E-02, 0.3350E-02, 0.3350E-02,  &
313             0.3350E-02, 0.3350E-02, 0.3350E-02, 0.3374E-02, 0.3214E-02,  &
314             0.4746E-02, 0.6248E-02, 0.1142E-01, 0.1610E-01, 0.1610E-01,  &
315             0.1610E-01, 0.1610E-01 /
317 !-------------------------------------------------------
318 ! PAN + hv -> products
319 !-------------------------------------------------------
320       data (r18g(ii),ii=1,17)/  &
321             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1385E-17,  &
322             0.3352E-17, 0.2129E-17, 0.1113E-17, 0.4450E-18, 0.6841E-19,  &
323             0.2748E-20, 0.7224E-21, 0.1850E-21, 0.4999E-23, 0.0000E+00,  &
324             0.0000E+00, 0.0000E+00 /
326       data (r18g2(ii),ii=1,17)/  &
327             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.6283E-03,  &
328             0.1183E-02, 0.7700E-03, 0.1256E-02, 0.2424E-02, 0.4971E-02,  &
329             0.8197E-02, 0.9115E-02, 0.1055E-01, 0.1876E-02, 0.0000E+00,  &
330             0.0000E+00, 0.0000E+00 /
332 !-------------------------------------------------------
333 ! O2 + hv -> O + O
334 !-------------------------------------------------------
335       data (sjref(ii,01),ii=1,17)/  &
336             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
337             0.3473E-23, 0.6642E-23, 0.5002E-23, 0.2480E-23, 0.4111E-25,  &
338             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
339             0.0000E+00, 0.0000E+00 /
341 !-------------------------------------------------------
342 ! O3 -> O2 + O(1D)
343 !-------------------------------------------------------
344       data (sjref(ii,02),ii=1,17)/  &
345             0.6836E-18, 0.6539E-18, 0.5770E-18, 0.4632E-18, 0.3557E-18,  &
346             0.2887E-18, 0.4349E-18, 0.1214E-17, 0.4433E-17, 0.6838E-17,  &
347             0.5868E-18, 0.7389E-19, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
348             0.0000E+00, 0.0000E+00 /
350 !-------------------------------------------------------
351 ! O3 -> O2 + O(3P)
352 !-------------------------------------------------------
353       data (sjref(ii,03),ii=1,17)/  &
354             0.1022E-18, 0.9770E-19, 0.8622E-19, 0.6922E-19, 0.5315E-19,  &
355             0.4314E-19, 0.6499E-19, 0.1814E-18, 0.6625E-18, 0.1022E-17,  &
356             0.3088E-19, 0.3828E-19, 0.1810E-19, 0.1494E-21, 0.2066E-21,  &
357             0.2476E-20, 0.4732E-21 /
359 !-------------------------------------------------------
360 ! NO2 -> NO + O(3P)
361 !-------------------------------------------------------
362       data (sjref(ii,04),ii=1,17)/  &
363             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
364             0.1808E-18, 0.4635E-18, 0.4744E-18, 0.2462E-18, 0.4284E-19,  &
365             0.1225E-18, 0.1815E-18, 0.2798E-18, 0.4150E-18, 0.1583E-22,  &
366             0.0000E+00, 0.0000E+00 /
368 !-------------------------------------------------------
369 ! NO3 -> NO + O2
370 !-------------------------------------------------------
371       data (sjref(ii,05),ii=1,17)/  &
372             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
373             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
374             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
375             0.5840E-18, 0.0000E+00 /
377 !-------------------------------------------------------
378 ! NO3 -> NO2 + O(3P)
379 !-------------------------------------------------------
380       data (sjref(ii,06),ii=1,17)/  &
381             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
382             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
383             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1024E-19, 0.2811E-18,  &
384             0.1085E-17, 0.0000E+00 /
386 !-------------------------------------------------------
387 ! N2O5 -> NO3 + NO + O
388 !-------------------------------------------------------
389       data (sjref(ii,07),ii=1,17)/  &
390             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
391             0.6227E-17, 0.6199E-17, 0.3001E-17, 0.8927E-18, 0.9888E-19,  &
392             0.7750E-21, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
393             0.0000E+00, 0.0000E+00 /
395 !-------------------------------------------------------
396 ! N2O5 -> NO3 + NO2
397 !-------------------------------------------------------
398       data (sjref(ii,08),ii=1,17)/  &
399             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
400             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1369E-18, 0.1299E-18,  &
401             0.3999E-19, 0.1973E-19, 0.7371E-20, 0.0000E+00, 0.0000E+00,  &
402             0.0000E+00, 0.0000E+00 /
404 !-------------------------------------------------------
405 ! N2O + hv -> N2 + O(1
406 !-------------------------------------------------------
407       data (sjref(ii,09),ii=1,17)/  &
408             0.1417E-18, 0.1441E-18, 0.1366E-18, 0.1106E-18, 0.6920E-19,  &
409             0.3004E-19, 0.8198E-20, 0.1335E-20, 0.4760E-22, 0.0000E+00,  &
410             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
411             0.0000E+00, 0.0000E+00 /
413 !-------------------------------------------------------
414 ! HO2 + hv -> OH + O
415 !-------------------------------------------------------
416       data (sjref(ii,10),ii=1,17)/  &
417             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1152E-19, 0.4251E-18,  &
418             0.9602E-18, 0.1522E-17, 0.1892E-17, 0.1668E-17, 0.1727E-18,  &
419             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
420             0.0000E+00, 0.0000E+00 /
422 !-------------------------------------------------------
423 ! H2O2 -> 2 OH
424 !-------------------------------------------------------
425       data (sjref(ii,11),ii=1,17)/  &
426             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2614E-18, 0.5668E-18,  &
427             0.4562E-18, 0.3673E-18, 0.2829E-18, 0.1749E-18, 0.4953E-19,  &
428             0.7495E-20, 0.3722E-20, 0.1378E-20, 0.3749E-21, 0.0000E+00,  &
429             0.0000E+00, 0.0000E+00 /
431 !-------------------------------------------------------
432 ! HNO2 -> OH + NO
433 !-------------------------------------------------------
434       data (sjref(ii,12),ii=1,17)/  &
435             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
436             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
437             0.0000E+00, 0.1047E-19, 0.6659E-19, 0.9813E-19, 0.0000E+00,  &
438             0.0000E+00, 0.0000E+00 /
440 !-------------------------------------------------------
441 ! HNO3 -> OH + NO2
442 !-------------------------------------------------------
443       data (sjref(ii,13),ii=1,17)/  &
444             0.0000E+00, 0.0000E+00, 0.3796E-17, 0.1341E-16, 0.9779E-17,  &
445             0.4798E-17, 0.1367E-17, 0.2489E-18, 0.5471E-19, 0.1564E-19,  &
446             0.3259E-20, 0.8310E-21, 0.1226E-21, 0.9635E-24, 0.0000E+00,  &
447             0.0000E+00, 0.0000E+00 /
449 !-------------------------------------------------------
450 ! HNO4 -> HO2 + NO2
451 !-------------------------------------------------------
452       data (sjref(ii,14),ii=1,17)/  &
453             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.3904E-17, 0.8071E-17,  &
454             0.5075E-17, 0.2702E-17, 0.1419E-17, 0.7767E-18, 0.2486E-18,  &
455             0.2041E-19, 0.5706E-20, 0.1144E-20, 0.0000E+00, 0.0000E+00,  &
456             0.0000E+00, 0.0000E+00 /
458 !-------------------------------------------------------
459 ! HCHO -> H + HCO
460 !-------------------------------------------------------
461       data (sjref(ii,15),ii=1,17)/  &
462             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
463             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.8056E-23, 0.3983E-20,  &
464             0.2183E-19, 0.1541E-19, 0.8306E-20, 0.4813E-24, 0.0000E+00,  &
465             0.0000E+00, 0.0000E+00 /
467 !-------------------------------------------------------
468 ! CH2O -> H2 + CO
469 !-------------------------------------------------------
470       data (sjref(ii,16),ii=1,17)/  &
471             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
472             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1234E-22, 0.4248E-20,  &
473             0.7835E-20, 0.5357E-20, 0.1052E-19, 0.1582E-21, 0.0000E+00,  &
474             0.0000E+00, 0.0000E+00 /
476 !-------------------------------------------------------
477 ! CH3CHO -> CH3 + HCO
478 !-------------------------------------------------------
479       data (sjref(ii,17),ii=1,17)/  &
480             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
481             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.8013E-20,  &
482             0.1853E-19, 0.8492E-20, 0.6520E-21, 0.0000E+00, 0.0000E+00,  &
483             0.0000E+00, 0.0000E+00 /
485 !-------------------------------------------------------
486 ! CH3CHO -> CH4 + CO
487 !-------------------------------------------------------
488       data (sjref(ii,18),ii=1,17)/  &
489             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
490             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.3445E-20,  &
491             0.6997E-22, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
492             0.0000E+00, 0.0000E+00 /
494 !-------------------------------------------------------
495 ! CH3CHO -> CH3CO + H
496 !-------------------------------------------------------
497       data (sjref(ii,19),ii=1,17)/  &
498             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
499             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
500             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
501             0.0000E+00, 0.0000E+00 /
503 !-------------------------------------------------------
504 ! C2H5CHO -> C2H5 + HC
505 !-------------------------------------------------------
506       data (sjref(ii,20),ii=1,17)/  &
507             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
508             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
509             0.3277E-19, 0.2222E-19, 0.3489E-20, 0.1042E-24, 0.0000E+00,  &
510             0.0000E+00, 0.0000E+00 /
512 !-------------------------------------------------------
513 ! CHOCHO -> products
514 !-------------------------------------------------------
515       data (sjref(ii,21),ii=1,17)/  &
516             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
517             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.7555E-21, 0.7623E-20,  &
518             0.1313E-19, 0.1112E-19, 0.3667E-21, 0.5683E-21, 0.1817E-20,  &
519             0.0000E+00, 0.0000E+00 /
521 !-------------------------------------------------------
522 ! CH3COCHO -> products
523 !-------------------------------------------------------
524       data (sjref(ii,22),ii=1,17)/  &
525             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
526             0.0000E+00, 0.0000E+00, 0.1492E-20, 0.7317E-20, 0.1550E-19,  &
527             0.1765E-19, 0.9996E-20, 0.3344E-20, 0.5892E-20, 0.0000E+00,  &
528             0.0000E+00, 0.0000E+00 /
530 !-------------------------------------------------------
531 ! CH3COCH3
532 !-------------------------------------------------------
533       data (sjref(ii,23),ii=1,17)/  &
534             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
535             0.1636E-20, 0.1205E-20, 0.1660E-20, 0.6857E-20, 0.3884E-19,  &
536             0.7735E-20, 0.9000E-21, 0.7830E-22, 0.0000E+00, 0.0000E+00,  &
537             0.0000E+00, 0.0000E+00 /
539 !-------------------------------------------------------
540 ! CH3OOH -> CH3O + OH
541 !-------------------------------------------------------
542       data (sjref(ii,24),ii=1,17)/  &
543             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
544             0.0000E+00, 0.1058E-18, 0.1847E-18, 0.9326E-19, 0.2451E-19,  &
545             0.4842E-20, 0.2490E-20, 0.1101E-20, 0.9321E-22, 0.0000E+00,  &
546             0.0000E+00, 0.0000E+00 /
548 !-------------------------------------------------------
549 ! CH3ONO2 -> CH3O+NO2
550 !-------------------------------------------------------
551       data (sjref(ii,25),ii=1,17)/  &
552             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
553             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1627E-19, 0.2508E-19,  &
554             0.4415E-20, 0.1180E-20, 0.1714E-21, 0.6073E-24, 0.0000E+00,  &
555             0.0000E+00, 0.0000E+00 /
557 !-------------------------------------------------------
558 ! PAN + hv -> products
559 !-------------------------------------------------------
560       data (sjref(ii,26),ii=1,17)/  &
561             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1368E-17,  &
562             0.3275E-17, 0.2097E-17, 0.1086E-17, 0.4244E-18, 0.6206E-19,  &
563             0.2340E-20, 0.6042E-21, 0.1504E-21, 0.4819E-23, 0.0000E+00,  &
564             0.0000E+00, 0.0000E+00 /
566 !-------------------------------------------------------
567 ! ClOO + hv -> Product
568 !-------------------------------------------------------
569       data (sjref(ii,27),ii=1,17)/  &
570             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
571             0.0000E+00, 0.0000E+00, 0.1431E-17, 0.1648E-16, 0.1280E-16,  &
572             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
573             0.0000E+00, 0.0000E+00 /
575 !-------------------------------------------------------
576 ! ClONO2 + hv -> Cl +
577 !-------------------------------------------------------
578       data (sjref(ii,28),ii=1,17)/  &
579             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.6062E-18,  &
580             0.1691E-17, 0.1862E-17, 0.2042E-17, 0.1170E-17, 0.1932E-18,  &
581             0.2182E-19, 0.9468E-20, 0.4360E-20, 0.1328E-20, 0.4907E-22,  &
582             0.0000E+00, 0.0000E+00 /
584 !-------------------------------------------------------
585 ! ClONO2 + hv -> ClO +
586 !-------------------------------------------------------
587       data (sjref(ii,29),ii=1,17)/  &
588             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.4041E-18,  &
589             0.1127E-17, 0.1241E-17, 0.1361E-17, 0.7799E-18, 0.1288E-18,  &
590             0.1455E-19, 0.6034E-20, 0.1653E-20, 0.0000E+00, 0.0000E+00,  &
591             0.0000E+00, 0.0000E+00 /
593 !-------------------------------------------------------
594 ! CH3Cl + hv -> Produc
595 !-------------------------------------------------------
596       data (sjref(ii,30),ii=1,17)/  &
597             0.0000E+00, 0.0000E+00, 0.5782E-19, 0.1421E-18, 0.5267E-19,  &
598             0.1384E-19, 0.2628E-20, 0.1801E-21, 0.0000E+00, 0.0000E+00,  &
599             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
600             0.0000E+00, 0.0000E+00 /
602 !-------------------------------------------------------
603 ! CCl2O + hv -> Produc
604 !-------------------------------------------------------
605       data (sjref(ii,31),ii=1,17)/  &
606             0.0000E+00, 0.0000E+00, 0.1283E-17, 0.1195E-17, 0.5590E-18,  &
607             0.2495E-18, 0.1489E-18, 0.1234E-18, 0.4404E-19, 0.0000E+00,  &
608             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
609             0.0000E+00, 0.0000E+00 /
611 !-------------------------------------------------------
612 ! CCl4 + hv -> Product
613 !-------------------------------------------------------
614       data (sjref(ii,32),ii=1,17)/  &
615             0.8434E-17, 0.6384E-17, 0.3864E-17, 0.1696E-17, 0.7502E-18,  &
616             0.6283E-18, 0.4862E-18, 0.2369E-18, 0.4361E-19, 0.8880E-21,  &
617             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
618             0.0000E+00, 0.0000E+00 /
620 !-------------------------------------------------------
621 ! CClFO + hv -> Produc
622 !-------------------------------------------------------
623       data (sjref(ii,33),ii=1,17)/  &
624             0.0000E+00, 0.0000E+00, 0.3825E-19, 0.1351E-18, 0.1255E-18,  &
625             0.1216E-18, 0.1004E-18, 0.6294E-19, 0.1102E-19, 0.0000E+00,  &
626             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
627             0.0000E+00, 0.0000E+00 /
629 !-------------------------------------------------------
630 ! CF2O + hv -> Product
631 !-------------------------------------------------------
632       data (sjref(ii,34),ii=1,17)/  &
633             0.0000E+00, 0.0000E+00, 0.1339E-19, 0.4267E-19, 0.2636E-19,  &
634             0.1225E-19, 0.4416E-20, 0.1115E-20, 0.9727E-22, 0.0000E+00,  &
635             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
636             0.0000E+00, 0.0000E+00 /
638 ! CF2ClCFCl2 (CFC-113)
639       data (sjref(ii,35),ii=1,17)/  &
640             0.0000E+00, 0.0000E+00, 0.8049E-18, 0.6998E-18, 0.3166E-18,  &
641             0.9827E-19, 0.2275E-19, 0.3931E-20, 0.2737E-21, 0.0000E+00,  &
642             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
643             0.0000E+00, 0.0000E+00 /
645 ! CF2ClCF2Cl (CFC-114)
646       data (sjref(ii,36),ii=1,17)/  &
647             0.2880E-18, 0.2147E-18, 0.1310E-18, 0.6113E-19, 0.2178E-19,  &
648             0.6132E-20, 0.1327E-20, 0.1991E-21, 0.0000E+00, 0.0000E+00,  &
649             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
650             0.0000E+00, 0.0000E+00 /
652 ! CF3CF2Cl (CFC-115) +
653       data (sjref(ii,37),ii=1,17)/  &
654             0.1660E-19, 0.1158E-19, 0.6494E-20, 0.3055E-20, 0.1155E-20,  &
655             0.3346E-21, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
656             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
657             0.0000E+00, 0.0000E+00 /
659 ! CCl3F (CFC-11) + hv
660       data (sjref(ii,38),ii=1,17)/  &
661             0.3100E-17, 0.2925E-17, 0.2465E-17, 0.1838E-17, 0.1100E-17,  &
662             0.5342E-18, 0.1850E-18, 0.4170E-19, 0.4090E-20, 0.3713E-22,  &
663             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
664             0.0000E+00, 0.0000E+00 /
666 ! CCl2F2 (CFC-12) + hv
667       data (sjref(ii,39),ii=1,17)/  &
668             0.1806E-17, 0.1617E-17, 0.1205E-17, 0.6804E-18, 0.2623E-18,  &
669             0.6733E-19, 0.1216E-19, 0.1473E-20, 0.9542E-22, 0.0000E+00,  &
670             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
671             0.0000E+00, 0.0000E+00 /
673 ! CH3CCl3 + hv -> Prod
674       data (sjref(ii,40),ii=1,17)/  &
675             0.0000E+00, 0.0000E+00, 0.1258E-17, 0.2007E-17, 0.1365E-17,  &
676             0.7141E-18, 0.2853E-18, 0.7284E-19, 0.8014E-20, 0.0000E+00,  &
677             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
678             0.0000E+00, 0.0000E+00 /
680 ! CF3CHCl2 (HCFC-123)
681       data (sjref(ii,41),ii=1,17)/  &
682             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2399E-18,  &
683             0.7356E-19, 0.1688E-19, 0.3281E-20, 0.0000E+00, 0.0000E+00,  &
684             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
685             0.0000E+00, 0.0000E+00 /
687 ! CF3CHFCl (HCFC-124)
688       data (sjref(ii,42),ii=1,17)/  &
689             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2450E-20,  &
690             0.7010E-21, 0.1547E-21, 0.3603E-22, 0.0000E+00, 0.0000E+00,  &
691             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
692             0.0000E+00, 0.0000E+00 /
694 ! CH3CFCl2 (HCFC-141b)
695       data (sjref(ii,43),ii=1,17)/  &
696             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2974E-18, 0.4178E-18,  &
697             0.1328E-18, 0.2962E-19, 0.4478E-20, 0.0000E+00, 0.0000E+00,  &
698             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
699             0.0000E+00, 0.0000E+00 /
701 ! CH3CF2Cl (HCFC-142b)
702       data (sjref(ii,44),ii=1,17)/  &
703             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2907E-20,  &
704             0.7364E-21, 0.1479E-21, 0.2526E-22, 0.0000E+00, 0.0000E+00,  &
705             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
706             0.0000E+00, 0.0000E+00 /
708 ! CF3CF2CHCl2 (HCFC-22
709       data (sjref(ii,45),ii=1,17)/  &
710             0.1790E-17, 0.1626E-17, 0.1283E-17, 0.8094E-18, 0.3940E-18,  &
711             0.1395E-18, 0.3959E-19, 0.8927E-20, 0.8714E-21, 0.0000E+00,  &
712             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
713             0.0000E+00, 0.0000E+00 /
715 ! CF2ClCF2CHFCl (HCFC-
716       data (sjref(ii,46),ii=1,17)/  &
717             0.2464E-18, 0.1743E-18, 0.9730E-19, 0.4340E-19, 0.1599E-19,  &
718             0.5669E-20, 0.1816E-20, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
719             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
720             0.0000E+00, 0.0000E+00 /
722 ! CHClF2 (HCFC-22) + h
723       data (sjref(ii,47),ii=1,17)/  &
724             0.2207E-19, 0.1453E-19, 0.7236E-20, 0.2882E-20, 0.9112E-21,  &
725             0.2275E-21, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
726             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
727             0.0000E+00, 0.0000E+00 /
729 ! BrONO2 + hv -> Br +
730       data (sjref(ii,48),ii=1,17)/  &
731             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
732             0.1007E-17, 0.1060E-17, 0.8014E-18, 0.5760E-18, 0.1392E-18,  &
733             0.5338E-19, 0.3872E-19, 0.2723E-19, 0.1113E-19, 0.2644E-20,  &
734             0.5404E-22, 0.0000E+00 /
736 ! BrONO2 + hv -> BrO +
737       data (sjref(ii,49),ii=1,17)/  &
738             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
739             0.2465E-17, 0.2596E-17, 0.1962E-17, 0.1410E-17, 0.3407E-18,  &
740             0.1307E-18, 0.9481E-19, 0.6667E-19, 0.2725E-19, 0.6474E-20,  &
741             0.1323E-21, 0.0000E+00 /
743 ! CH3Br + hv -> Produc
744       data (sjref(ii,50),ii=1,17)/  &
745             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1948E-18, 0.6517E-18,  &
746             0.7879E-18, 0.6941E-18, 0.4525E-18, 0.1482E-18, 0.4843E-20,  &
747             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
748             0.0000E+00, 0.0000E+00 /
750 ! CHBr3
751       data (sjref(ii,51),ii=1,17)/  &
752             0.3990E-17, 0.3990E-17, 0.3990E-17, 0.3912E-17, 0.3645E-17,  &
753             0.4246E-17, 0.4651E-17, 0.5596E-17, 0.4158E-17, 0.8230E-18,  &
754             0.8168E-20, 0.1454E-20, 0.1400E-21, 0.2931E-23, 0.0000E+00,  &
755             0.0000E+00, 0.0000E+00 /
757 ! CF3Br (Halon-1301) +
758       data (sjref(ii,52),ii=1,17)/  &
759             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2792E-19, 0.8983E-19,  &
760             0.1155E-18, 0.1202E-18, 0.8986E-19, 0.2972E-19, 0.8513E-21,  &
761             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
762             0.0000E+00, 0.0000E+00 /
764 ! CF2BrCF2Br (Halon-24
765       data (sjref(ii,53),ii=1,17)/  &
766             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.4481E-18, 0.1200E-17,  &
767             0.1227E-17, 0.1086E-17, 0.7878E-18, 0.3245E-18, 0.1949E-19,  &
768             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
769             0.0000E+00, 0.0000E+00 /
771 ! CF2Br2 (Halon-1202)
772       data (sjref(ii,54),ii=1,17)/  &
773             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.4482E-18, 0.9550E-18,  &
774             0.7511E-18, 0.1054E-17, 0.1957E-17, 0.2161E-17, 0.2699E-18,  &
775             0.5915E-21, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
776             0.0000E+00, 0.0000E+00 /
778 ! CF2BrCl (Halon-1211)
779       data (sjref(ii,55),ii=1,17)/  &
780             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.2109E-18, 0.7667E-18,  &
781             0.1140E-17, 0.1178E-17, 0.9150E-18, 0.3996E-18, 0.3035E-19,  &
782             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
783             0.0000E+00, 0.0000E+00 /
785 ! Cl2 + hv -> Cl + Cl
786       data (sjref(ii,56),ii=1,17)/  &
787             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
788             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.1341E-19,  &
789             0.1068E-18, 0.1806E-18, 0.2395E-18, 0.8432E-19, 0.4492E-20,  &
790             0.0000E+00, 0.0000E+00 /
792 !HOCl + hv -> OH + Cl
793       data (sjref(ii,57),ii=1,17)/  &
794             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
795             0.4436E-19, 0.5807E-19, 0.8483E-19, 0.1532E-18, 0.1040E-18,  &
796             0.5762E-19, 0.5963E-19, 0.4075E-19, 0.8082E-20, 0.0000E+00,  &
797             0.0000E+00, 0.0000E+00 /
799 ! FMCl + hv -> Cl + CO + HO2
800       data (sjref(ii,58),ii=1,17)/  &
801             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
802             0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.3344E-19,  &
803             0.3021E-20, 0.2700E-22, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
804             0.0000E+00, 0.0000E+00 /
805 ! acolein cross sections
806 !     data (acrolein_xs(ii),ii=1,18)/  &
807 !           0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00, 0.0000E+00,  &
808 !           0.0000E+00, 0.0000E+00, 0.0000E+00, 0.7242E-20, 0.6807E-20,  &
809 !           0.2450E-19, 0.3803E-19, 0.5302E-19, 0.1754E-19, 0.0000E+00,  &
810 !           0.0000E+00, 0.0000E+00, 0.0000E+00 /
811 !------------------------------------------------------------------
812 !       ... updated from mz4.5
813 !------------------------------------------------------------------
814       data (acrolein_xs(ii),ii=1,18)/  &
815             0._dp, 0._dp, 0._dp, 0._dp, 0._dp, &
816             0._dp, 0._dp, 0._dp, 3.253e-22_dp, 8.705e-21_dp, &
817             3.255e-20_dp, 4.899e-20_dp, 6.26e-20_dp, 1.852e-20_dp, 0._dp, &
818             0._dp, 0._dp, 0._dp /
820 !-------------------------------------------------------
821 ! correction coef. for zenith=20
822 !-------------------------------------------------------
823 ! extended to 58
824       data ((c20(ii,kk),ii=1,5),kk=1,58)/  &
825             0.7070E+01_dp, 0.3759E+00_dp, -.1308E+01_dp, 0.2779E+00_dp, -.1295E-01_dp,  &
826             0.3696E+02_dp, -.3947E+02_dp, 0.1206E+02_dp, -.1179E+01_dp, 0.3640E-01_dp,  &
827             -.2446E+01_dp, -.1012E+01_dp, 0.2398E+00_dp, -.2085E-01_dp, 0.5971E-03_dp,  &
828             0.1162E+02_dp, 0.4995E+00_dp, -.1370E+00_dp, 0.1473E-01_dp, -.5209E-03_dp,  &
829             -.7467E+02_dp, -.4068E-01_dp, 0.3046E-02_dp, -.3493E-03_dp, 0.1300E-04_dp,  &
830             0.3233E+01_dp, 0.2210E+00_dp, -.9869E-01_dp, 0.1192E-01_dp, -.4533E-03_dp,  &
831             0.1156E+02_dp, -.8101E+01_dp, 0.1430E+01_dp, 0.6346E-01_dp, -.1035E-01_dp,  &
832             0.2245E+02_dp, -.3740E+01_dp, 0.2204E+01_dp, -.2758E+00_dp, 0.1017E-01_dp,  &
833             -.1997E+02_dp, 0.3596E+02_dp, -.1341E+02_dp, 0.1726E+01_dp, -.6627E-01_dp,  &
834             0.2146E+02_dp, -.1454E+02_dp, 0.3728E+01_dp, -.3417E+00_dp, 0.1067E-01_dp,  &
835             -.7225E+01_dp, -.1905E+02_dp, 0.3493E+01_dp, -.2899E+00_dp, 0.8709E-02_dp,  &
836             0.7219E+01_dp, 0.1184E+01_dp, -.3897E+00_dp, 0.4558E-01_dp, -.1691E-02_dp,  &
837             -.2406E+00_dp, -.2155E+01_dp, 0.1012E+01_dp, -.1102E+00_dp, 0.3265E-02_dp,  &
838             0.6289E+01_dp, -.5259E+01_dp, 0.1010E+01_dp, -.9599E-01_dp, 0.2999E-02_dp,  &
839             0.5790E+01_dp, 0.3564E+01_dp, -.9204E+00_dp, 0.7470E-01_dp, -.2067E-02_dp,  &
840             -.7339E+01_dp, 0.8577E+01_dp, -.1439E+01_dp, 0.1715E+00_dp, -.6845E-02_dp,  &
841             0.6873E+01_dp, 0.9925E+01_dp, -.1103E+01_dp, 0.3600E-01_dp, -.4397E-03_dp,  &
842             0.2127E+03_dp, -.1728E+03_dp, 0.3302E+02_dp, -.2579E+01_dp, 0.7060E-01_dp,  &
843             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
844             -.2486E+01_dp, 0.1277E+02_dp, -.2734E+01_dp, 0.2094E+00_dp, -.5546E-02_dp,  &
845             0.1594E+02_dp, 0.2352E+01_dp, -.5208E+00_dp, 0.4645E-01_dp, -.1468E-02_dp,  &
846             -.8191E+01_dp, -.1325E+01_dp, 0.3376E+00_dp, -.3625E-01_dp, 0.1290E-02_dp,  &
847 !             58.88973_dp,   -67.7546_dp,    17.7761_dp,   -2.26103_dp,    0.10354_dp,  &
848             0.1569E+02_dp, -.7515E+01_dp, 0.3110E+01_dp, -.3417E+00_dp, 0.1105E-01_dp,  &
849             0.8295E+01_dp, -.4326E+01_dp, 0.7690E+00_dp, -.5752E-01_dp, 0.1458E-02_dp,  &
850             0.8573E+01_dp, -.6433E+01_dp, 0.1910E+01_dp, -.1765E+00_dp, 0.4821E-02_dp,  &
851             0.5567E+01_dp, -.3415E+01_dp, 0.9974E+00_dp, -.1327E+00_dp, 0.5125E-02_dp,  &
852             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
853             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
854             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
855             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
856             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
857             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
858             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
859             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
860             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
861             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
862             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
863             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
864             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
865             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
866             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
867             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
868             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
869             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
870             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
871             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
872             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
873             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
874             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
875             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
876             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
877             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
878             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
879             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
880             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
881             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
882             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
883             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp /
885 !-------------------------------------------------------
886 ! correction coef. for zenith=40
887 !-------------------------------------------------------
888 ! extended to 58
889       data ((c40(ii,kk),ii=1,5),kk=1,58)/  &
890             -.1895E+00_dp, 0.1173E+02_dp, -.4908E+01_dp, 0.7820E+00_dp, -.3439E-01_dp,  &
891             0.1962E+02_dp, -.2455E+02_dp, 0.9490E+01_dp, -.1049E+01_dp, 0.3501E-01_dp,  &
892             -.3079E+01_dp, -.5048E+00_dp, 0.1277E+00_dp, -.1175E-01_dp, 0.3456E-03_dp,  &
893             0.1153E+02_dp, 0.5407E+00_dp, -.1458E+00_dp, 0.1569E-01_dp, -.5555E-03_dp,  &
894             -.7465E+02_dp, -.7051E-01_dp, 0.8473E-02_dp, -.9057E-03_dp, 0.3180E-04_dp,  &
895             0.3155E+01_dp, 0.3559E+00_dp, -.1534E+00_dp, 0.1835E-01_dp, -.6973E-03_dp,  &
896             0.2650E+02_dp, -.2605E+02_dp, 0.7603E+01_dp, -.5420E+00_dp, 0.7451E-02_dp,  &
897             0.1966E+02_dp, 0.5411E-01_dp, 0.1362E+01_dp, -.2107E+00_dp, 0.8579E-02_dp,  &
898             -.2380E+02_dp, 0.3767E+02_dp, -.1202E+02_dp, 0.1779E+01_dp, -.7717E-01_dp,  &
899             0.2125E+02_dp, -.1242E+02_dp, 0.2822E+01_dp, -.1615E+00_dp, 0.1873E-02_dp,  &
900             -.1070E+02_dp, -.1866E+02_dp, 0.3452E+01_dp, -.2876E+00_dp, 0.8628E-02_dp,  &
901             0.6843E+01_dp, 0.1299E+01_dp, -.4284E+00_dp, 0.5045E-01_dp, -.1890E-02_dp,  &
902             -.1506E+02_dp, 0.1398E+02_dp, -.2476E+01_dp, 0.1543E+00_dp, -.3430E-02_dp,  &
903             0.2068E+01_dp, -.7057E+00_dp, -.1971E+00_dp, 0.9200E-02_dp, -.5000E-05_dp,  &
904             0.5924E+01_dp, 0.4186E+01_dp, -.1217E+01_dp, 0.1055E+00_dp, -.3038E-02_dp,  &
905             -.7911E+01_dp, 0.8992E+01_dp, -.1554E+01_dp, 0.1856E+00_dp, -.7309E-02_dp,  &
906             0.5082E+01_dp, 0.1396E+02_dp, -.2272E+01_dp, 0.1452E+00_dp, -.3790E-02_dp,  &
907             0.1701E+03_dp, -.1574E+03_dp, 0.3097E+02_dp, -.2461E+01_dp, 0.6813E-01_dp,  &
908             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
909             -.9485E+00_dp, 0.1351E+02_dp, -.3240E+01_dp, 0.2661E+00_dp, -.7396E-02_dp,  &
910             0.1571E+02_dp, 0.2718E+01_dp, -.6571E+00_dp, 0.5990E-01_dp, -.1893E-02_dp,  &
911             -.8311E+01_dp, -.1182E+01_dp, 0.3142E+00_dp, -.3576E-01_dp, 0.1336E-02_dp,  &
912 !             59.04684_dp,  -67.68378_dp,   17.67471_dp, -2.24201_dp,      0.10236_dp,  &
913             0.4926E+01_dp, 0.3918E+01_dp, 0.3607E+00_dp, -.1143E+00_dp, 0.4793E-02_dp,  &
914             0.6043E+01_dp, -.2715E+01_dp, 0.3730E+00_dp, -.2205E-01_dp, 0.3954E-03_dp,  &
915             -.6693E-02_dp, 0.1872E+01_dp, -.8570E-01_dp, -.1044E-01_dp, 0.2336E-03_dp,  &
916             0.5017E-01_dp, 0.4719E+01_dp, -.1084E+01_dp, 0.4456E-01_dp, 0.1960E-03_dp,  &
917             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
918             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
919             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
920             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
921             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
922             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
923             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
924             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
925             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
926             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
927             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
928             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
929             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
930             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
931             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
932             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
933             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
934             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
935             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
936             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
937             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
938             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
939             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
940             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
941             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
942             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
943             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
944             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
945             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
946             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
947             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
948             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp /
951 !-------------------------------------------------------
952 ! correction coef. for zenith=60
953 !-------------------------------------------------------
954 ! extended to 58
955       data ((c60(ii,kk),ii=1,5),kk=1,58)/  &
956             -.1638E+02_dp, 0.3958E+02_dp, -.1606E+02_dp, 0.2488E+01_dp, -.1077E+00_dp,  &
957             -.2315E+02_dp, 0.2426E+02_dp, -.2826E+01_dp, -.3649E-03_dp, 0.5939E-02_dp,  &
958             -.3974E+01_dp, 0.3165E+00_dp, -.7318E-01_dp, 0.5292E-02_dp, -.1394E-03_dp,  &
959             0.1136E+02_dp, 0.5802E+00_dp, -.1499E+00_dp, 0.1645E-01_dp, -.5966E-03_dp,  &
960             -.7464E+02_dp, -.1207E+00_dp, 0.1455E-01_dp, -.1564E-02_dp, 0.5550E-04_dp,  &
961             0.2808E+01_dp, 0.6323E+00_dp, -.2726E+00_dp, 0.3265E-01_dp, -.1250E-02_dp,  &
962             0.6710E+02_dp, -.7909E+02_dp, 0.2461E+02_dp, -.2071E+01_dp, 0.4810E-01_dp,  &
963             0.1837E+02_dp, 0.4619E+01_dp, 0.2547E+00_dp, -.1197E+00_dp, 0.6375E-02_dp,  &
964             -.5101E+02_dp, 0.9591E+02_dp, -.3419E+02_dp, 0.5055E+01_dp, -.2158E+00_dp,  &
965             -.4153E+01_dp, 0.2473E+02_dp, -.1137E+02_dp, 0.1819E+01_dp, -.7925E-01_dp,  &
966             -.1660E+02_dp, -.1775E+02_dp, 0.3260E+01_dp, -.2704E+00_dp, 0.8049E-02_dp,  &
967             0.5976E+01_dp, 0.1501E+01_dp, -.4931E+00_dp, 0.5883E-01_dp, -.2256E-02_dp,  &
968             -.1125E+02_dp, 0.2029E+02_dp, -.5391E+01_dp, 0.4692E+00_dp, -.1363E-01_dp,  &
969             0.4837E+00_dp, 0.2130E+01_dp, -.1477E+01_dp, 0.1459E+00_dp, -.4428E-02_dp,  &
970             0.8633E+01_dp, 0.2963E+01_dp, -.1277E+01_dp, 0.1250E+00_dp, -.3843E-02_dp,  &
971             -.8969E+01_dp, 0.9657E+01_dp, -.1778E+01_dp, 0.2186E+00_dp, -.8465E-02_dp,  &
972             0.6672E+01_dp, 0.1784E+02_dp, -.3836E+01_dp, 0.3077E+00_dp, -.9108E-02_dp,  &
973             0.6373E+02_dp, -.1009E+03_dp, 0.2045E+02_dp, -.1652E+01_dp, 0.4621E-01_dp,  &
974             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
975             0.6551E+01_dp, 0.1004E+02_dp, -.3142E+01_dp, 0.2893E+00_dp, -.8648E-02_dp,  &
976             0.1623E+02_dp, 0.2482E+01_dp, -.7158E+00_dp, 0.6861E-01_dp, -.2212E-02_dp,  &
977             -.7875E+01_dp, -.1366E+01_dp, 0.3688E+00_dp, -.4288E-01_dp, 0.1665E-02_dp,  &
978 !           60.2912_dp,     -68.21459_dp,   17.65838_dp,   -2.22646_dp,    0.10101_dp,  &
979             -.9723E+01_dp, 0.2415E+02_dp, -.5494E+01_dp, 0.4353E+00_dp, -.1185E-01_dp,  &
980             0.2494E+01_dp, -.1060E+00_dp, -.3462E+00_dp, 0.4881E-01_dp, -.1885E-02_dp,  &
981             -.1241E+02_dp, 0.1633E+02_dp, -.4155E+01_dp, 0.3659E+00_dp, -.1103E-01_dp,  &
982             0.3754E+01_dp, 0.4798E+01_dp, -.2051E+01_dp, 0.1749E+00_dp, -.4421E-02_dp,  &
983             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
984             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
985             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
986             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
987             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
988             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
989             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
990             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
991             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
992             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
993             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
994             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
995             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
996             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
997             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
998             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
999             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1000             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1001             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1002             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1003             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1004             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1005             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1006             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1007             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1008             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1009             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1010             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1011             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1012             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1013             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1014             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp /
1016 !-------------------------------------------------------
1017 ! correction coef. for zenith=80
1018 !-------------------------------------------------------
1019 ! extended to 58
1020       data ((c80(ii,kk),ii=1,5),kk=1,58)/  &
1021             -.1932E+02_dp, 0.4848E+02_dp, -.1816E+02_dp, 0.2644E+01_dp, -.1113E+00_dp,  &
1022             0.1728E+02_dp, 0.8264E+01_dp, -.4332E+01_dp, 0.4240E+00_dp, -.1205E-01_dp,  &
1023             -.3679E+01_dp, 0.3203E+00_dp, -.2073E+00_dp, 0.2292E-01_dp, -.8063E-03_dp,  &
1024             0.1162E+02_dp, -.1252E+00_dp, 0.1497E+00_dp, -.1788E-01_dp, 0.6020E-03_dp,  &
1025             -.7465E+02_dp, -.3094E+00_dp, 0.2662E-01_dp, -.3132E-02_dp, 0.1261E-03_dp,  &
1026             0.1354E+01_dp, 0.1268E+01_dp, -.6397E+00_dp, 0.7837E-01_dp, -.3072E-02_dp,  &
1027             0.4900E+02_dp, -.4330E+02_dp, 0.1243E+02_dp, -.6545E+00_dp, -.3124E-02_dp,  &
1028             0.3719E+02_dp, -.5631E+01_dp, 0.2814E+01_dp, -.3031E+00_dp, 0.1144E-01_dp,  &
1029             -.4231E+02_dp, 0.1101E+03_dp, -.3837E+02_dp, 0.5405E+01_dp, -.2250E+00_dp,  &
1030             -.1008E+02_dp, 0.3177E+02_dp, -.1279E+02_dp, 0.1910E+01_dp, -.8098E-01_dp,  &
1031             -.2675E+02_dp, -.1888E+02_dp, 0.3767E+01_dp, -.3337E+00_dp, 0.1035E-01_dp,  &
1032             0.5699E+01_dp, -.2313E+00_dp, 0.1181E+00_dp, -.1085E-01_dp, 0.9490E-04_dp,  &
1033             0.1952E+02_dp, -.9656E+01_dp, 0.3008E+00_dp, 0.3705E-01_dp, -.1937E-02_dp,  &
1034             0.1146E+02_dp, -.1376E+02_dp, 0.1489E+01_dp, -.8155E-01_dp, 0.1865E-02_dp,  &
1035             0.1915E+02_dp, -.9104E+01_dp, 0.1121E+01_dp, -.5157E-01_dp, 0.7693E-03_dp,  &
1036             -.1538E+02_dp, 0.1580E+02_dp, -.3802E+01_dp, 0.4911E+00_dp, -.1826E-01_dp,  &
1037             0.3248E+02_dp, 0.1777E+01_dp, -.1424E+01_dp, 0.1013E+00_dp, -.2249E-02_dp,  &
1038             -.7258E+02_dp, -.1391E+02_dp, 0.2730E+01_dp, -.2204E+00_dp, 0.6206E-02_dp,  &
1039             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1040             0.2933E+02_dp, -.1389E+02_dp, 0.1774E+01_dp, -.1105E+00_dp, 0.2751E-02_dp,  &
1041             0.2003E+02_dp, -.1591E+01_dp, 0.3060E-01_dp, 0.9648E-02_dp, -.5457E-03_dp,  &
1042             -.6542E+01_dp, -.2002E+01_dp, 0.5333E+00_dp, -.5663E-01_dp, 0.2222E-02_dp,  &
1043 !           67.51654_dp,    -74.30246_dp,   19.69406_dp,   -2.53227_dp,     0.1171_dp,  &
1044             0.2831E+02_dp, -.4422E+01_dp, -.1020E+01_dp, 0.1347E+00_dp, -.4307E-02_dp,  &
1045             0.4106E+01_dp, -.4695E+01_dp, 0.8728E+00_dp, -.5511E-01_dp, 0.9340E-03_dp,  &
1046             0.1123E+02_dp, -.3881E+01_dp, -.7454E+00_dp, 0.1149E+00_dp, -.4054E-02_dp,  &
1047             0.2265E+02_dp, -.2158E+02_dp, 0.4002E+01_dp, -.3497E+00_dp, 0.1110E-01_dp,  &
1048             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1049             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1050             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1051             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1052             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1053             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1054             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1055             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1056             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1057             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1058             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1059             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1060             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1061             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1062             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1063             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1064             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1065             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1066             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1067             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1068             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1069             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1070             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1071             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1072             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1073             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1074             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1075             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1076             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1077             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1078             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp,  &
1079             0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp, 0.0000E+00_dp /
1081       contains
1083       subroutine wave_data_inti( nz )
1085       implicit none
1087 !-------------------------------------------------------
1088 !     input arguments
1089 !-------------------------------------------------------
1090       integer, intent(in) :: nz
1092 !-------------------------------------------------------
1093 !     local arguments
1094 !-------------------------------------------------------
1095       integer :: astat, ij, iw
1097       if( .not. allocated(sq) ) then
1098 !-------------------------------------------------------
1099 !     allocate memory space
1100 !-------------------------------------------------------
1101         allocate( sq(nw-1,nz,nj), stat=astat )
1102         if( astat /= 0 ) then
1103           write(*,*) 'wave_data_inti: sq allocate failed; error = ',astat
1104           stop
1105         end if
1107 !-------------------------------------------------------
1108 !     intialize sq
1109 !-------------------------------------------------------
1110         do ij = 1, nj
1111           do iw = 1, nw-1
1112             sq(iw,:,ij) = sjref(iw,ij)
1113           enddo
1114         enddo
1116 !-------------------------------------------------------
1117 !       ... initialize cross section functions
1118 !-------------------------------------------------------
1119         call r44_inti
1120         call r08_inti
1121       endif
1123       end subroutine wave_data_inti
1125       subroutine r01( nz, tlev, airlev, j, jlabel )
1126 !-----------------------------------------------------------------------------
1127 ! purpose:
1128 ! provide the product of (cross section) x (quantum yield) for the two
1129 ! o3 photolysis reactions:
1130 ! (a) o3 + hv -> o2 + o(1d)
1131 ! (b) o3 + hv -> o2 + o(3p)
1132 ! cross section: combined data from wmo 85 ozone assessment (use 273k
1133 ! value from 175.439-847.5 nm) and data from molina and
1134 ! molina (use in hartley and huggins bans (240.5-350 nm)
1135 ! quantum yield: choice between
1136 ! (1) data from michelsen et al, 1994
1137 ! (2) jpl 87 recommendation
1138 ! (3) jpl 90/92 recommendation (no "tail")
1139 ! (4) data from shetter et al., 1996
1140 ! (5) jpl 97 recommendation
1141 !-----------------------------------------------------------------------------
1142 ! parameters:
1143 ! nw - integer, number of specified intervals + 1 in working (i)
1144 ! wavelength grid
1145 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
1146 ! working wavelength grid
1147 ! wc - real(dp), vector of center points of wavelength intervals in (i)
1148 ! working wavelength grid
1149 ! nz - integer, number of altitude levels in working altitude grid (i)
1150 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
1151 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
1152 ! j - integer, counter for number of weighting functions defined (io)
1153 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
1154 ! photolysis reaction defined, at each defined wavelength and
1155 ! at each defined altitude level
1156 ! jlabel - character*40, string identifier for each photolysis reaction (o)
1157 ! defined
1158 !-----------------------------------------------------------------------------
1159 ! edit history:
1160 ! 05/98 original, adapted from former jspec1 subroutine
1161 !-----------------------------------------------------------------------------
1162 ! this program is free software; you can redistribute it and/or modify
1163 ! it under the terms of the gnu general public license as published by the
1164 ! free software foundation; either version 2 of the license, or (at your
1165 ! option) any later version.
1166 ! the tuv package is distributed in the hope that it will be useful, but
1167 ! without any warranty; without even the implied warranty of merchantibi-
1168 ! lity or fitness for a particular purpose. see the gnu general public
1169 ! license for more details.
1170 ! free software foundation, inc., 675 mass ave, cambridge, ma 02139, usa.
1171 !-----------------------------------------------------------------------------
1172       implicit none
1173 !-----------------------------------------------------------------------------
1174 ! ... dummy arguments
1175 !-----------------------------------------------------------------------------
1176       integer, intent(in)    :: nz
1177       integer, intent(inout) :: j
1178       real(dp), intent(in)   :: tlev(nz)
1179       real(dp), intent(in)   :: airlev(nz)
1180       character(len=40), intent(out) :: jlabel(nj)
1181 !-----------------------------------------------------------------------------
1182 ! ... local variables
1183 !-----------------------------------------------------------------------------
1184       real(dp), parameter :: c0 = 12._dp/19._dp
1185       real(dp), parameter :: a1 = 0.887_dp
1186       real(dp), parameter :: a2 = 2.35_dp
1187       real(dp), parameter :: a3 = 57.0_dp
1188       real(dp), parameter :: wc1 = 302._dp
1189       real(dp), parameter :: wc2 = 311.1_dp
1190       real(dp), parameter :: wc3 = 313.9_dp
1191       real(dp), parameter :: v2 = 820.0_dp
1192       real(dp), parameter :: v3 = 1190.0_dp
1193       real(dp), parameter :: w1 = 7.9_dp
1194       real(dp), parameter :: w2 = 2.2_dp
1195       real(dp), parameter :: w3 = 7.4_dp
1196       real(dp), parameter :: xk = 0.695_dp
1198       integer  :: i, iw
1199       real(dp) :: qy1d, qy3p, so3, wrk, tinv
1200       logical  :: tl
1202 !-----------------------------------------------------------------------------
1203 ! ... o3 photodissociation
1204 !-----------------------------------------------------------------------------
1205       j = j + 1
1206       jlabel(j) = 'o3 -> o2 + o(1d)'
1207       j = j + 1
1208       jlabel(j) = 'o3 -> o2 + o(3p)'
1210 level_loop : &
1211       do i = 1,nz
1212          tinv = 1./tlev(i)
1213          tl = tlev(i) < 263._dp
1214          if( tl ) then
1215             wrk = (tlev(i) - 226._dp)/(263._dp - 226._dp)
1216          else
1217             wrk = (tlev(i) - 263._dp)/(298._dp - 263._dp)
1218          end if
1219 wave_loop : &
1220          do iw = 1,nw-1
1221             if( wl(iw) > 240.5_dp .and. wl(iw+1) < 350._dp ) then
1222                if( tl ) then
1223                   so3 = s226(iw) + (s263(iw) - s226(iw)) * wrk
1224                else
1225                   so3 = s263(iw) + (s298(iw) - s263(iw)) * wrk
1226                end if
1227             else
1228                so3 = xso3(iw)
1229             end if
1230 !-----------------------------------------------------------------------------
1231 ! ... from jpl97
1232 !-----------------------------------------------------------------------------
1233              if( wc(iw) < 271._dp ) then
1234                 qy1d = .87_dp
1235              else if( wc(iw) >= 271._dp .and. wc(iw) < 290._dp ) then
1236                 qy1d = .87_dp + (wc(iw) - 271._dp)*c0
1237              else if( wc(iw) >= 290._dp .and. wc(iw) < 305._dp ) then
1238                 qy1d = .95_dp
1239              else if( wc(iw) >= 305._dp .and. wc(iw) <= 325._dp ) then
1240                 qy1d = r01g1(iw) * exp ( -r01g2(iw)*tinv )
1241              else
1242                 qy1d = 0._dp
1243              end if
1244 !-------------------------------------------------------------------------------
1245 ! ... from jpl2000
1246 !-------------------------------------------------------------------------------
1247              if( wc(iw) < 300._dp ) then
1248                 qy1d = 0.95_dp
1249              else if( wc(iw) >= 300._dp .and. wc(iw) < 331._dp ) then
1250                 qy1d = a1*exp( -((wc(iw) - wc1 )/w1)**4 ) &
1251                      + a2*(tlev(i)/300._dp)**4*exp( -v2/xk*tinv ) &
1252                     * exp( -((wc(iw) - wc2)/w2)**2 ) &
1253                      + a3*exp( -v3/xk*tinv ) * exp( -((wc(iw) - wc3)/w3)**2 ) &
1254                      + 0.06_dp
1255              else if( wc(iw) .ge. 331._dp .and. wc(iw) .lt. 345._dp ) then
1256                 qy1d = 0.06_dp
1257              else
1258                 qy1d = 0._dp
1259              end if
1261              qy1d = fo3qy( wc(iw), tlev(i) )
1263              sq(iw,i,j-1) = qy1d*so3
1264              qy3p       = 1._dp - qy1d
1265              sq(iw,i,j) = qy3p*so3
1266          end do wave_loop
1267       end do level_loop
1269       end subroutine r01
1271       function fo3qy( w, t )
1272 !-----------------------------------------------------------------------------
1273 !   PURPOSE:
1274 ! function to calculate the quantum yield O3 + hv -> O(1D) + O2,
1275 ! according to:                                                             
1276 ! Matsumi, Y., F. J. Comes, G. Hancock, A. Hofzumanhays, A. J. Hynes,
1277 ! M. Kawasaki, and A. R. Ravishankara, QUantum yields for production of O(1D)
1278 ! in the ultraviolet photolysis of ozone:  Recommendation based on evaluation
1279 ! of laboratory data, J. Geophys. Res., 107, 10.1029/2001JD000510, 2002.
1280 !-----------------------------------------------------------------------------
1282       implicit none
1284 !-----------------------------------------------------------------------------
1285 !       ... dummy arguments
1286 !-----------------------------------------------------------------------------
1287       real(dp), intent(in)  :: w
1288       real(dp), intent(in)  :: t
1290 !-----------------------------------------------------------------------------
1291 !       ... local variables
1292 !-----------------------------------------------------------------------------
1293       real(dp) :: kt
1294       real(dp) :: q1
1295       real(dp) :: q2 
1296       real(dp) :: tfac
1297       real(dp) :: a(3)  = (/ 0.8036_dp, 8.9061_dp, 0.1192_dp /)
1298       real(dp) :: x(3)  = (/ 304.225_dp, 314.957_dp, 310.737_dp /)
1299       real(dp) :: om(3) = (/ 5.576_dp, 6.601_dp, 2.187_dp /)
1301 !-----------------------------------------------------------------------------
1302 !       ... function declarations
1303 !-----------------------------------------------------------------------------
1304       real(dp) :: fo3qy
1305       
1306       fo3qy = 0._dp
1307       kt = 0.695_dp * t
1308       q1 = 1._dp
1309       q2 = exp( -825.518_dp/kt )
1310       
1311       if( w <= 305._dp ) then
1312          fo3qy = .90_dp
1313       else if( w > 305._dp .and. w <= 328._dp ) then
1314          tfac  = t/300._dp
1315          fo3qy = 0.0765_dp &
1316                 + a(1)*           (q1/(q1+q2))*exp( -((x(1) - w)/om(1))**4 ) &
1317                 + a(2)*(tfac)**2 *(q2/(q1+q2))*exp( -((x(2) - w)/om(2))**2 ) &
1318                 + a(3)*(tfac)**1.5_dp         *exp( -((x(3) - w)/om(3))**2 )
1319       else if( w > 328._dp .and. w <= 340._dp ) then
1320          fo3qy = 0.08_dp
1321       else if( w > 340._dp ) then
1322          fo3qy = 0._dp
1323       end if
1325       end function fo3qy
1327       subroutine r04( nz, tlev, airlev, j, jlabel )
1328 !-----------------------------------------------------------------------------
1329 ! purpose:
1330 ! provide product of (cross section) x (quantum yiels) for n2o5 photolysis
1331 ! reactions:
1332 ! (a) n2o5 + hv -> no3 + no + o(3p)
1333 ! (b) n2o5 + hv -> no3 + no2
1334 ! cross section from jpl97: use tabulated values up to 280 nm, use expon.
1335 ! expression for >285nm, linearly interpolate
1336 ! between s(280) and s(285,t) in between
1337 ! quantum yield: analysis of data in jpl94 (->dataj1/yld/n2o5.qy)
1338 !-----------------------------------------------------------------------------
1339 ! parameters:
1340 ! nw - integer, number of specified intervals + 1 in working (i)
1341 ! wavelength grid
1342 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
1343 ! working wavelength grid
1344 ! wc - real(dp), vector of center points of wavelength intervals in (i)
1345 ! working wavelength grid
1346 ! nz - integer, number of altitude levels in working altitude grid (i)
1347 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
1348 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
1349 ! j - integer, counter for number of weighting functions defined (io)
1350 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
1351 ! photolysis reaction defined, at each defined wavelength and
1352 ! at each defined altitude level
1353 ! jlabel - character*40, string identifier for each photolysis reaction (o)
1354 ! defined
1355 !-----------------------------------------------------------------------------
1356 ! edit history:
1357 ! 05/98 original, adapted from former jspec1 subroutine
1358 !-----------------------------------------------------------------------------
1359       implicit none
1360 !-----------------------------------------------------------------------------
1361 ! ... dummy arguments
1362 !-----------------------------------------------------------------------------
1363       integer, intent(in) :: nz
1364       integer, intent(inout) :: j
1365       real(dp), intent(in) :: tlev(nz)
1366       real(dp), intent(in) :: airlev(nz)
1367       character(len=40), intent(out) :: jlabel(nj)
1368 !-----------------------------------------------------------------------------
1369 ! ... local variables
1370 !-----------------------------------------------------------------------------
1371       real(dp), parameter :: xs280 = 1.16999993e-19_dp
1373       integer  :: i, iw
1374       real(dp) :: qy
1375       real(dp) :: xs, xst285
1376       real(dp) :: t
1377 !-----------------------------------------------------------------------------
1378 ! ... n2o5 photodissociation
1379 !-----------------------------------------------------------------------------
1380       j = j + 1
1381       jlabel(j) = 'n2o5 -> no3 + no + o(3p)'
1382       j = j + 1
1383       jlabel(j) = 'n2o5 -> no3 + no2'
1384 !-----------------------------------------------------------------------------
1385 ! ... cross section from jpl97, table up to 280 nm
1386 ! quantum yield : see dataj1/yld/n2o5.qy for explanation
1387 ! correct for t-dependence of cross section
1388 !-----------------------------------------------------------------------------
1389       do i = 1,nz
1390 !-----------------------------------------------------------------------------
1391 ! ... temperature dependence only valid for 225 - 300 k.
1392 !-----------------------------------------------------------------------------
1393          t = 1./max( 225._dp,min( tlev(i),300._dp ) )
1394          do iw = 1,nw-1
1395             qy = max( 0._dp,min( 1._dp, 3.832441_dp - 0.012809638_dp * wc(iw) ) )
1396 !-----------------------------------------------------------------------------
1397 ! ... evaluate exponential
1398 !-----------------------------------------------------------------------------
1399             if( wl(iw) >= 285._dp .and. wl(iw+1) <= 380._dp ) then
1400                sq(iw,i,j-1) = qy * 1.e-20_dp*exp( 2.735_dp + (4728.5_dp - 17.127_dp*wc(iw)) * t )
1401                sq(iw,i,j) = (1._dp - qy) * 1.e-20_dp*exp( 2.735_dp + (4728.5_dp - 17.127_dp*wc(iw)) * t )
1402 !-----------------------------------------------------------------------------
1403 ! ... between 280 and 285, interpolate between temperature evaluated exponential
1404 ! at 285 nm and the tabulated value at 280 nm.
1405 !-----------------------------------------------------------------------------
1406             else if( wl(iw) >= 280._dp .and. wl(iw+1) <= 286._dp ) then
1407                xst285 = 1.e-20_dp* exp( 2.735_dp + (4728.5_dp - 17.127_dp*286._dp)*t )
1408                xs = xs280 + (wc(iw) - 280._dp)*(xst285 - xs280)/(286._dp - 280._dp)
1409                sq(iw,i,j-1) = qy * xs
1410                sq(iw,i,j)   = (1._dp - qy) * xs
1411 !-----------------------------------------------------------------------------
1412 ! ... use tabulated values
1413 !-----------------------------------------------------------------------------
1414             else if (wl(iw) <= 280._dp ) then
1415                sq(iw,i,j-1) = qy * r04g(iw)
1416                sq(iw,i,j)   = (1._dp - qy) * r04g(iw)
1417 !-----------------------------------------------------------------------------
1418 ! ... beyond 380 nm, set to zero
1419 !-----------------------------------------------------------------------------
1420             else
1421                sq(iw,i,j-1) = 0._dp
1422                sq(iw,i,j)   = 0._dp
1423             end if
1424          end do
1425       end do
1427       end subroutine r04
1429       subroutine r44_inti( )
1430 !-----------------------------------------------------------------------------
1431 ! ... initialize subroutine r44
1432 !-----------------------------------------------------------------------------
1433       implicit none
1434 !-----------------------------------------------------------------------------
1435 ! ... dummy arguments
1436 !-----------------------------------------------------------------------------
1437 !-----------------------------------------------------------------------------
1438 ! ... local variables
1439 !-----------------------------------------------------------------------------
1440 !-----------------------------------------------------------------------------
1441 ! ... cross sections according to jpl97 recommendation (identical to 94 rec.)
1442 ! see file dataj1/abs/n2o_jpl94.abs for detail
1443 !-----------------------------------------------------------------------------
1444       real(dp), parameter :: a0 = 68.21023_dp
1445       real(dp), parameter :: a1 = -4.071805_dp
1446       real(dp), parameter :: a2 = 4.301146e-02_dp
1447       real(dp), parameter :: a3 = -1.777846e-04_dp
1448       real(dp), parameter :: a4 = 2.520672e-07_dp
1449       real(dp), parameter :: b0 = 123.4014_dp
1450       real(dp), parameter :: b1 = -2.116255_dp
1451       real(dp), parameter :: b2 = 1.111572e-02_dp
1452       real(dp), parameter :: b3 = -1.881058e-05_dp
1454       integer  :: iw, astat
1455       real(dp) :: lambda
1457       allocate( a(nw-1), b(nw-1), stat=astat )
1458       if( astat /= 0 ) then
1459          write(*,*) 'r44_inti: a,b allocate failed; error = ',astat
1460          stop
1461       end if
1462       do iw = 1,nw-1
1463          lambda = wc(iw)
1464          if( lambda >= 173._dp .and. lambda <= 240._dp ) then
1465             a(iw) = (((a4*lambda + a3)*lambda + a2)*lambda + a1)*lambda + a0
1466             b(iw) = ((b3*lambda + b2)*lambda + b1)*lambda + b0
1467          end if
1468       end do
1470       end subroutine r44_inti
1472       subroutine r44( nz, tlev, airlev, j, jlabel )
1473 !-----------------------------------------------------------------------------
1474 ! purpose:
1475 ! provide product (cross section) x (quantum yield) for n2o photolysis:
1476 ! n2o + hv -> n2 + o(1d)
1477 ! cross section: from jpl 97 recommendation
1478 ! quantum yield: assumed to be unity, based on greenblatt and ravishankara
1479 !-----------------------------------------------------------------------------
1480 ! parameters:
1481 ! nw - integer, number of specified intervals + 1 in working (i)
1482 ! wavelength grid
1483 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
1484 ! working wavelength grid
1485 ! wc - real(dp), vector of center points of wavelength intervals in (i)
1486 ! working wavelength grid
1487 ! nz - integer, number of altitude levels in working altitude grid (i)
1488 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
1489 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
1490 ! j - integer, counter for number of weighting functions defined (io)
1491 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
1492 ! photolysis reaction defined, at each defined wavelength and
1493 ! at each defined altitude level
1494 ! jlabel - character*40, string identifier for each photolysis reaction (o)
1495 ! defined
1496 !-----------------------------------------------------------------------------
1497 ! edit history:
1498 ! 05/98 original, adapted from former jspec1 subroutine
1499 !-----------------------------------------------------------------------------
1500       implicit none
1501 !-----------------------------------------------------------------------------
1502 ! ... dummy arguments
1503 !-----------------------------------------------------------------------------
1504       integer, intent(in)    :: nz
1505       integer, intent(inout) :: j
1506       real(dp), intent(in)   :: tlev(nz)
1507       real(dp), intent(in)   :: airlev(nz)
1508       character(len=40), intent(out) :: jlabel(nj)
1509 !-----------------------------------------------------------------------------
1510 ! ... local variables
1511 !-----------------------------------------------------------------------------
1512       integer :: i
1513       real(dp) :: t
1514 !-----------------------------------------------------------------------------
1515 ! ... n2o photodissociation
1516 !-----------------------------------------------------------------------------
1517       j = j+1
1518       jlabel(j) = 'n2o + hv -> n2 + o(1d)'
1519 !-----------------------------------------------------------------------------
1520 ! ... quantum yield of n(4s) and no(2pi) is less than 1% (greenblatt and
1521 ! ravishankara), so quantum yield of o(1d) is assumed to be unity
1522 !-----------------------------------------------------------------------------
1523       do i = 1,nz
1524          t = max( 194._dp,min( tlev(i),320._dp ) ) - 300._dp
1525          where( wc(:nw-1) >= 173._dp .and. wc(:nw-1) <= 240._dp )
1526             sq(:nw-1,i,j) = exp( a(:nw-1) + t*exp( b(:nw-1) ) )
1527          elsewhere
1528             sq(:nw-1,i,j) = 0._dp
1529          endwhere
1530       end do
1532       end subroutine r44
1534       subroutine r08_inti( )
1535 !-----------------------------------------------------------------------------
1536 ! ... initialize subroutine r08
1537 !-----------------------------------------------------------------------------
1538       implicit none
1539 !-----------------------------------------------------------------------------
1540 ! ... dummy arguments
1541 !-----------------------------------------------------------------------------
1542 !-----------------------------------------------------------------------------
1543 ! ... local variables
1544 !-----------------------------------------------------------------------------
1545       real(dp), parameter :: a0 = 6.4761e+04_dp
1546       real(dp), parameter :: a1 = -9.2170972e+02_dp
1547       real(dp), parameter :: a2 = 4.535649_dp
1548       real(dp), parameter :: a3 = -4.4589016e-03_dp
1549       real(dp), parameter :: a4 = -4.035101e-05_dp
1550       real(dp), parameter :: a5 = 1.6878206e-07_dp
1551       real(dp), parameter :: a6 = -2.652014e-10_dp
1552       real(dp), parameter :: a7 = 1.5534675e-13_dp
1553       real(dp), parameter :: b0 = 6.8123e+03_dp
1554       real(dp), parameter :: b1 = -5.1351e+01_dp
1555       real(dp), parameter :: b2 = 1.1522e-01_dp
1556       real(dp), parameter :: b3 = -3.0493e-05_dp
1557       real(dp), parameter :: b4 = -1.0924e-07_dp
1559       integer  :: iw, astat
1560       real(dp) :: lambda
1562       allocate( suma(nw-1), sumb(nw-1), stat=astat )
1563       if( astat /= 0 ) then
1564          write(*,*) 'r08_inti: suma,sumb allocate failed; error = ',astat
1565          stop
1566       end if
1567       do iw = 1,nw-1
1568          if( wl(iw) >= 260._dp .and. wl(iw) < 350._dp ) then
1569             lambda = wc(iw)
1570             suma(iw) = ((((((a7*lambda + a6)*lambda + a5)*lambda + a4)*lambda +a3)*lambda + a2)*lambda + a1)*lambda + a0
1571             sumb(iw) = (((b4*lambda + b3)*lambda + b2)*lambda + b1)*lambda + b0
1572          end if
1573       end do
1575       end subroutine r08_inti
1577       subroutine r08( nz, tlev, airlev, j, jlabel )
1578 !-----------------------------------------------------------------------------
1579 ! purpose:
1580 ! provide product of (cross section) x (quantum yield) for h2o2 photolysis
1581 ! h2o2 + hv -> 2 oh
1582 ! cross section: from jpl97, tabulated values @ 298k for <260nm, t-depend.
1583 ! parameterization for 260-350nm
1584 ! quantum yield: assumed to be unity
1585 !-----------------------------------------------------------------------------
1586 ! parameters:
1587 ! nw - integer, number of specified intervals + 1 in working (i)
1588 ! wavelength grid
1589 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
1590 ! working wavelength grid
1591 ! wc - real(dp), vector of center points of wavelength intervals in (i)
1592 ! working wavelength grid
1593 ! nz - integer, number of altitude levels in working altitude grid (i)
1594 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
1595 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
1596 ! j - integer, counter for number of weighting functions defined (io)
1597 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
1598 ! photolysis reaction defined, at each defined wavelength and
1599 ! at each defined altitude level
1600 ! jlabel - character*40, string identifier for each photolysis reaction (o)
1601 ! defined
1602 !-----------------------------------------------------------------------------
1603 ! edit history:
1604 ! 05/98 original, adapted from former jspec1 subroutine
1605 !-----------------------------------------------------------------------------
1606       implicit none
1607 !-----------------------------------------------------------------------------
1608 ! ... dummy arguments
1609 !-----------------------------------------------------------------------------
1610       integer, intent(in)    :: nz
1611       integer, intent(inout) :: j
1612       real(dp), intent(in)   :: tlev(nz)
1613       real(dp), intent(in)   :: airlev(nz)
1614       character(len=40), intent(out) :: jlabel(nj)
1615 !-----------------------------------------------------------------------------
1616 ! ... local variables
1617 !-----------------------------------------------------------------------------
1618       integer :: i
1619       real(dp) :: t
1620       real(dp) :: chi
1621 !-----------------------------------------------------------------------------
1622 ! ... h2o2 photodissociation
1623 ! cross section from lin et al. 1978
1624 !-----------------------------------------------------------------------------
1625       j = j + 1
1626       jlabel(j) = 'h2o2 -> 2 oh'
1627       do i = 1,nz
1628          t = 1._dp/min( max( tlev(i),200._dp ),400._dp )
1629          chi = 1._dp/(1._dp + exp( -1265._dp*t ))
1630 !-----------------------------------------------------------------------------
1631 ! ... parameterization (jpl94)
1632 ! range 260-350 nm; 200-400 k
1633 !-----------------------------------------------------------------------------
1634          where( wl(:nw-1) > 260._dp .and. wl(:nw-1) < 350._dp )
1635             sq(:nw-1,i,j) = (chi * suma(:nw-1) + (1._dp - chi)*sumb(:nw-1))*1.e-21_dp
1636          elsewhere
1637             sq(:nw-1,i,j) = r08g(:nw-1)
1638          endwhere
1639       end do
1641       end subroutine r08
1643       subroutine r06( nz, tlev, airlev, j, jlabel )
1644 !-----------------------------------------------------------------------------
1645 ! purpose:
1646 ! provide product of (cross section) x (quantum yield) for hno3 photolysis
1647 ! hno3 + hv -> oh + no2
1648 ! cross section: burkholder et al., 1993
1649 ! quantum yield: assumed to be unity
1650 !-----------------------------------------------------------------------------
1651 ! parameters:
1652 ! nw - integer, number of specified intervals + 1 in working (i)
1653 ! wavelength grid
1654 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
1655 ! working wavelength grid
1656 ! wc - real(dp), vector of center points of wavelength intervals in (i)
1657 ! working wavelength grid
1658 ! nz - integer, number of altitude levels in working altitude grid (i)
1659 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
1660 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
1661 ! j - integer, counter for number of weighting functions defined (io)
1662 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
1663 ! photolysis reaction defined, at each defined wavelength and
1664 ! at each defined altitude level
1665 ! jlabel - character*40, string identifier for each photolysis reaction (o)
1666 ! defined
1667 !-----------------------------------------------------------------------------
1668       implicit none
1669 !-----------------------------------------------------------------------------
1670 ! ... dummy arguments
1671 !-----------------------------------------------------------------------------
1672       integer, intent(in)    :: nz
1673       integer, intent(inout) :: j
1674       real(dp), intent(in)   :: tlev(nz)
1675       real(dp), intent(in)   :: airlev(nz)
1676       character(len=40), intent(out) :: jlabel(nj)
1677 !-----------------------------------------------------------------------------
1678 ! ... local variables
1679 !-----------------------------------------------------------------------------
1680       integer  :: k
1681       real(dp) :: wrk
1682 !-----------------------------------------------------------------------------
1683 ! ... hno3 photodissociation
1684 !-----------------------------------------------------------------------------
1685        j = j + 1
1686        jlabel(j) = 'hno3 -> oh + no2'
1687 !-----------------------------------------------------------------------------
1688 ! ... hno3 cross section parameters from burkholder et al. 1993
1689 ! quantum yield = 1
1690 ! correct for temperature dependence
1691 !-----------------------------------------------------------------------------
1692       do k = 1,nz
1693          wrk = 1.e-3_dp*(tlev(k) - 298._dp)
1694          sq(:nw-1,k,j) = r06g1(:nw-1) * 1.e-20_dp * exp( r06g2(:nw-1)*wrk )
1695       end do
1697       end subroutine r06
1699       subroutine r10( nz, tlev, airlev, j, jlabel )
1700 !-----------------------------------------------------------------------------
1701 ! purpose:
1702 ! provide product of (cross section) x (quantum yield) for ch2o photolysis *
1703 ! (a) ch2o + hv -> h + hco
1704 ! (b) ch2o + hv -> h2 + co
1705 ! cross section: choice between
1706 ! 1) bass et al., 1980 (resolution: 0.025 nm)
1707 ! 2) moortgat and schneider (resolution: 1 nm)
1708 ! 3) cantrell et al. (orig res.) for > 301 nm,
1709 ! iupac 92, 97 elsewhere
1710 ! 4) cantrell et al. (2.5 nm res.) for > 301 nm,
1711 ! iupac 92, 97 elsewhere
1712 ! 5) rogers et al., 1990
1713 ! 6) new ncar recommendation, based on averages of
1714 ! cantrell et al., moortgat and schneider, and rogers
1715 ! et al.
1716 ! quantum yield: choice between
1717 ! 1) evaluation by madronich 1991 (unpublished)
1718 ! 2) iupac 89, 92, 97
1719 ! 3) madronich, based on 1), updated 1998.
1720 !-----------------------------------------------------------------------------
1721 ! parameters:
1722 ! nw - integer, number of specified intervals + 1 in working (i)
1723 ! wavelength grid
1724 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
1725 ! working wavelength grid
1726 ! wc - real(dp), vector of center points of wavelength intervals in (i)
1727 ! working wavelength grid
1728 ! nz - integer, number of altitude levels in working altitude grid (i)
1729 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
1730 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
1731 ! j - integer, counter for number of weighting functions defined (io)
1732 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
1733 ! photolysis reaction defined, at each defined wavelength and
1734 ! at each defined altitude level
1735 ! jlabel - character*40, string identifier for each photolysis reaction (o)
1736 ! defined
1737 !-----------------------------------------------------------------------------
1738       implicit none
1739 !-----------------------------------------------------------------------------
1740 ! ... dummy arguments
1741 !-----------------------------------------------------------------------------
1742       integer, intent(in)    :: nz
1743       integer, intent(inout) :: j
1744       real(dp), intent(in)   :: tlev(nz)
1745       real(dp), intent(in)   :: airlev(nz)
1746       character(len=40), intent(out) :: jlabel(nj)
1747 !-----------------------------------------------------------------------------
1748 ! ... local variables
1749 !-----------------------------------------------------------------------------
1750       integer, parameter :: mopt1 = 6
1751       integer, parameter :: mopt2 = 1
1752       real(dp), parameter :: c0 = 1._dp/70._dp
1754       integer  :: i, iw
1755       real(dp) :: phi1, phi2, phi20, ak300, akt
1756       real(dp) :: qy, qy1, qy2, qy3, t, t1
1757       real(dp) :: sigma, sig, slope
1758 !-----------------------------------------------------------------------------
1759 ! ... ch2o photodissociatation
1760 !-----------------------------------------------------------------------------
1761       j = j+1
1762       jlabel(j) = 'ch2o -> h + hco'
1763       j = j+1
1764       jlabel(j) = 'ch2o -> h2 + co'
1765 !-----------------------------------------------------------------------------
1766 ! ... combine
1767 ! y1 = xsect
1768 ! y2 = xsect(223), cantrell et al.
1769 ! y3 = xsect(293), cantrell et al.
1770 ! y4 = qy for radical channel
1771 ! y5 = qy for molecular channel
1772 ! pressure and temperature dependent for w > 330.
1773 !-----------------------------------------------------------------------------
1774       do i = 1,nz
1775          t = max( 223.15_dp,min( tlev(i),293.15_dp ) )
1776          t1 = airlev(i)
1777          do iw = 1,nw-1
1778             if( mopt1 == 6 ) then
1779                sig = r10g2(iw)
1780             else
1781                sig = r10g1(iw)
1782             end if
1783 !-----------------------------------------------------------------------------
1784 ! ... correct cross section for temperature dependence for > 301. nm
1785 !-----------------------------------------------------------------------------
1786             if( wl(iw) >= 301._dp ) then
1787                if( mopt1 == 3 .or. mopt1 == 6 ) then
1788                   sig = r10g2(iw) + r10g3(iw) * (t - 273.15_dp)
1789                else if( mopt1 == 4 ) then
1790                   slope = (r10g3(iw) - r10g2(iw)) * c0
1791                   slope = (r10g3(iw) - r10g2(iw)) * c0
1792                   sig = r10g2(iw) + slope * (t - 223._dp)
1793                end if
1794             end if
1795             sig = max( sig,0._dp )
1796 !-----------------------------------------------------------------------------
1797 ! ... quantum yields:
1798 ! temperature and pressure dependence beyond 330 nm
1799 !-----------------------------------------------------------------------------
1800             qy1 = r10g4(iw)
1801             if( wc(iw) >= 330._dp .and. r10g5(iw) > 0._dp ) then
1802                phi1 = r10g4(iw)
1803                phi2 = r10g5(iw)
1804                phi20 = 1._dp - phi1
1805                ak300 = ((phi20 - phi2)/(phi2*phi20))/2.54e+19_dp
1806                akt = ak300*(1. + 61.69_dp*(1._dp - tlev(i)/300._dp)*(wc(iw)/329._dp - 1._dp))
1807                qy2 = 1._dp / ((1._dp/phi20) + t1*akt)
1808             else
1809                qy2 = r10g5(iw)
1810             end if
1811             qy2 = max( 0._dp,qy2 )
1812             qy2 = min( 1._dp,qy2 )
1813             sq(iw,i,j-1) = sig * qy1
1814             sq(iw,i,j)   = sig * qy2
1815          end do
1816       end do
1818       end subroutine r10
1820       subroutine r11( nz, tlev, airlev, j, jlabel )
1821 !-----------------------------------------------------------------------------
1822 ! purpose:
1823 ! provide product (cross section) x (quantum yield) for ch3cho photolysis:
1824 ! (a) ch3cho + hv -> ch3 + hco
1825 ! (b) ch3cho + hv -> ch4 + co
1826 ! (c) ch3cho + hv -> ch3co + h
1827 ! cross section: choice between
1828 ! (1) iupac 97 data, from martinez et al.
1829 ! (2) calvert and pitts
1830 ! (3) martinez et al., table 1 scanned from paper
1831 ! (4) kfa tabulations
1832 ! quantum yields: choice between
1833 ! (1) iupac 97, pressure correction using horowith and
1834 ! calvert, 1982
1835 ! (2) ncar data file, from moortgat, 1986
1836 !-----------------------------------------------------------------------------
1837 ! parameters:
1838 ! nw - integer, number of specified intervals + 1 in working (i)
1839 ! wavelength grid
1840 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
1841 ! working wavelength grid
1842 ! wc - real(dp), vector of center points of wavelength intervals in (i)
1843 ! working wavelength grid
1844 ! nz - integer, number of altitude levels in working altitude grid (i)
1845 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
1846 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
1847 ! j - integer, counter for number of weighting functions defined (io)
1848 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
1849 ! photolysis reaction defined, at each defined wavelength and
1850 ! at each defined altitude level
1851 ! jlabel - character*40, string identifier for each photolysis reaction (o)
1852 ! defined
1853 !-----------------------------------------------------------------------------
1854       implicit none
1855 !-----------------------------------------------------------------------------
1856 ! ... dummy arguments
1857 !-----------------------------------------------------------------------------
1858       integer, intent(in)    :: nz
1859       integer, intent(inout) :: j
1860       real(dp), intent(in)   :: tlev(nz)
1861       real(dp), intent(in)   :: airlev(nz)
1862       character(len=40), intent(out) :: jlabel(nj)
1863 !-----------------------------------------------------------------------------
1864 ! ... local variables
1865 !-----------------------------------------------------------------------------
1866       integer, parameter  :: mabs = 3
1867       integer, parameter  :: myld = 1
1868       real(dp), parameter :: c0 = 1._dp/2.465e19_dp
1870       integer  :: i, iw
1871       real(dp) :: qy1, qy2, qy3
1872       real(dp) :: sig, t
1873 !-----------------------------------------------------------------------------
1874 ! ... ch3cho photolysis
1875 ! 1: ch3 + hco
1876 ! 2: ch4 + co
1877 ! 3: ch3co + h
1878 !-----------------------------------------------------------------------------
1879       j = j+1
1880       jlabel(j) = 'ch3cho -> ch3 + hco'
1881       j = j+1
1882       jlabel(j) = 'ch3cho -> ch4 + co'
1883       j = j+1
1884       jlabel(j) = 'ch3cho -> ch3co + h'
1885 !-----------------------------------------------------------------------------
1886 ! ... options
1887 ! mabs for cross sections
1888 ! myld for quantum yields
1890 ! absorption:
1891 ! 1: iupac-97 data, from martinez et al.
1892 ! 2: calvert and pitts
1893 ! 3: martinez et al., table 1 scanned from paper
1894 ! 4: kfa tabulations, 6 choices, see file open statements
1896 ! quantum yield
1897 ! 1: dataj1/ch3cho/ch3cho_iup.yld
1898 ! pressure correction using horowitz and calvert 1982,
1899 ! based on slope/intercept of stern-volmer plots
1901 ! 2: ncar data file, from moortgat 1986.
1902 !-----------------------------------------------------------------------------
1903       do i = 1,nz
1904          t = airlev(i)*c0
1905          do iw = 1,nw-1
1906             sig = r11g(iw)
1907             qy1 = r11g1(iw)
1908             qy2 = r11g2(iw)
1909             qy3 = r11g3(iw)
1910 !-----------------------------------------------------------------------------
1911 ! ... pressure correction for channel 1, ch3 + cho
1912 ! based on horowitz and calvert 1982.
1913 !-----------------------------------------------------------------------------
1914             qy1 = qy1 * (1._dp + r11g4(iw))/(1._dp + r11g4(iw)*t)
1915             qy1 = min( 1._dp,max( 0._dp,qy1 ) )
1916             sq(iw,i,j-2) = sig * qy1
1917             sq(iw,i,j-1) = sig * qy2
1918             sq(iw,i,j)   = sig * qy3
1919          end do
1920       end do
1922       end subroutine r11
1924       subroutine r14( nz, tlev, airlev, j, jlabel )
1925 !-----------------------------------------------------------------------------
1926 ! purpose:
1927 ! provide the product (cross section) x (quantum yield) for ch3cocho
1928 ! photolysis:
1929 ! ch3cocho + hv -> products
1931 ! cross section: choice between
1932 ! (1) from meller et al., 1991, as tabulated by iupac 97
1933 ! 5 nm resolution (table 1) for < 402 nm
1934 ! 2 nm resolution (table 2) for > 402 nm
1935 ! (2) average at 1 nm of staffelbach et al., 1995, and
1936 ! meller et al., 1991
1937 ! (3) plum et al., 1983, as tabulated by kfa
1938 ! (4) meller et al., 1991 (0.033 nm res.), as tab. by kfa
1939 ! (5) meller et al., 1991 (1.0 nm res.), as tab. by kfa
1940 ! (6) staffelbach et al., 1995, as tabulated by kfa
1941 ! quantum yield: choice between
1942 ! (1) plum et al., fixed at 0.107
1943 ! (2) plum et al., divided by 2, fixed at 0.0535
1944 ! (3) staffelbach et al., 0.45 for < 300 nm, 0 for > 430 nm
1945 ! linear interp. in between
1946 ! (4) koch and moortgat, prv. comm., 1997
1947 !-----------------------------------------------------------------------------
1948 ! parameters:
1949 ! nw - integer, number of specified intervals + 1 in working (i)
1950 ! wavelength grid
1951 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
1952 ! working wavelength grid
1953 ! wc - real(dp), vector of center points of wavelength intervals in (i)
1954 ! working wavelength grid
1955 ! nz - integer, number of altitude levels in working altitude grid (i)
1956 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
1957 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
1958 ! j - integer, counter for number of weighting functions defined (io)
1959 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
1960 ! photolysis reaction defined, at each defined wavelength and
1961 ! at each defined altitude level
1962 ! jlabel - character*40, string identifier for each photolysis reaction (o)
1963 ! defined
1964 !-----------------------------------------------------------------------------
1965       implicit none
1966 !-----------------------------------------------------------------------------
1967 ! ... dummy arguments
1968 !-----------------------------------------------------------------------------
1969       integer, intent(in)    :: nz
1970       integer, intent(inout) :: j
1971       real(dp), intent(in)   :: tlev(nz)
1972       real(dp), intent(in)   :: airlev(nz)
1973       character(len=40), intent(out) :: jlabel(nj)
1974 !-----------------------------------------------------------------------------
1975 ! ... local variables
1976 !-----------------------------------------------------------------------------
1977       real(dp), parameter :: sig2 = .45_dp
1978       real(dp), parameter :: sig3 = 1._dp/130._dp
1980       integer  :: i, iw
1981       real(dp) :: phi0
1982       real(dp) :: kq
1983       real(dp) :: qy
1984 !-----------------------------------------------------------------------------
1985 ! ... ch3cocho photolysis
1986 !-----------------------------------------------------------------------------
1987       j = j+1
1988       jlabel(j) = 'ch3cocho -> products'
1989 !-----------------------------------------------------------------------------
1990 !           absorption:
1991 !           1:  from meller et al. (1991), as tabulated by iupac-97
1992 !               for wc < 402, use coarse data (5 nm, table 1)
1993 !               for wc > 402, use finer data (2 nm, table 2)
1994 !           2: average at 1nm of  staffelbach et al. 1995 and meller et al. 1991
1995 !               cross section from kfa tables:
1996 !           3: ch3cocho.001 - plum et al. 1983
1997 !           4: ch3cocho.002 - meller et al. 1991, 0.033 nm resolution
1998 !           5: ch3cocho.003 - meller et al. 1991, 1.0   nm resolution
1999 !           6: ch3cocho.004 - staffelbach et al. 1995
2001 !           quantum yield
2002 !           1:  plum et al., 0.107
2003 !           2:  plum et al., divided by two = 0.0535
2004 !           3:  staffelbach et al., 0.45 at wc .le. 300, 0 for wc .gt. 430, linear 
2005 !               interp in between
2006 !           4:  koch and moortgat, prv. comm. 1997. - pressure-dependent
2007 !         * 5:  Chen, Y., W. Wang, and L. Zhu, Wavelength-dependent photolysis of methylglyoxal
2008 !         *      in the 290-440 nm region, J Phys Chem A, 104, 11126-11131, 2000
2009 !-----------------------------------------------------------------------------
2010       do i = 1,nz
2011          do iw = 1,nw-1
2012             phi0 = 1._dp - (wc(iw) - 380._dp)/60._dp
2013             phi0 = max( 0._dp,min( phi0,1._dp ) )
2014             kq = 1.36e8_dp * exp( -8793._dp/wc(iw) )
2015             if( phi0 > 0._dp ) then
2016                if( wc(iw) >= 380._dp .and. wc(iw) <= 440._dp ) then
2017                   qy = phi0 / (phi0 + kq * airlev(i) * 760._dp/2.456e19_dp)
2018                else
2019                   qy = phi0
2020                end if
2021             else
2022                qy = 0._dp
2023             end if
2024             sq(iw,i,j) = r14g(iw) * qy
2025          end do
2026       end do
2028       end subroutine r14
2030       subroutine r15( nz, tlev, airlev, j, jlabel )
2031 !-----------------------------------------------------------------------------
2032 ! purpose:
2033 ! provide product (cross section) x (quantum yield) for ch3coch3 photolysis
2034 ! ch3coch3 + hv -> products
2036 ! cross section: choice between
2037 ! (1) calvert and pitts
2038 ! (2) martinez et al., 1991, alson in iupac 97
2039 ! (3) noaa, 1998, unpublished as of 01/98
2040 ! quantum yield: choice between
2041 ! (1) gardiner et al, 1984
2042 ! (2) iupac 97
2043 ! (3) mckeen et al., 1997
2044 !-----------------------------------------------------------------------------
2045 ! parameters:
2046 ! nw - integer, number of specified intervals + 1 in working (i)
2047 ! wavelength grid
2048 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
2049 ! working wavelength grid
2050 ! wc - real(dp), vector of center points of wavelength intervals in (i)
2051 ! working wavelength grid
2052 ! nz - integer, number of altitude levels in working altitude grid (i)
2053 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
2054 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
2055 ! j - integer, counter for number of weighting functions defined (io)
2056 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
2057 ! photolysis reaction defined, at each defined wavelength and
2058 ! at each defined altitude level
2059 ! jlabel - character*40, string identifier for each photolysis reaction (o)
2060 ! defined
2061 !-----------------------------------------------------------------------------
2063       implicit none
2065 !-----------------------------------------------------------------------------
2066 ! ... dummy arguments
2067 !-----------------------------------------------------------------------------
2068       integer, intent(in)    :: nz
2069       integer, intent(inout) :: j
2070       real(dp), intent(in)   :: tlev(nz)
2071       real(dp), intent(in)   :: airlev(nz)
2072       character(len=40), intent(out) :: jlabel(nj)
2073 !-----------------------------------------------------------------------------
2074 ! ... local variables
2075 !-----------------------------------------------------------------------------
2076       integer, parameter :: mabs = 2
2077       integer, parameter :: myld = 3
2079       integer :: i, iw
2080       real(dp) :: qy
2081       real(dp) :: sig
2082       real(dp) :: m, t, fco, fac, w
2084 !-----------------------------------------------------------------------------
2085 !       ... ch3coch3 photodissociation
2086 !-----------------------------------------------------------------------------
2087 !           absorption:
2088 !           1:  cross section from calvert and  pitts
2089 !           2:  martinez et al. 1991, also in iupac97
2090 !           3:  noaa 1998, unpublished as of jan 98.
2092 !           quantum yield
2093 !           1:  gardiner et al. 1984
2094 !           2:  iupac 97
2095 !           3:  mckeen, s. a., t. gierczak, j. b. burkholder, p. o. wennberg, t. f. hanisco,
2096 !               e. r. keim, r.-s. gao, s. c. liu, a. r. ravishankara, and d. w. fahey, 
2097 !               the photochemistry of acetone in the upper troposphere:  a source of 
2098 !               odd-hydrogen radicals, geophys. res. lett., 24, 3177-3180, 1997.
2099 !           4:  Blitz, M. A., D. E. Heard, M. J. Pilling, S. R. Arnold, and M. P. Chipperfield 
2100 !              (2004), Pressure and temperature-dependent quantum yields for the 
2101 !               photodissociation of acetone between 279 and 327.5 nm, Geophys. 
2102 !               Res. Lett., 31, L06111, doi:10.1029/2003GL018793.
2103 !-----------------------------------------------------------------------------
2104       j = j + 1
2105       jlabel(j) = 'ch3coch3 '
2107       do i = 1,nz
2108          m = airlev(i)
2109          t = tlev(i)
2110          do iw = 1,nw-1
2111             sig = r15g(iw)
2112             w   = wc(iw)
2113             call qyacet( w, t, m, fco, fac )
2114             qy = min( 1._dp,max( 0._dp,fac ) )
2115             sq(iw,i,j) = sig*qy
2116          end do
2117       end do
2119       end subroutine r15
2121       subroutine qyacet( w, t, m, fco, fac )
2122 !-----------------------------------------------------------------------------
2123 ! Compute acetone quantum yields according to the parameterization of:
2124 ! Blitz, M. A., D. E. Heard, M. J. Pilling, S. R. Arnold, and M. P. Chipperfield 
2125 !       (2004), Pressure and temperature-dependent quantum yields for the 
2126 !       photodissociation of acetone between 279 and 327.5 nm, Geophys. 
2127 !       Res. Lett., 31, L06111, doi:10.1029/2003GL018793.
2128 !-----------------------------------------------------------------------------
2130       implicit none
2132 !-----------------------------------------------------------------------------
2133 !       ... dummy arguments
2134 !-----------------------------------------------------------------------------
2135       real(dp), intent(in)  :: w            ! w = wavelength (nm)
2136       real(dp), intent(in)  :: t            ! T = temperature (K)
2137       real(dp), intent(in)  :: m            ! m = air number density (molec/cm^3)
2138       real(dp), intent(out) :: fco          ! fco = quantum yield for product CO
2139       real(dp), intent(out) :: fac          ! fac = quantum yield for product CH3CO (acetyl radical)
2141 !-----------------------------------------------------------------------------
2142 !       ... local variables
2143 !-----------------------------------------------------------------------------
2144       real(dp) :: a0, a1, a2, a3, a4
2145       real(dp) :: b0, b1, b2, b3, b4
2146       real(dp) :: c3
2147       real(dp) :: cA0, cA1, cA2, cA3, cA4
2148       real(dp) :: twrk
2149       real(dp) :: fwrk
2151 !-----------------------------------------------------------------------------
2152 !** set out-of-range values:
2153 ! use low pressure limits for shorter wavelengths
2154 ! set to zero beyound 327.5
2155 !-----------------------------------------------------------------------------
2156       if( w < 279._dp ) then
2157          fco = 0.05_dp
2158          fac = 0.95_dp
2159       else if( w > 327.5_dp ) then
2160          fco = 0._dp
2161          fac = 0._dp
2162       else
2163          twrk = t/295._dp
2164          fwrk = 1.e7_dp/w
2165 !-----------------------------------------------------------------------------
2166 !       ... CO (carbon monoxide) quantum yields
2167 !-----------------------------------------------------------------------------
2168          a0  = .350_dp * twrk**(-1.28_dp)
2169          b0  = .068_dp * twrk**(-2.65_dp)
2170          cA0 = exp( b0*(w - 248._dp) ) * a0 / (1._dp - a0)
2171          fco = 1._dp / (1._dp + cA0)
2172 !-----------------------------------------------------------------------------
2173 !       ... CH3CO (acetyl radical) quantum yields:
2174 !-----------------------------------------------------------------------------
2175          if( w >= 279._dp .and. w < 302._dp ) then
2176             a1  = 1.600e-19_dp * twrk**(-2.38_dp)
2177             b1  = 0.55e-3_dp   * twrk**(-3.19_dp)
2178             cA1 = a1 * exp( -b1*(fwrk - 33113._dp) )
2179             fac = (1._dp - fco) / (1._dp + cA1 * m)
2180          else if( w >= 302._dp .and. w < 327.5_dp ) then
2181             a2  = 1.62e-17_dp * twrk**(-10.03_dp)
2182             b2  = 1.79e-3_dp  * twrk**(-1.364_dp)
2183             cA2 = a2 * exp( -b2*(fwrk - 30488._dp) )
2184             a3  = 26.29_dp   * twrk**(-6.59_dp)
2185             b3  = 5.72e-7_dp * twrk**(-2.93_dp)
2186             c3  = 30006._dp   * twrk**(-0.064_dp)
2187             ca3 = a3 * exp( -b3*(fwrk - c3)**2._dp )
2188             a4  = 1.67e-15_dp * twrk**(-7.25_dp)
2189             b4  = 2.08e-3_dp  * twrk**(-1.16_dp)
2190             cA4 = a4 * exp( -b4*(fwrk - 30488._dp) )
2191             fac = (1._dp - fco) * (1._dp + cA3 + cA4 * m) &
2192                   /((1._dp + cA3 + cA2 * m)*(1._dp + cA4 * m))
2193          end if
2194       end if
2196       end subroutine qyacet
2198       subroutine r17( nz, tlev, airlev, j, jlabel )
2199 !-----------------------------------------------------------------------------
2200 ! purpose:
2201 ! provide product (cross section) x (quantum yield) for ch3ono2
2202 ! photolysis:
2203 ! ch3ono2 + hv -> ch3o + no2
2205 ! cross section: choice between
2206 ! (1) calvert and pitts, 1966
2207 ! (2) talukdar, burkholder, hunter, gilles, roberts,
2208 ! ravishankara, 1997
2209 ! (3) iupac 97, table of values for 198k
2210 ! (4) iupac 97, temperature-dependent equation
2211 ! (5) taylor et al, 1980
2212 ! (6) fit from roberts and fajer, 1989
2213 ! (7) rattigan et al., 1992
2214 ! (8) libuda and zabel, 1995
2215 ! quantum yield: assumed to be unity
2216 !-----------------------------------------------------------------------------
2217 ! parameters:
2218 ! nw - integer, number of specified intervals + 1 in working (i)
2219 ! wavelength grid
2220 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
2221 ! working wavelength grid
2222 ! wc - real(dp), vector of center points of wavelength intervals in (i)
2223 ! working wavelength grid
2224 ! nz - integer, number of altitude levels in working altitude grid (i)
2225 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
2226 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
2227 ! j - integer, counter for number of weighting functions defined (io)
2228 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
2229 ! photolysis reaction defined, at each defined wavelength and
2230 ! at each defined altitude level
2231 ! jlabel - character*40, string identifier for each photolysis reaction (o)
2232 ! defined
2233 !-----------------------------------------------------------------------------
2234       implicit none
2235 !-----------------------------------------------------------------------------
2236 ! ... dummy arguments
2237 !-----------------------------------------------------------------------------
2238       integer, intent(in) :: nz
2239       integer, intent(inout) :: j
2240       real(dp), intent(in) :: tlev(nz)
2241       real(dp), intent(in) :: airlev(nz)
2242       character(len=40), intent(out) :: jlabel(nj)
2243 !-----------------------------------------------------------------------------
2244 ! ... local variables
2245 !-----------------------------------------------------------------------------
2246       integer  :: i, iw
2247       real(dp) :: qy, t, sig
2248 !-----------------------------------------------------------------------------
2249 ! ... ch3ono2 photodissociation
2250 !-----------------------------------------------------------------------------
2251       j = j + 1
2252       jlabel(j) = 'ch3ono2 -> ch3o+no2'
2253 !-----------------------------------------------------------------------------
2254 ! ... mabs: absorption cross section options:
2255 ! 1: calvert and pitts 1966
2256 ! 2: talukdar, burkholder, hunter, gilles, roberts, ravishankara, 1997.
2257 ! 3: iupac-97, table of values for 298k.
2258 ! 4: iupac-97, temperature-dependent equation
2259 ! 5: taylor et al. 1980
2260 ! 6: fit from roberts and fajer, 1989
2261 ! 7: rattigan et al. 1992
2262 ! 8: libuda and zabel 1995
2263 !-----------------------------------------------------------------------------
2264       do i = 1,nz
2265          t = tlev(i) - 298._dp
2266          sq(:nw-1,i,j) = r17g(:nw-1) * exp( r17g1(:nw-1)*t )
2267       end do
2269       end subroutine r17
2271       subroutine r18( nz, tlev, airlev, j, jlabel )
2272 !-----------------------------------------------------------------------------
2273 ! purpose:
2274 ! provide product (cross section) x (quantum yield) for pan photolysis:
2275 ! pan + hv -> products
2277 ! cross section: from talukdar et al., 1995
2278 ! quantum yield: assumed to be unity
2279 !-----------------------------------------------------------------------------
2280 ! parameters:
2281 ! nw - integer, number of specified intervals + 1 in working (i)
2282 ! wavelength grid
2283 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
2284 ! working wavelength grid
2285 ! wc - real(dp), vector of center points of wavelength intervals in (i)
2286 ! working wavelength grid
2287 ! nz - integer, number of altitude levels in working altitude grid (i)
2288 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
2289 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
2290 ! j - integer, counter for number of weighting functions defined (io)
2291 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
2292 ! photolysis reaction defined, at each defined wavelength and
2293 ! at each defined altitude level
2294 ! jlabel - character*40, string identifier for each photolysis reaction (o)
2295 ! defined
2296 !-----------------------------------------------------------------------------
2297       implicit none
2298 !-----------------------------------------------------------------------------
2299 ! ... dummy arguments
2300 !-----------------------------------------------------------------------------
2301       integer, intent(in)    :: nz
2302       integer, intent(inout) :: j
2303       real(dp), intent(in)   :: tlev(nz)
2304       real(dp), intent(in)   :: airlev(nz)
2305       character(len=40), intent(out) :: jlabel(nj)
2306 !-----------------------------------------------------------------------------
2307 ! ... local variables
2308 !-----------------------------------------------------------------------------
2309       integer  :: i
2310       real(dp) :: t
2311 !-----------------------------------------------------------------------------
2312 ! ... pan photodissociation
2313 !-----------------------------------------------------------------------------
2314       j = j+1
2315       jlabel(j) = 'pan + hv -> products'
2316 !-----------------------------------------------------------------------------
2317 ! ... cross section from senum et al., 1984, j.phys.chem. 88/7, 1269-1270
2318 ! quantum yield
2319 ! yet unknown, but assumed to be 1.0 (talukdar et al., 1995)
2320 !-----------------------------------------------------------------------------
2321       do i = 1,nz
2322          t = tlev(i) - 298._dp
2323          sq(:nw-1,i,j) = r18g(:nw-1) * exp( r18g2(:nw-1)*t )
2324       end do
2326       end subroutine r18
2328       subroutine xs_mvk( nz, tlev, airlev )
2329 !-----------------------------------------------------------------------------
2330 ! purpose:
2331 ! provide product (cross section) x (quantum yield) for mvk photolysis:
2332 ! mvk + hv -> products
2333 !-----------------------------------------------------------------------------
2334 ! parameters:
2335 ! nw - integer, number of specified intervals + 1 in working (i)
2336 ! wavelength grid
2337 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
2338 ! working wavelength grid
2339 ! wc - real(dp), vector of center points of wavelength intervals in (i)
2340 ! working wavelength grid
2341 ! nz - integer, number of altitude levels in working altitude grid (i)
2342 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
2343 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
2344 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
2345 ! photolysis reaction defined, at each defined wavelength and
2346 ! at each defined altitude level
2347 !-----------------------------------------------------------------------------
2348       implicit none
2349 !-----------------------------------------------------------------------------
2350 ! ... dummy arguments
2351 !-----------------------------------------------------------------------------
2352       integer, intent(in)  :: nz
2353       real(dp), intent(in) :: tlev(nz)
2354       real(dp), intent(in) :: airlev(nz)
2355 !-----------------------------------------------------------------------------
2356 ! ... local variables
2357 !-----------------------------------------------------------------------------
2358       integer  :: k
2359       real(dp) :: qy(nw-1)
2360       real(dp) :: denomi
2362 !     do k = 1,nz
2363 !        qy = .0766 + .09415*exp( -airlev(k)/3.222e18 )
2364 !        sq(:nw-1,k,27) = qy * acrolein_xs(:nw-1)
2365 !     end do
2366       do k = 1,nz
2367          denomi         = 1._dp/(5.5_dp + 9.2e-19_dp*airlev(k))
2368          qy(:nw-1)      = exp( -.055_dp*(wc(:nw-1) - 308._dp) )*denomi
2369          sq(:nw-1,k,27) = min( qy(:nw-1),1._dp ) * acrolein_xs(:nw-1)
2370       end do
2372       end subroutine xs_mvk
2374       subroutine xs_macr( nz, tlev, airlev )
2375 !-----------------------------------------------------------------------------
2376 ! purpose:
2377 ! provide product (cross section) x (quantum yield) for macr photolysis:
2378 ! macr + hv -> products
2379 !-----------------------------------------------------------------------------
2380 ! parameters:
2381 ! nw - integer, number of specified intervals + 1 in working (i)
2382 ! wavelength grid
2383 ! wl - real(dp), vector of lower limits of wavelength intervals in (i)
2384 ! working wavelength grid
2385 ! wc - real(dp), vector of center points of wavelength intervals in (i)
2386 ! working wavelength grid
2387 ! nz - integer, number of altitude levels in working altitude grid (i)
2388 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
2389 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
2390 ! sq - real(dp), cross section x quantum yield (cm^2) for each (o)
2391 ! photolysis reaction defined, at each defined wavelength and
2392 ! at each defined altitude level
2393 !-----------------------------------------------------------------------------
2394       implicit none
2395 !-----------------------------------------------------------------------------
2396 ! ... dummy arguments
2397 !-----------------------------------------------------------------------------
2398       integer, intent(in)  :: nz
2399       real(dp), intent(in) :: tlev(nz)
2400       real(dp), intent(in) :: airlev(nz)
2401 !-----------------------------------------------------------------------------
2402 ! ... local variables
2403 !-----------------------------------------------------------------------------
2404       integer  :: l, k
2405       real(dp) :: phi, ph313, ph334, qy
2406       real(dp) :: factor
2407 !     do k = 1,nz
2408 !        ph313 = .004 + 1./(.086 + 1.613e-17*airlev(k))
2409 !        ph334 = .005 + 1./(9.54 + 6.170e-17*airlev(k))
2410 !        factor = (ph334 - ph313)/21.
2411 !        do l = 1,nw-1
2412 !           phi = ph313 + factor*(wc(l) - 313.)
2413 !           qy = max( 0._dp, min( 1._dp, phi ) )
2414 !           sq(l,k,28) = qy * acrolein_xs(l)
2415 !        end do
2416 !     end do
2417 !-----------------------------------------------------------------------------
2418 !       ... from mz4.5
2419 !-----------------------------------------------------------------------------
2420       do k = 1,nz
2421          sq(:nw-1,k,28) = (/ 0._dp, 0._dp, 0._dp, 0._dp, 0._dp, &
2422                              0._dp, 0._dp, 0._dp, 3.881e-23_dp, 5.908e-23_dp, &
2423                              3.182e-22_dp, 5.087e-22_dp, 6.586e-22_dp, 1.858e-22_dp, 0._dp, &
2424                              0._dp, 0._dp /)
2425       end do
2427       end subroutine xs_macr
2429       subroutine xs_hyac( nz, tlev, airlev )
2430 !-----------------------------------------------------------------------------
2431 ! purpose:
2432 ! provide product (cross section) x (quantum yield) for hyac photolysis:
2433 ! hyac + hv -> products
2434 !-----------------------------------------------------------------------------
2435 ! parameters:
2436 ! nz - integer, number of altitude levels in working altitude grid (i)
2437 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
2438 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
2439 !-----------------------------------------------------------------------------
2441       implicit none
2443 !-----------------------------------------------------------------------------
2444 ! ... dummy arguments
2445 !-----------------------------------------------------------------------------
2446       integer, intent(in)  :: nz
2447       real(dp), intent(in) :: tlev(nz)
2448       real(dp), intent(in) :: airlev(nz)
2450 !-----------------------------------------------------------------------------
2451 ! ... local variables
2452 !-----------------------------------------------------------------------------
2453       integer  :: k
2455 !-----------------------------------------------------------------------------
2456 !       ... from mz4.5
2457 !-----------------------------------------------------------------------------
2458       do k = 1,nz
2459          sq(:nw-1,k,29) = (/ 0._dp, 0._dp, 0._dp, 0._dp, 0._dp, &
2460                              0._dp, 0._dp, 0._dp, 2.164e-21_dp, 1.714e-20_dp, &
2461                              4.927e-21_dp, 1.052e-21_dp, 2.39e-22_dp, 0._dp, 0._dp, &
2462                              0._dp, 0._dp /)
2463       end do
2465       end subroutine xs_hyac
2467       subroutine xs_glyald( nz, tlev, airlev )
2468 !-----------------------------------------------------------------------------
2469 ! purpose:
2470 ! provide product (cross section) x (quantum yield) for glyald photolysis:
2471 ! glyald + hv -> products
2472 !-----------------------------------------------------------------------------
2473 ! parameters:
2474 ! nz - integer, number of altitude levels in working altitude grid (i)
2475 ! tlev - real(dp), temperature (k) at each specified altitude level (i)
2476 ! airlev - real(dp), air density (molec/cc) at each altitude level (i)
2477 !-----------------------------------------------------------------------------
2479       implicit none
2481 !-----------------------------------------------------------------------------
2482 ! ... dummy arguments
2483 !-----------------------------------------------------------------------------
2484       integer, intent(in)  :: nz
2485       real(dp), intent(in) :: tlev(nz)
2486       real(dp), intent(in) :: airlev(nz)
2488 !-----------------------------------------------------------------------------
2489 ! ... local variables
2490 !-----------------------------------------------------------------------------
2491       integer  :: k
2493 !-----------------------------------------------------------------------------
2494 !       ... from mz4.5
2495 !-----------------------------------------------------------------------------
2496       do k = 1,nz
2497          sq(:nw-1,k,30) = (/ 0._dp, 0._dp, 0._dp, 0._dp, 0._dp, &
2498                              2.864e-22_dp, 1.123e-19_dp, 2.659e-20_dp, 4.5e-21_dp, 1.998e-20_dp, &
2499                              1.6e-20_dp, 6.617e-21_dp, 1.151e-21_dp, 0._dp, 0._dp, &
2500                              0._dp, 0._dp /)
2501       end do
2503       end subroutine xs_glyald
2505     END MODULE module_wave_data