1 | c*********************************************************************** |
---|
2 | subroutine NLTE_leedat |
---|
3 | |
---|
4 | c reads planetary and molecular parameters |
---|
5 | |
---|
6 | c jan 98 malv first version |
---|
7 | c jul 2011 malv+fgg adapted to LMD-MGCM |
---|
8 | c*********************************************************************** |
---|
9 | |
---|
10 | implicit none |
---|
11 | |
---|
12 | include 'datafile.h' |
---|
13 | include 'nlte_paramdef.h' |
---|
14 | include 'nlte_commons.h' |
---|
15 | |
---|
16 | |
---|
17 | c local variables |
---|
18 | integer i,j, k,lun1, lun2 |
---|
19 | integer :: ib = 0 |
---|
20 | integer isot |
---|
21 | character isotcode*2 |
---|
22 | character ibcode1*1 |
---|
23 | |
---|
24 | c formats |
---|
25 | 132 format (i2) |
---|
26 | 101 format(i1) |
---|
27 | c*********************************************************************** |
---|
28 | |
---|
29 | lun1 = 1 |
---|
30 | lun2 = 2 |
---|
31 | |
---|
32 | do k=1,nisot |
---|
33 | ! encode (2,132,isotcode) indexisot(k) |
---|
34 | write (isotcode,132) indexisot(k) |
---|
35 | open (lun1, |
---|
36 | @ file=trim(datafile)//'/NLTEDAT/enelow'//isotcode//'.dat', |
---|
37 | @ status='old') |
---|
38 | open (lun2, |
---|
39 | @ file=trim(datafile)//'/NLTEDAT/deltanu'//isotcode//'.dat', |
---|
40 | @ status='old') |
---|
41 | read (lun1,*) |
---|
42 | read (lun2,*) |
---|
43 | read (lun1,*) (elow(k,i), i=1,nb) |
---|
44 | read (lun2,*) (deltanu(k,i), i=1,nb) |
---|
45 | close (lun1) |
---|
46 | close (lun2) |
---|
47 | end do |
---|
48 | |
---|
49 | |
---|
50 | c Call to rhist |
---|
51 | |
---|
52 | hfile1='hid' |
---|
53 | ! if (ib.eq.13 .or. ib.eq.14 ) hfile1 = dirspec//'his' |
---|
54 | if (ib.eq.13 .or. ib.eq.14 ) hfile1 = 'his' |
---|
55 | |
---|
56 | ib=1 |
---|
57 | do isot=1,4 |
---|
58 | c Cases 1,2,3,4 |
---|
59 | if (isot.eq.1) hisfile = hfile1//'26-1.dat' |
---|
60 | if (isot.eq.2) hisfile = hfile1//'28-1.dat' |
---|
61 | if (isot.eq.3) hisfile = hfile1//'36-1.dat' |
---|
62 | if (isot.eq.4) hisfile = hfile1//'27-1.dat' |
---|
63 | call rhist(1.0) |
---|
64 | if (isot.eq.1) then !Case 1 |
---|
65 | mm_c1=mm |
---|
66 | nbox_c1=nbox |
---|
67 | tmin_c1=tmin |
---|
68 | tmax_c1=tmax |
---|
69 | do i=1,nbox_max |
---|
70 | no_c1(i)=no(i) |
---|
71 | dist_c1(i)=dist(i) |
---|
72 | do j=1,nhist |
---|
73 | sk1_c1(j,i)=sk1(j,i) |
---|
74 | xls1_c1(j,i)=xls1(j,i) |
---|
75 | xln1_c1(j,i)=xln1(j,i) |
---|
76 | xld1_c1(j,i)=xld1(j,i) |
---|
77 | enddo |
---|
78 | enddo |
---|
79 | do j=1,nhist |
---|
80 | thist_c1(j)=thist(j) |
---|
81 | enddo |
---|
82 | else if(isot.eq.2) then !Case 2 |
---|
83 | mm_c2=mm |
---|
84 | nbox_c2=nbox |
---|
85 | tmin_c2=tmin |
---|
86 | tmax_c2=tmax |
---|
87 | do i=1,nbox_max |
---|
88 | no_c2(i)=no(i) |
---|
89 | dist_c2(i)=dist(i) |
---|
90 | do j=1,nhist |
---|
91 | sk1_c2(j,i)=sk1(j,i) |
---|
92 | xls1_c2(j,i)=xls1(j,i) |
---|
93 | xln1_c2(j,i)=xln1(j,i) |
---|
94 | xld1_c2(j,i)=xld1(j,i) |
---|
95 | enddo |
---|
96 | enddo |
---|
97 | do j=1,nhist |
---|
98 | thist_c2(j)=thist(j) |
---|
99 | enddo |
---|
100 | else if (isot.eq.3) then ! Case 3 |
---|
101 | mm_c3=mm |
---|
102 | nbox_c3=nbox |
---|
103 | tmin_c3=tmin |
---|
104 | tmax_c3=tmax |
---|
105 | do i=1,nbox_max |
---|
106 | no_c3(i)=no(i) |
---|
107 | dist_c3(i)=dist(i) |
---|
108 | do j=1,nhist |
---|
109 | sk1_c3(j,i)=sk1(j,i) |
---|
110 | xls1_c3(j,i)=xls1(j,i) |
---|
111 | xln1_c3(j,i)=xln1(j,i) |
---|
112 | xld1_c3(j,i)=xld1(j,i) |
---|
113 | enddo |
---|
114 | enddo |
---|
115 | do j=1,nhist |
---|
116 | thist_c3(j)=thist(j) |
---|
117 | enddo |
---|
118 | else if (isot.eq.4) then ! Case 4 |
---|
119 | mm_c4=mm |
---|
120 | nbox_c4=nbox |
---|
121 | tmin_c4=tmin |
---|
122 | tmax_c4=tmax |
---|
123 | do i=1,nbox_max |
---|
124 | no_c4(i)=no(i) |
---|
125 | dist_c4(i)=dist(i) |
---|
126 | do j=1,nhist |
---|
127 | sk1_c4(j,i)=sk1(j,i) |
---|
128 | xls1_c4(j,i)=xls1(j,i) |
---|
129 | xln1_c4(j,i)=xln1(j,i) |
---|
130 | xld1_c4(j,i)=xld1(j,i) |
---|
131 | enddo |
---|
132 | enddo |
---|
133 | do j=1,nhist |
---|
134 | thist_c4(j)=thist(j) |
---|
135 | enddo |
---|
136 | endif |
---|
137 | enddo |
---|
138 | do ib=2,4 |
---|
139 | isot=1 |
---|
140 | write (ibcode1,101) ib |
---|
141 | hisfile = hfile1//'26-'//ibcode1//'.dat' |
---|
142 | call rhist (1.0) |
---|
143 | if (ib.eq.2) then !Case 5 |
---|
144 | mm_c5=mm |
---|
145 | nbox_c5=nbox |
---|
146 | tmin_c5=tmin |
---|
147 | tmax_c5=tmax |
---|
148 | do i=1,nbox_max |
---|
149 | no_c5(i)=no(i) |
---|
150 | dist_c5(i)=dist(i) |
---|
151 | do j=1,nhist |
---|
152 | sk1_c5(j,i)=sk1(j,i) |
---|
153 | xls1_c5(j,i)=xls1(j,i) |
---|
154 | xln1_c5(j,i)=xln1(j,i) |
---|
155 | xld1_c5(j,i)=xld1(j,i) |
---|
156 | enddo |
---|
157 | enddo |
---|
158 | do j=1,nhist |
---|
159 | thist_c5(j)=thist(j) |
---|
160 | enddo |
---|
161 | else if (ib.eq.3) then !Case 6 |
---|
162 | mm_c6=mm |
---|
163 | nbox_c6=nbox |
---|
164 | tmin_c6=tmin |
---|
165 | tmax_c6=tmax |
---|
166 | do i=1,nbox_max |
---|
167 | no_c6(i)=no(i) |
---|
168 | dist_c6(i)=dist(i) |
---|
169 | do j=1,nhist |
---|
170 | sk1_c6(j,i)=sk1(j,i) |
---|
171 | xls1_c6(j,i)=xls1(j,i) |
---|
172 | xln1_c6(j,i)=xln1(j,i) |
---|
173 | xld1_c6(j,i)=xld1(j,i) |
---|
174 | enddo |
---|
175 | enddo |
---|
176 | do j=1,nhist |
---|
177 | thist_c6(j)=thist(j) |
---|
178 | enddo |
---|
179 | else if (ib.eq.4) then !Case 7 |
---|
180 | mm_c7=mm |
---|
181 | nbox_c7=nbox |
---|
182 | tmin_c7=tmin |
---|
183 | tmax_c7=tmax |
---|
184 | do i=1,nbox_max |
---|
185 | no_c7(i)=no(i) |
---|
186 | dist_c7(i)=dist(i) |
---|
187 | do j=1,nhist |
---|
188 | sk1_c7(j,i)=sk1(j,i) |
---|
189 | xls1_c7(j,i)=xls1(j,i) |
---|
190 | xln1_c7(j,i)=xln1(j,i) |
---|
191 | xld1_c7(j,i)=xld1(j,i) |
---|
192 | enddo |
---|
193 | enddo |
---|
194 | do j=1,nhist |
---|
195 | thist_c7(j)=thist(j) |
---|
196 | enddo |
---|
197 | endif |
---|
198 | enddo |
---|
199 | |
---|
200 | c end |
---|
201 | return |
---|
202 | |
---|
203 | end |
---|
204 | |
---|
205 | |
---|
206 | |
---|
207 | c ******************************************************************* |
---|
208 | |
---|
209 | subroutine rhist (factor_comp) |
---|
210 | |
---|
211 | c reads histogram data arrays created by ~/spectral/his.for |
---|
212 | c malv nov-98 add average distance between lines for overlapp |
---|
213 | |
---|
214 | c ******************************************************************* |
---|
215 | |
---|
216 | |
---|
217 | implicit none |
---|
218 | |
---|
219 | include 'nlte_paramdef.h' |
---|
220 | include 'nlte_commons.h' |
---|
221 | include 'datafile.h' |
---|
222 | |
---|
223 | c arguments |
---|
224 | real factor_comp |
---|
225 | |
---|
226 | c local variables |
---|
227 | integer j, r |
---|
228 | real*8 sk1_aux, xls1_aux, xln1_aux, xld1_aux,weight,nu0 |
---|
229 | character tonto*50 |
---|
230 | |
---|
231 | c formats |
---|
232 | ! 100 format(80a1) ! Esto es si fuese byte dummy(80) |
---|
233 | 100 format(a80) ! Esto es si fuese character dummy*80 |
---|
234 | 150 format(a50) ! Esto es si fuese character dummy*80 |
---|
235 | |
---|
236 | c *************** |
---|
237 | |
---|
238 | open(unit=3, |
---|
239 | $ file=trim(datafile)//'/NLTEDAT/' |
---|
240 | $ //hisfile(1:len_trim(hisfile)),status='old') |
---|
241 | !read(3,100) dummy |
---|
242 | read(3,150) tonto |
---|
243 | read(3,*) weight |
---|
244 | read(3,*) mm |
---|
245 | read(3,*) nu0 |
---|
246 | read(3,*) nbox |
---|
247 | !read(3,'(a)') dumm |
---|
248 | read(3,'(a)') tonto |
---|
249 | |
---|
250 | if ( nbox .gt. nbox_max ) then |
---|
251 | write (*,*) ' nbox too large in input file ', hisfile |
---|
252 | stop ' Check maximum number nbox_max in mz1d.par ' |
---|
253 | endif |
---|
254 | do 1 j=1,mm ! for each temperature |
---|
255 | read(3,*) thist(j) |
---|
256 | do r=1,nbox ! for each box |
---|
257 | read(3,*) no(r), sk1(j,r), xls1(j,r),xln1(j,r),xld1(j,r), |
---|
258 | @ dist(r) |
---|
259 | c xld1(j,r)=xld1(j,r)*0.83255 !0.83255=sqrt(log(2)) |
---|
260 | enddo |
---|
261 | 1 continue |
---|
262 | tmax=thist(1) |
---|
263 | tmin=thist(mm) |
---|
264 | |
---|
265 | !close(unit=3,dispose='save') |
---|
266 | close(unit=3) |
---|
267 | |
---|
268 | |
---|
269 | do 2 j=1,mm |
---|
270 | do r=1,nbox |
---|
271 | sk1(j,r) = sk1(j,r) * factor_comp |
---|
272 | enddo |
---|
273 | 2 continue |
---|
274 | |
---|
275 | |
---|
276 | return |
---|
277 | end |
---|
278 | |
---|
279 | |
---|
280 | |
---|
281 | |
---|
282 | c*********************************************************************** |
---|
283 | subroutine leetvt |
---|
284 | |
---|
285 | c reads input vibr. temps. from external files or sets lte values |
---|
286 | c according to the driver table |
---|
287 | |
---|
288 | c jul 2011 malv+fgg adapted to LMD-MGCM |
---|
289 | c malv Jan 07 Add new vertical fine-grid for NLTE |
---|
290 | c jan 98 malv based on solar10sub |
---|
291 | c*********************************************************************** |
---|
292 | |
---|
293 | implicit none |
---|
294 | |
---|
295 | include 'nlte_paramdef.h' |
---|
296 | include 'nlte_commons.h' |
---|
297 | |
---|
298 | c local variables |
---|
299 | integer i |
---|
300 | real*8 zld(nl), zyd(nzy) |
---|
301 | real*8 xvt11(nzy), xvt21(nzy), xvt31(nzy), xvt41(nzy) |
---|
302 | |
---|
303 | c*********************************************************************** |
---|
304 | |
---|
305 | do i=1,nzy |
---|
306 | zyd(i) = dble(zy(i)) |
---|
307 | xvt11(i)= dble( ty(i) ) |
---|
308 | xvt21(i)= dble( ty(i) ) |
---|
309 | xvt31(i)= dble( ty(i) ) |
---|
310 | xvt41(i)= dble( ty(i) ) |
---|
311 | end do |
---|
312 | |
---|
313 | |
---|
314 | c interpolate to the nlte subgrid |
---|
315 | |
---|
316 | do i=1,nl |
---|
317 | zld(i) = dble( zl(i) ) |
---|
318 | enddo |
---|
319 | call interdp ( v626t1,zld,nl, xvt11,zyd,nzy, 1) |
---|
320 | call interdp ( v628t1,zld,nl, xvt21,zyd,nzy, 1) |
---|
321 | call interdp ( v636t1,zld,nl, xvt31,zyd,nzy, 1) |
---|
322 | call interdp ( v627t1,zld,nl, xvt41,zyd,nzy, 1) |
---|
323 | |
---|
324 | |
---|
325 | c end |
---|
326 | return |
---|
327 | end |
---|
328 | |
---|
329 | |
---|
330 | |
---|
331 | c*********************************************************************** |
---|
332 | |
---|
333 | subroutine getk (tt) |
---|
334 | |
---|
335 | c jan 98 malv version for mz1d. copied from solar10/getk.f |
---|
336 | c jul 2011 malv+fgg adapted to LMD-MGCM |
---|
337 | c*********************************************************************** |
---|
338 | |
---|
339 | implicit none |
---|
340 | |
---|
341 | include 'nlte_paramdef.h' |
---|
342 | include 'nlte_commons.h' |
---|
343 | |
---|
344 | c arguments |
---|
345 | real tt ! i. temperature |
---|
346 | |
---|
347 | !! local variables: |
---|
348 | real*8 k1x, k7x,k7xa,k7xb |
---|
349 | real*8 k3x, k3xaa,k3xac,k3xab,k3xbb,k3xba,k3xbc |
---|
350 | real*8 k3xco2,k3xn2,k3xco, k6x,k6x1,k6x2 |
---|
351 | real*8 k20x,k20xa,k20xb,k20xc |
---|
352 | real*8 k19xca,k19xcb,k19xcc |
---|
353 | real*8 k19xba,k19xbb,k19xbc |
---|
354 | real*8 k19xaa,k19xab,k19xac |
---|
355 | real*8 k21x,k21xa,k21xb,k21xc |
---|
356 | real*8 anu, factor , k21xa_626 |
---|
357 | real tt1,tt2, de |
---|
358 | integer i |
---|
359 | |
---|
360 | c*********************************************************************** |
---|
361 | |
---|
362 | co2i(001) + n2 ---> co2i + n2(1) k1 (not considered in the model |
---|
363 | c k1(i) i = 1 --- 626 |
---|
364 | ! 2 --- 636 |
---|
365 | ! 3 --- 628 |
---|
366 | ! 4 --- 627 |
---|
367 | |
---|
368 | ! k1x = 5.d-13 * sqrt(300.d0/tt) |
---|
369 | ! do i=1,nisot |
---|
370 | ! k1(i) = k1x * rf1 |
---|
371 | ! k1p(i) = k1(i) * exp( -ee/tt *1.d0* (-nun2+nu(i,4)) ) |
---|
372 | ! end do |
---|
373 | |
---|
374 | co2(001) + co2i ---> co2 + co2i(001) k2 (vv1 in table 4, paper i) |
---|
375 | c k2i i = x --- 628 |
---|
376 | ! y --- 636 |
---|
377 | ! z --- 627 |
---|
378 | |
---|
379 | k2a = 6.8d-12 * sqrt(tt) ! delta(e)< 42 cm-1 |
---|
380 | k2b = 3.6d-11 * sqrt(tt) * exp(-65.6557/26.3) ! > 42 cm-1 see table 3 |
---|
381 | k2a = k2a * rf2desac |
---|
382 | k2b = k2b * rf2desac |
---|
383 | |
---|
384 | k2x = 6.8d-12 * sqrt(tt) |
---|
385 | k2y = 3.6d-11 * sqrt(tt) * exp(-65.6557/26.3) |
---|
386 | k2z = 6.8d-12 * sqrt(tt) |
---|
387 | k2x = k2x * rf2iso |
---|
388 | k2y = k2y * rf2iso |
---|
389 | k2z = k2z * rf2iso |
---|
390 | k2xp = k2x * exp( dble( -ee/tt * (nu(1,4)-nu(2,4)) ) ) |
---|
391 | k2yp = k2y * exp( dble( -ee/tt * (nu(1,4)-nu(3,4)) ) ) |
---|
392 | k2zp = k2z * exp( dble( -ee/tt * (nu(1,4)-nu(4,4)) ) ) |
---|
393 | |
---|
394 | ! these are vt1 in table 3, paper i |
---|
395 | co2i(001) + m ---> co2i(0v0) + m k3 |
---|
396 | co2i(001) + o3p ---> co2i(0v0) + o3p k7 |
---|
397 | c k3vm(i) m = a --- co2 v = a --- 3 i = 1,2,3,4 |
---|
398 | ! b --- n2,o2 b --- 2 |
---|
399 | ! c --- co |
---|
400 | c k7v(i) v = a --- 3 i = 1,2,3,4 |
---|
401 | ! b --- 2 |
---|
402 | |
---|
403 | k7x = 2.0d-13*sqrt(tt/300.d0) |
---|
404 | k7x = k7x * rf7 |
---|
405 | |
---|
406 | if (iopt3.eq.0) then |
---|
407 | |
---|
408 | k3x = 2.2d-15 + 1.14d-10 * exp( dble(-76.75/tt**(1.d0/3.d0)) ) |
---|
409 | k3xaa = 3.0d-15 + 1.72d-10 * exp( dble(-76.75/tt**(1.d0/3.d0))) |
---|
410 | k3xac = 2.2d-15 + 9.66d-11 * exp( dble(-76.75/tt**(1.d0/3.d0))) |
---|
411 | k3x = k3x * rf3 |
---|
412 | k3xaa = k3xaa * rf3 |
---|
413 | k3xac = k3xac * rf3 |
---|
414 | |
---|
415 | tt1=220.0 !500.0 !220.0 |
---|
416 | tt2=250.0 !250.0 |
---|
417 | if(tt.le.tt1)then |
---|
418 | k3xab = k3x |
---|
419 | k3xbb = 0.d0 |
---|
420 | k7xa=k7x |
---|
421 | k7xb=0.d0 |
---|
422 | else if(tt.gt.tt2)then |
---|
423 | k3xab = 0.d0 |
---|
424 | k3xbb = k3x |
---|
425 | k7xa=0.d0 |
---|
426 | k7xb=k7x |
---|
427 | else |
---|
428 | k3xab = k3x/30.d0*(tt2-tt) |
---|
429 | k3xbb = k3x/30.d0*(tt-tt1) |
---|
430 | k7xa=k7x/30.d0*(tt2-tt) |
---|
431 | k7xb=k7x/30.d0*(tt-tt1) |
---|
432 | end if |
---|
433 | k3xba = k3xbb |
---|
434 | k3xbc = k3xbb |
---|
435 | |
---|
436 | elseif (iopt3.gt.0) then ! bauer et. al., 1987 |
---|
437 | |
---|
438 | if (tt.ge.190. .and. tt.le.250.) then |
---|
439 | factor = 0.9d0 + dble( (0.1-0.9)/(250.-190.) * (tt-190.) ) |
---|
440 | elseif (tt.lt.190.) then |
---|
441 | factor = 0.9d0 |
---|
442 | elseif (tt.gt.250.) then |
---|
443 | factor = 0.1d0 |
---|
444 | end if |
---|
445 | |
---|
446 | k3xn2 = 2.2d-15 + 1.14d-10 * exp(dble( -76.75/tt**(1.d0/3.d0))) |
---|
447 | k3xn2 = k3xn2 * rf3 |
---|
448 | k3xab = k3xn2 * factor |
---|
449 | k3xbb = k3xn2 * (1.-factor) |
---|
450 | |
---|
451 | k7xa = k7x * factor |
---|
452 | k7xb = k7x * (1.-factor) |
---|
453 | |
---|
454 | if (iopt3.eq.1) then |
---|
455 | |
---|
456 | if (tt.le.148.8) then |
---|
457 | k3xco2 = 13.8 - 0.1807 * (tt-140.) |
---|
458 | elseif (tt.ge.148.8 .and. tt.le.159.6) then |
---|
459 | k3xco2 = 12.21 - 0.1787 * (tt-148.8) |
---|
460 | elseif (tt.ge.159.6 .and. tt.le.171.0) then |
---|
461 | k3xco2 = 10.28 - 0.04035 * (tt-159.6) |
---|
462 | elseif (tt.ge.171.0 .and. tt.le.186.4) then |
---|
463 | k3xco2 = 9.82 - 0.027273 * (tt-171.0) |
---|
464 | elseif (tt.ge.186.4 .and. tt.le.244.1) then |
---|
465 | k3xco2 = 9.4 + 0.002253 * (tt-186.4) |
---|
466 | elseif (tt.ge.244.1 .and. tt.le.300) then |
---|
467 | k3xco2 = 9.53 + 0.02129 * (tt-244.1) |
---|
468 | elseif (tt.ge.300 .and. tt.le.336.1) then |
---|
469 | k3xco2 = 10.72 + 0.052632 * (tt-300) |
---|
470 | elseif (tt.ge.336.1 .and. tt.le.397.0) then |
---|
471 | k3xco2 = 12.62 + 0.0844 * (tt-336.1) |
---|
472 | elseif (tt.ge.397.0 .and. tt.le.523.4) then |
---|
473 | k3xco2 = 17.76 + 0.2615 * (tt-397.) |
---|
474 | end if |
---|
475 | k3xco2 = k3xco2 * 1.d-15 * rf3 |
---|
476 | k3xaa = 0.82d0 * k3xco2 |
---|
477 | k3xba = 0.18d0 * k3xco2 |
---|
478 | |
---|
479 | if (tt.le.163.) then |
---|
480 | k3xco = 10.58 - 0.093 * (tt-140) |
---|
481 | elseif (tt.ge.163. .and. tt.le.180.) then |
---|
482 | k3xco = 8.44 - 0.05353 * (tt-163.) |
---|
483 | elseif (tt.ge.180. .and. tt.le.196.) then |
---|
484 | k3xco = 7.53 - 0.034375 * (tt-180.) |
---|
485 | elseif (tt.ge.196. .and. tt.le.248.) then |
---|
486 | k3xco = 6.98 - 0.0108 * (tt-196.) |
---|
487 | elseif (tt.ge.248. .and. tt.le.301.) then |
---|
488 | k3xco = 6.42 + 0.01415 * (tt-248.) |
---|
489 | elseif (tt.ge.301. .and. tt.le.353.) then |
---|
490 | k3xco = 7.17 + 0.02865 * (tt-301.) |
---|
491 | end if |
---|
492 | k3xac = k3xco * 1.d-15 * rf3 |
---|
493 | k3xbc = 0.d0 |
---|
494 | |
---|
495 | elseif (iopt3.eq.2) then ! revision for the papers (feb 93) |
---|
496 | |
---|
497 | k3xco2 = 7.3d-14 * exp( -850.3/tt + 86523/tt**2.d0 ) |
---|
498 | k3xco2 = k3xco2 * rf3 |
---|
499 | k3xaa = 0.82d0 * k3xco2 |
---|
500 | k3xba = 0.18d0 * k3xco2 |
---|
501 | |
---|
502 | k3xco = 1.7d-14 * exp( -448.3/tt + 53636/tt**2.d0 ) |
---|
503 | k3xac = k3xco * rf3 |
---|
504 | k3xbc = 0.d0 |
---|
505 | |
---|
506 | end if |
---|
507 | |
---|
508 | end if |
---|
509 | |
---|
510 | do i=1,nisot |
---|
511 | k3aa(i) = k3xaa |
---|
512 | k3ba(i) = k3xba |
---|
513 | k3ab(i) = k3xab |
---|
514 | k3bb(i) = k3xbb |
---|
515 | k3ac(i) = k3xac |
---|
516 | k3bc(i) = k3xbc |
---|
517 | anu = nu(i,4)-nu(i,3) |
---|
518 | ! anu = nu(i,4)-nu(i,3)+70 |
---|
519 | k3aap(i) = k3aa(i) * exp( -ee/tt * anu )/6.d0 |
---|
520 | k3abp(i) = k3ab(i) * exp( -ee/tt * anu )/6.d0 |
---|
521 | k3acp(i) = k3ac(i) * exp( -ee/tt * anu )/6.d0 |
---|
522 | anu = nu(i,4)-nu(i,2) |
---|
523 | ! anu = nu(i,4)-nu(i,2)+40 |
---|
524 | k3bap(i) = k3ba(i) * exp( -ee/tt * anu )/4.d0 |
---|
525 | k3bbp(i) = k3bb(i) * exp( -ee/tt * anu )/4.d0 |
---|
526 | k3bcp(i) = k3bc(i) * exp( -ee/tt * anu )/4.d0 |
---|
527 | |
---|
528 | k7a(i) = k7xa |
---|
529 | k7b(i) = k7xb |
---|
530 | k7ap(i) = k7a(i) * exp(dble( -ee/tt*(nu(i,4)-nu(i,3)) ))/6.d0 |
---|
531 | k7bp(i) = k7b(i) * exp(dble( -ee/tt*(nu(i,4)-nu(i,2)) ))/4.d0 |
---|
532 | end do |
---|
533 | |
---|
534 | |
---|
535 | ! the next ones correspond to vv2 in table 4, paper i |
---|
536 | co2i(001) + co2 ---> co2i(020) + co2(010) k6 |
---|
537 | ! k6(i) i = 1,2,3,4 |
---|
538 | ! we need a new index for the inverse rates due to both fractions : |
---|
539 | c k6a(i) i=2,3,4 co2i(001) + co2 ---> co2i(020) + co2(010) |
---|
540 | c k6b(i) " co2i(001) + co2 ---> co2i(010) + co2(020) |
---|
541 | |
---|
542 | if (iopt6.eq.1) then |
---|
543 | |
---|
544 | if(tt.le.175.d0)then |
---|
545 | k6x=8.6d-15 |
---|
546 | elseif(tt.gt.175.0.and.tt.le.200.d0)then |
---|
547 | k6x=8.6d-15+9.d-16*(175.d0-tt)/25.d0 |
---|
548 | elseif(tt.gt.200.0.and.tt.le.225.d0)then |
---|
549 | k6x=7.7d-15+5.d-16*(200.d0-tt)/25.d0 |
---|
550 | elseif(tt.gt.225.0.and.tt.le.250.d0)then |
---|
551 | k6x=7.20d-15+6.d-16*(tt-225.d0)/25.d0 |
---|
552 | elseif(tt.gt.250.0.and.tt.le.275.d0)then |
---|
553 | k6x=7.80d-15+1.d-15*(tt-250.d0)/25.d0 |
---|
554 | elseif(tt.gt.275.0.and.tt.le.300.d0)then |
---|
555 | k6x=8.80d-15+1.3d-15*(tt-275.d0)/25.d0 |
---|
556 | elseif(tt.gt.300.0.and.tt.le.325.d0)then |
---|
557 | k6x=10.1d-15+1.54d-15*(tt-300.d0)/25.d0 |
---|
558 | elseif(tt.gt.325.0)then |
---|
559 | k6x=11.6d-15 |
---|
560 | end if |
---|
561 | |
---|
562 | elseif (iopt6.eq.2) then |
---|
563 | |
---|
564 | k6x = 3.6d-13 * exp( -1660/tt + 176948/tt**2.d0 ) |
---|
565 | if (tt.lt.175) k6x = 8.8d-15 |
---|
566 | |
---|
567 | end if |
---|
568 | |
---|
569 | k6x1 = k6x * rf6 * frac6 |
---|
570 | k6x2 = k6x * rf6 * (1.-frac6) |
---|
571 | |
---|
572 | k6 = k6x * rf6 |
---|
573 | k6p = k6 / 8.d0 * exp(dble( -ee/tt * (nu(1,4)-nu(1,2)-nu(1,1)) )) |
---|
574 | do i=2,nisot |
---|
575 | k6a(i) = k6x1 |
---|
576 | k6b(i) = k6x2 |
---|
577 | anu = nu(i,4)-nu(i,2)-nu(1,1) |
---|
578 | k6ap(i) = k6a(i) / 8.d0 * exp(dble( -ee*anu/tt )) |
---|
579 | anu = nu(i,4)-nu(i,1)-nu(1,2) |
---|
580 | k6bp(i) = k6b(i) / 8.d0 * exp(dble( -ee*anu/tt )) |
---|
581 | end do |
---|
582 | |
---|
583 | |
---|
584 | co2i(0v0) + co2i ---> co2i(0v-10) + co2i(010) |
---|
585 | c k5 esta reaccion es desdenable frente a co2 como colisionante. |
---|
586 | ! k5=3.0d-15+6.0d-17*(tt-210.d0) |
---|
587 | ! k5=k5*rf5 |
---|
588 | ! k5p=k5/2.d0*exp(-ee*125.77/tt) |
---|
589 | |
---|
590 | |
---|
591 | co2i(0v0) + m ---> co2i(0v-10) + m k19 (vt2,k5,k6 in table 3, paper |
---|
592 | co2i(0v0) + o3p ---> co2i(0v-10) + o3p k20 (vt2,k7 in table 3, paper |
---|
593 | c k19vm(i) m = a --- co2 v = a --- 3 i=1,2,3,4 |
---|
594 | ! b --- n2 b --- 2 |
---|
595 | ! c --- co c --- 1 |
---|
596 | c k20v(i) v = a --- 3 i = 1,2,3,4 |
---|
597 | ! b --- 2 |
---|
598 | ! c --- 1 |
---|
599 | ! |
---|
600 | ! k20x=1.9d-8*exp(-76.75/(tt**(1.d0/3.d0))) ! taylor,74 reajusted |
---|
601 | ! k20x=2.32d-9*exp(-76.75/(tt**(1./3.)))+1.0d-14*sqrt(tt) ! k&j, 83 |
---|
602 | ! k20x = 1.43d-12*(tt/300.d0) ! shved et al, 90 |
---|
603 | |
---|
604 | if (iopt20.eq.1) then ! first version of pap1 |
---|
605 | k20x=2.32d-9*exp(-76.75/(tt**(1./3.)))+3.5d-13*sqrt(tt) ! s&w, 91 |
---|
606 | k20xb = k20x / 2.d0 * rf20 |
---|
607 | k20xc = k20xb |
---|
608 | k20xa = 3.d0/2.d0 * k20xb |
---|
609 | elseif(iopt20.eq.2) then ! revision for the papers in feb 93 |
---|
610 | k20x=3.d-12 ! minimum value of lopez-puertas et al., 92 |
---|
611 | k20xc = k20x * rf20 |
---|
612 | k20xb = 2.d0 * k20xc |
---|
613 | k20xa = 3.d0/2.d0 * k20xb |
---|
614 | elseif(iopt20.eq.3) then ! values from boug & roble '91 |
---|
615 | k20x=1.d-12/sqrt(300.) * sqrt(tt) |
---|
616 | k20xc = k20x * rf20 |
---|
617 | k20xb = 2.d0 * k20xc |
---|
618 | k20xa = 3.d0/2.d0 * k20xb |
---|
619 | elseif(iopt20.eq.4) then ! values from boug & dick '88 case b |
---|
620 | k20x=7.d-13 |
---|
621 | k20xc = k20x * rf20 |
---|
622 | k20xb = 2.d0 * k20xc |
---|
623 | k20xa = 3.d0/2.d0 * k20xb |
---|
624 | elseif(iopt20.eq.5) then ! values from s.bougher (oct-98) |
---|
625 | k20x = 1.732d-13 * sqrt(tt) ! 1/sqrt(300) * sqrt(t) |
---|
626 | k20xc = k20x * rf20 |
---|
627 | k20xb = 2.d0 * k20xc |
---|
628 | k20xa = 3.d0/2.d0 * k20xb |
---|
629 | end if |
---|
630 | |
---|
631 | if (iopt19.eq.0) then |
---|
632 | |
---|
633 | k19xca = 4.64d-10 * exp(dble( - 74.75 / tt**(1.d0/3.d0) )) |
---|
634 | k19xcb = 6.69d-10 * exp(dble( - 84.07 / tt**(1.d0/3.d0) )) |
---|
635 | k19xcc = k19xcb |
---|
636 | |
---|
637 | if ( tt.le.250 ) then |
---|
638 | k19xba = 181.25d0 |
---|
639 | elseif ( tt.ge.310 ) then |
---|
640 | k19xba = 200.d0 + 0.9d0 * ( tt - 310.d0 ) |
---|
641 | else |
---|
642 | k19xba = 181.25d0 + 0.3125d0 * ( tt - 250.d0 ) |
---|
643 | end if |
---|
644 | k19xba = k19xba * 1.03558d-19 * tt ! cm-1 s-1 |
---|
645 | k19xbb = 1.24d-14 * ( tt / 273.3d0 )**2.d0 ! taine & lepoutre 1979 |
---|
646 | k19xbc = k19xbb |
---|
647 | |
---|
648 | k19xaa = 3.d0/2.d0 * k19xba |
---|
649 | k19xab = 3.d0/2.d0 * k19xbb |
---|
650 | k19xac = 3.d0/2.d0 * k19xbc |
---|
651 | |
---|
652 | k19xaa = k19xaa * rf19 |
---|
653 | k19xab = k19xab * rf19 |
---|
654 | k19xac = k19xac * rf19 |
---|
655 | k19xba = k19xba * rf19 |
---|
656 | k19xbb = k19xbb * rf19 |
---|
657 | k19xbc = k19xbc * rf19 |
---|
658 | k19xca = k19xca * rf19 |
---|
659 | k19xcb = k19xcb * rf19 |
---|
660 | k19xcc = k19xcc * rf19 |
---|
661 | |
---|
662 | elseif (iopt19.ge.1) then |
---|
663 | |
---|
664 | if (iopt19.eq.1) then ! lunt et. al., 1985 (thesis values) |
---|
665 | |
---|
666 | if (tt.le.175.) then |
---|
667 | k19xca = 4.d0 - 0.02d0 * (tt-140.d0) |
---|
668 | k19xcb = 0.494d0 + 0.0076 * (tt-140.d0) |
---|
669 | elseif (tt.ge.175. .and. tt.le.200.) then |
---|
670 | k19xca = 3.3d0 - 0.02d0 * (tt-175.) |
---|
671 | k19xcb = 0.76d0 + 0.0076d0 * (tt-175.d0) |
---|
672 | elseif (tt.ge.200. .and. tt.le.225.) then |
---|
673 | k19xca = 2.8d0 + 0.004d0 * (tt-200.d0) |
---|
674 | k19xcb = 0.95d0 + 0.014d0 * (tt-200.d0) |
---|
675 | elseif (tt.ge.225. .and. tt.le.250.) then |
---|
676 | k19xca = 2.9d0 + 0.024d0 * (tt-225.d0) |
---|
677 | k19xcb = 1.3d0 + 0.016d0 * (tt-225.d0) |
---|
678 | elseif (tt.ge.250. .and. tt.le.275.) then |
---|
679 | k19xca = 3.5d0 + 0.04d0 * (tt-250.d0) |
---|
680 | k19xcb = 1.7d0 + 0.032d0 * (tt-250.d0) |
---|
681 | elseif (tt.ge.275. .and. tt.le.295.) then |
---|
682 | k19xca = 4.5d0 + 0.055d0 * (tt-275.d0) |
---|
683 | k19xcb = 2.5d0 + 0.045d0 * (tt-275.d0) |
---|
684 | elseif (tt.ge.295. .and. tt.le.320.) then |
---|
685 | k19xca = 5.6d0 + 0.54d0 * (tt-295.d0) |
---|
686 | k19xcb = 3.4d0 + 0.045d0 * (tt-295.d0) |
---|
687 | end if |
---|
688 | k19xca = k19xca * 1.d-15 * rf19 |
---|
689 | k19xcb = k19xcb * 1.d-15 * rf19 |
---|
690 | k19xcc = k19xcb |
---|
691 | |
---|
692 | elseif (iopt19.eq.2) then ! revision for the papers, feb 1993 |
---|
693 | |
---|
694 | ! k19xca = 7.3d-14 * exp( -850.3d0/tt + 86523.d0/tt**2.d0 ) |
---|
695 | k19xca = 4.2d-12 * exp( -2988.d0/tt + 303930.d0/tt**2.d0 ) |
---|
696 | if (tt.le.175.) k19xca = 3.3d-15 |
---|
697 | k19xcb = 2.1d-12 * exp( -2659.d0/tt + 223052.d0/tt**2.d0 ) |
---|
698 | if (tt.le.175.) k19xcb = 7.6d-16 |
---|
699 | k19xca = k19xca * rf19 |
---|
700 | k19xcb = k19xcb * rf19 |
---|
701 | k19xcc = k19xcb |
---|
702 | |
---|
703 | elseif (iopt19.eq.3) then ! values from dick'72 for k19xc |
---|
704 | ! k19xcb is not modified |
---|
705 | if (tt.le.158.) then |
---|
706 | k19xca = 0.724d-15 |
---|
707 | elseif (tt.le.190.) then |
---|
708 | k19xca = 0.724d-15 + |
---|
709 | @ (1.1d-15-0.724d-15) * (tt-158.) / (190.-158.) |
---|
710 | elseif (tt.le.250.) then |
---|
711 | k19xca = 1.1d-15 + |
---|
712 | @ (3.45d-15-1.1d-15) * (tt-190.) / (250.-190.) |
---|
713 | elseif (tt.gt.250.) then |
---|
714 | k19xca = 3.45d-15 |
---|
715 | end if |
---|
716 | k19xcb = 2.1d-12 * exp( -2659.d0/tt + 223052.d0/tt**2.d0 ) |
---|
717 | if (tt.le.175.) k19xcb = 7.6d-16 |
---|
718 | k19xca = k19xca * rf19 |
---|
719 | k19xcb = k19xcb * rf19 |
---|
720 | k19xcc = k19xcb |
---|
721 | |
---|
722 | elseif (iopt19.eq.5) then |
---|
723 | |
---|
724 | k19xca = 5.2d-15 ! s.bougher, nov-98 |
---|
725 | k19xcb = 7.6d-16 ! nuestro, de feb-93 |
---|
726 | k19xcc = k19xcb |
---|
727 | |
---|
728 | k19xca = k19xca * rf19 |
---|
729 | k19xcb = k19xcb * rf19 |
---|
730 | |
---|
731 | end if |
---|
732 | |
---|
733 | factor = 2.5d0 |
---|
734 | k19xba = factor * k19xca |
---|
735 | k19xbb = factor * k19xcb |
---|
736 | k19xbc = factor * k19xcc |
---|
737 | factor = 3.d0/2.d0 |
---|
738 | k19xaa = factor * k19xba |
---|
739 | k19xab = factor * k19xbb |
---|
740 | k19xac = factor * k19xbc |
---|
741 | |
---|
742 | end if |
---|
743 | |
---|
744 | do i = 1, nisot |
---|
745 | |
---|
746 | k19aa(i) = k19xaa |
---|
747 | k19ba(i) = k19xba |
---|
748 | k19ca(i) = k19xca |
---|
749 | k19ab(i) = k19xab |
---|
750 | k19bb(i) = k19xbb |
---|
751 | k19cb(i) = k19xcb |
---|
752 | k19ac(i) = k19xac |
---|
753 | k19bc(i) = k19xbc |
---|
754 | k19cc(i) = k19xcc |
---|
755 | anu = nu(i,3)-nu(i,2) |
---|
756 | k19aap(i) = k19aa(i) * 6.d0/4.d0 * exp(dble( -ee*anu/tt)) |
---|
757 | k19abp(i) = k19ab(i) * 6.d0/4.d0 * exp(dble( -ee*anu/tt)) |
---|
758 | k19acp(i) = k19ac(i) * 6.d0/4.d0 * exp(dble( -ee*anu/tt)) |
---|
759 | anu = nu(i,2)-nu(i,1) |
---|
760 | k19bap(i) = k19ba(i) * 2.d0 * exp(dble( -ee*anu/tt)) |
---|
761 | k19bbp(i) = k19bb(i) * 2.d0 * exp(dble( -ee*anu/tt)) |
---|
762 | k19bcp(i) = k19bc(i) * 2.d0 * exp(dble( -ee*anu/tt)) |
---|
763 | anu = nu(i,1) |
---|
764 | k19cap(i) = k19ca(i) * 2.d0 * exp(dble( -ee*anu/tt)) |
---|
765 | k19cbp(i) = k19cb(i) * 2.d0 * exp(dble( -ee*anu/tt)) |
---|
766 | k19ccp(i) = k19cc(i) * 2.d0 * exp(dble( -ee*anu/tt)) |
---|
767 | |
---|
768 | k20a(i) = k20xa |
---|
769 | k20b(i) = k20xb |
---|
770 | k20c(i) = k20xc |
---|
771 | k20ap(i) = k20a(i)*6.d0/4.d0 * |
---|
772 | @ exp(dble( -ee/tt * (nu(i,3)-nu(i,2)) )) |
---|
773 | k20bp(i) = k20b(i)*4.d0/2.d0 * |
---|
774 | @ exp(dble( -ee/tt * (nu(i,2)-nu(i,1)) )) |
---|
775 | k20cp(i) = k20c(i)*2.d0/1.d0 * |
---|
776 | @ exp(dble( -ee/tt * nu(i,1) )) |
---|
777 | end do |
---|
778 | |
---|
779 | ! write(1,*) tt,k19cap(1),k19ac(1) |
---|
780 | |
---|
781 | ! the next ones correspond to vv3 in table 4 (paper i) |
---|
782 | co2i(0v0) + co2 ---> co2i(0v-10) + co2(010) k21 also see k33 |
---|
783 | c k21v(i) v = a --- 3 i = 1,2,3,4 |
---|
784 | ! b --- 2 |
---|
785 | ! c --- 1 |
---|
786 | ! we need a new index for the 030i rates due to both fractions : |
---|
787 | c k21a1 co2i(030) + co2 ---> co2i(020) + co2(010) |
---|
788 | c k21a2 co2i(030) + co2 ---> co2i(010) + co2(020) |
---|
789 | co2i(010) + co2j(000) ---> co2i(000) + co2j(010) kijk21c see pag.22-s |
---|
790 | ! k23k21c i=628,j=636 |
---|
791 | ! k24k21c i=628,j=627 |
---|
792 | ! k34k21c i=636,j=627 |
---|
793 | |
---|
794 | if (iopt21.eq.0) then |
---|
795 | k21x = 1.2d-11 |
---|
796 | k21xb = k21x |
---|
797 | k21xa = 3.d0/2.d0 * k21x |
---|
798 | k21xc = k21x ! esta ultima no se usa con 626 |
---|
799 | elseif (iopt21.eq.1) then |
---|
800 | k21x = 2.49d-11 ! orr & smith, 1987 |
---|
801 | k21xb = k21x |
---|
802 | k21xa = 3.d0/2.d0 * k21xb ! oscilador armonico |
---|
803 | k21xc = k21xb / 2.d0 ! novedad mia |
---|
804 | elseif (iopt21.eq.2) then |
---|
805 | k21x = 100.d0*k19xca ! dickinson'76 (icarus) |
---|
806 | k21xb = k21x |
---|
807 | k21xa = 3.d0/2.d0 * k21xb ! oscilador armonico |
---|
808 | k21xc = k21xb / 2.d0 ! novedad mia |
---|
809 | end if |
---|
810 | k21xa_626 = k21xa * rf21a !* 0.01d0 !* 10.d0 |
---|
811 | k21xa = k21xa * rf21a !* 0.01d0 |
---|
812 | k21xb = k21xb * rf21b |
---|
813 | k21xc = k21xc * rf21c |
---|
814 | |
---|
815 | k21a = k21xa_626 |
---|
816 | k21ap = k21a * 6.d0/8.d0 * |
---|
817 | @ exp( dble( -ee/tt * (nu(1,3)-nu(1,2)-nu(1,1)) ) ) |
---|
818 | do i = 2, nisot |
---|
819 | k21a1(i) = k21xa * frac21 |
---|
820 | k21a2(i) = k21xa * (1.d0-frac21) |
---|
821 | k21a1p(i) = k21a1(i) * 6.d0/8.d0 * |
---|
822 | @ exp(dble( -ee/tt* (nu(i,3)-nu(i,2)-nu(1,1)) )) |
---|
823 | k21a2p(i) = k21a2(i) * 6.d0/8.d0 * |
---|
824 | @ exp(dble( -ee/tt* (nu(i,3)-nu(i,1)-nu(1,2)) )) |
---|
825 | end do |
---|
826 | |
---|
827 | |
---|
828 | do i = 1, nisot |
---|
829 | k21b(i) = k21xb |
---|
830 | k21c(i) = k21xc |
---|
831 | k21bp(i) = k21b(i) * |
---|
832 | @ exp(dble( -ee/tt* (nu(i,2)-nu(i,1)-nu(1,1)) )) |
---|
833 | k21cp(i) = k21c(i) * |
---|
834 | @ exp(dble( -ee/tt * (nu(i,1)-nu(1,1)) )) |
---|
835 | end do |
---|
836 | |
---|
837 | k23k21c = k21xc |
---|
838 | k24k21c = k21xc |
---|
839 | k34k21c = k21xc |
---|
840 | k23k21cp = k23k21c*2.d0/2.d0 * |
---|
841 | @ exp(dble( -ee/tt* (nu(2,1)-nu(3,1)) )) |
---|
842 | k24k21cp = k24k21c*2.d0/2.d0 * |
---|
843 | @ exp(dble( -ee/tt* (nu(2,1)-nu(4,1)) )) |
---|
844 | k34k21cp = k34k21c*2.d0/2.d0 * |
---|
845 | @ exp(dble( -ee/tt* (nu(3,1)-nu(4,1)) )) |
---|
846 | |
---|
847 | ! these are also vv3 in table 4, paper i |
---|
848 | c k31 & k32 |
---|
849 | |
---|
850 | k31 = k21x * rf31 ! we're suposing thar the rate for the deactivation |
---|
851 | ! v-v from high combinational levels is the same |
---|
852 | k32 = k21x * rf32 ! that the one for : (020) --> (010) + (010) |
---|
853 | |
---|
854 | c o2(***) + co2i ---> co2(***) + co2i(***) k33 |
---|
855 | c k33a1 : co2(001) + co2i ---> co2(020) + co2i(010) (vv2, table 4, |
---|
856 | ! a2 : co2(001) + co2i ---> co2(010) + co2i(020) " |
---|
857 | ! b1 : co2(030) + co2i ---> co2(020) + co2i(010) (vv3, table 4, |
---|
858 | ! b2 : co2(030) + co2i ---> co2(010) + co2i(020) " |
---|
859 | ! c : co2(020) + co2i ---> co2(010) + co2i(010) " |
---|
860 | ! we have to add an index to the inverse rates, depending on the isotope |
---|
861 | |
---|
862 | k33c = k21x * rf33bc |
---|
863 | k33b1 = 3.d0/3.d0 * k33c * frac33 |
---|
864 | k33b2 = 3.d0/3.d0 * k33c * (1.d0-frac33) |
---|
865 | k33a1 = k6x * rf33a * frac33 |
---|
866 | k33a2 = k6x * rf33a * (1.d0-frac33) |
---|
867 | |
---|
868 | do i=2,nisot |
---|
869 | k33a1p(i)=k33a1* |
---|
870 | @ 1.d0/8.d0*exp(dble( -ee/tt* (nu(1,4)-nu(1,2)-nu(i,1)) )) |
---|
871 | k33a2p(i)=k33a2* |
---|
872 | @ 1.d0/8.d0*exp(dble( -ee/tt* (nu(1,4)-nu(1,1)-nu(i,2)) )) |
---|
873 | k33b1p(i)=k33b1* |
---|
874 | @ 6.d0/8.d0*exp(dble( -ee/tt* (nu(1,3)-nu(1,2)-nu(i,1)) )) |
---|
875 | k33b2p(i)=k33b2* |
---|
876 | @ 6.d0/8.d0*exp(dble( -ee/tt* (nu(1,4)-nu(1,1)-nu(i,2)) )) |
---|
877 | k33cp(i) =k33c * exp(dble( -ee/tt * (nu(1,2)-nu(1,1)-nu(i,1)) )) |
---|
878 | end do |
---|
879 | |
---|
880 | ! here they are the vt3 in table 3, paper i |
---|
881 | co2(2.7um) + m ---> co2(2.7um) + m k27 |
---|
882 | c k27a : n8 + m ---> n6 + m |
---|
883 | ! b : n7 + m ---> n6 + m |
---|
884 | ! c : n8 + m ---> n7 + m |
---|
885 | |
---|
886 | if (iopt27.eq.0) then |
---|
887 | k27a = 3.d-11 !between fermi levels |
---|
888 | k27b = 3.d-13 !between side levels |
---|
889 | k27c = 2.d0 * k27b !between side levels |
---|
890 | elseif (iopt27.ge.1) then ! orr & smith, 1987 |
---|
891 | k27a = 1.55d-12 |
---|
892 | k27c = 4.97d-12 |
---|
893 | k27b = k27c |
---|
894 | end if |
---|
895 | k27a = k27a * rf27f |
---|
896 | k27b = k27b * rf27s |
---|
897 | k27c = k27c * rf27s |
---|
898 | |
---|
899 | k27ap = k27a * exp(dble( -ee/tt * (nu(1,8)-nu(1,6)) )) |
---|
900 | k27bp = k27b * exp(dble( -ee/tt * (nu(1,7)-nu(1,6)) )) |
---|
901 | k27cp = k27c * exp(dble( -ee/tt * (nu(1,8)-nu(1,7)) )) |
---|
902 | |
---|
903 | |
---|
904 | ! the next two are not used in the model: |
---|
905 | |
---|
906 | c k28 : n* + n2 ---> n*low + n2(1) |
---|
907 | ! k28v v = a --- n8 |
---|
908 | ! b --- n7 |
---|
909 | ! c --- n6 |
---|
910 | ! k28a = 5.d-13 * sqrt(300.d0/tt) * rf28 ! = k1 |
---|
911 | ! k28b = k28a |
---|
912 | ! k28c = k28a |
---|
913 | ! k28ap = k28a * exp( -ee/tt * (nu(1,8)-1388.1847-nun2) ) |
---|
914 | ! k28bp = k28b * exp( -ee/tt * (nu(1,7)-1335.1317-nun2) ) |
---|
915 | ! k28cp = k28c * exp( -ee/tt * (nu(1,6)-1285.4087-nun2) ) |
---|
916 | |
---|
917 | c k29 : n* + co ---> n*low + co(1) |
---|
918 | ! k29v v = a --- n8 |
---|
919 | ! b --- n7 |
---|
920 | ! c --- n6 |
---|
921 | |
---|
922 | c k29a = ?????????? * rf29 |
---|
923 | c k29b = k29a |
---|
924 | c k29c = k29a |
---|
925 | |
---|
926 | c k29ap = k29a * exp( -ee/tt * (nu(1,8)-1388.1847-nuco) ) |
---|
927 | c k29bp = k29b * exp( -ee/tt * (nu(1,7)-1335.1317-nuco) ) |
---|
928 | c k29cp = k29c * exp( -ee/tt * (nu(1,6)-1285.4087-nuco) ) |
---|
929 | |
---|
930 | |
---|
931 | ! these are also vv1 processes in table 4, paper i |
---|
932 | c k26 : |
---|
933 | ! 1. deactivation of the 626 isotope: |
---|
934 | ! reaction: n* + co2i ---> n*low + co2i(001) ; i=1-4 |
---|
935 | ! nomenclature: k26v ; v=a,b,c,d for n8,n7,n6,n5 respectively |
---|
936 | ! inverse rates: k26vp(i) ; i=1-4 |
---|
937 | ! 2. deactivation of the minor isotopes: |
---|
938 | ! reaction: n*_i + co2j ---> n*_i_low + (001)_j ; i=2-4 ; j=1-4 |
---|
939 | ! nomenclature: k26vij ; v=a,c,d for n8,n6,n5 respectively |
---|
940 | ! inverse rates: k26vijp |
---|
941 | ! 3. notes: |
---|
942 | ! a * it is clear that : k26vij=/=k26vjip, |
---|
943 | ! b * at the moment we do not include inverse rates for the case 2., o |
---|
944 | ! the deactivation of the main isotope (pg. 32b, sn1). |
---|
945 | ! c * not 0221 level for minor isotopes is considered. |
---|
946 | ! d * only a value is known for these rates, so all of the deactivatio |
---|
947 | ! the same, but not the inverse rates. |
---|
948 | ! e * although all the direct deactivation constants have the same val |
---|
949 | ! it is useful to distinguish between them with the present nam |
---|
950 | |
---|
951 | k26a = 6.8d-12 * sqrt(tt) * rf26 ! = k2 |
---|
952 | k26b = k26a |
---|
953 | k26c = k26a |
---|
954 | if (iopt26.eq.0 .or. iopt26.eq.2) then |
---|
955 | k26d = k26a |
---|
956 | elseif( iopt26.eq.1) then |
---|
957 | k26d = 1.15d-10 * rf26 |
---|
958 | end if |
---|
959 | |
---|
960 | do i=1,4 |
---|
961 | k26ap(i) = k26a * |
---|
962 | @ exp(dble( -ee/tt * (nu(1,8)-nu12_1000-nu(i,4)) )) |
---|
963 | k26bp(i) = k26b * |
---|
964 | @ exp(dble( -ee/tt * (nu(1,7)- nu(1,2) -nu(i,4)) )) |
---|
965 | k26cp(i) = k26c * |
---|
966 | @ exp(dble( -ee/tt * (nu(1,6)-nu12_0200-nu(i,4)) )) |
---|
967 | k26dp(i) = k26d * |
---|
968 | @ exp(dble( -ee/tt * (nu(1,5)- nu(1,1) -nu(i,4)) )) |
---|
969 | end do |
---|
970 | |
---|
971 | k26a21 = k26a |
---|
972 | k26c21 = k26c |
---|
973 | k26d21 = k26d |
---|
974 | k26a22 = k26a |
---|
975 | k26c22 = k26c |
---|
976 | k26d22 = k26d |
---|
977 | k26a23 = k26a |
---|
978 | k26c23 = k26c |
---|
979 | k26d23 = k26d |
---|
980 | k26a24 = k26a |
---|
981 | k26c24 = k26c |
---|
982 | k26d24 = k26d |
---|
983 | |
---|
984 | k26a31 = k26a |
---|
985 | k26c31 = k26c |
---|
986 | k26d31 = k26d |
---|
987 | k26a32 = k26a |
---|
988 | k26c32 = k26c |
---|
989 | k26d32 = k26d |
---|
990 | k26a33 = k26a |
---|
991 | k26c33 = k26c |
---|
992 | k26d33 = k26d |
---|
993 | k26a34 = k26a |
---|
994 | k26c34 = k26c |
---|
995 | k26d34 = k26d |
---|
996 | |
---|
997 | k26a41 = k26a |
---|
998 | k26c41 = k26c |
---|
999 | k26d41 = k26d |
---|
1000 | k26a42 = k26a |
---|
1001 | k26c42 = k26c |
---|
1002 | k26d42 = k26d |
---|
1003 | k26a43 = k26a |
---|
1004 | k26c43 = k26c |
---|
1005 | k26d43 = k26d |
---|
1006 | k26a44 = k26a |
---|
1007 | k26c44 = k26c |
---|
1008 | k26d44 = k26d |
---|
1009 | |
---|
1010 | !! some examples of inverse rates, although not used at the moment |
---|
1011 | ! k26a32p = k26a32 * exp( -ee* (nu(3,8)-nu32_1000-nu(2,4)) / tt )*1./1. |
---|
1012 | ! k26c32p = k26c32 * exp( -ee* (nu(3,6)-nu32_0200-nu(2,4)) / tt )*1./1. |
---|
1013 | ! k26d32p = k26d32 * exp( -ee* (nu(3,5)- nu(3,1) -nu(2,4)) / tt )*2./2. |
---|
1014 | ! |
---|
1015 | ! k26a43 = k26a34 * exp( -ee* (nu(3,8)-nu32_1000-nu(4,4)) / tt )*1./1. |
---|
1016 | ! k26c43 = k26c34 * exp( -ee* (nu(3,6)-nu32_0200-nu(4,4)) / tt )*1./1. |
---|
1017 | ! k26d43 = k26d34 * exp( -ee* (nu(3,5)- nu(3,1) -nu(4,4)) / tt )*2./2. |
---|
1018 | ! |
---|
1019 | ! k26a24p = k26a24 * exp( -ee* (nu(2,8)-nu22_1000-nu(4,4)) / tt )*1./1. |
---|
1020 | ! k26c24p = k26c24 * exp( -ee* (nu(2,6)-nu22_0200-nu(4,4)) / tt )*1./1. |
---|
1021 | ! k26d24p = k26d24 * exp( -ee* (nu(2,5)- nu(2,1) -nu(4,4)) / tt )*2./2. |
---|
1022 | |
---|
1023 | |
---|
1024 | ! this is taken as vv4 in table 4, paper i (in the inverse direction) |
---|
1025 | c k41 : co(v) + co2 ---> co(v-1) + co2(001) + de |
---|
1026 | ! k41_v v=1,2,3,4 |
---|
1027 | ! |
---|
1028 | ! de = -205.9 cm-1 when v=1 |
---|
1029 | ! de = -232.9 cm-1 when v=2 |
---|
1030 | ! de = -258.6 cm-1 when v=3 |
---|
1031 | ! de = -285.0 cm-1 when v=4 |
---|
1032 | |
---|
1033 | k41p_taylor = 1.56d-11 * exp( -30.12/tt**0.333333 ) ! [ s-1 cm+3 ] |
---|
1034 | k41p_shved = 7.5d7/sqrt(tt) ! [ s-1 atm-1 ] |
---|
1035 | k41p_shved = k41p_shved * 1.38d-16/1013250. * tt ! [ s-1 cm+3 ] |
---|
1036 | k41p_starr_hannock = 6.27d3 ! [ s-1 torr-1 ] |
---|
1037 | |
---|
1038 | if (iopt41.eq.1) then |
---|
1039 | k41p_1 = k41p_starr_hannock * |
---|
1040 | @ 760.*1.38d-16/1013250. * tt ! [ s-1 cm+3 ] |
---|
1041 | elseif (iopt41.eq.2) then |
---|
1042 | k41p_1 = 1.6d-12 * exp( -1169/tt + 77601/tt**2.d0 ) |
---|
1043 | end if |
---|
1044 | k41p_1 = k41p_1 * rf41 |
---|
1045 | k41_1 = k41p_1 * exp(dble( -ee * 205.9/tt )) |
---|
1046 | k41_2 = k41_1 |
---|
1047 | k41p_2 = k41_2 * exp(dble( -ee * (-232.9)/tt )) |
---|
1048 | k41_3 = k41_1 |
---|
1049 | k41p_3 = k41_3 * exp(dble( -ee * (-258.6)/tt )) |
---|
1050 | k41_4 = k41_1 |
---|
1051 | k41p_4 = k41_4 * exp(dble( -ee * (-285.0)/tt )) |
---|
1052 | |
---|
1053 | !k41p_1 = k41p_1 * 1.d-6 |
---|
1054 | !k41p_2 = k41p_2 * 1.d-6 |
---|
1055 | |
---|
1056 | c k41iso : 63(v) + co2 ---> 63(v-1) + co2(001) + de |
---|
1057 | ! k41iso_v v=1,2,3 |
---|
1058 | ! de = -253 cm-1 when v=1 |
---|
1059 | ! de = -278 cm-1 when v=2 |
---|
1060 | ! de = -303 cm-1 when v=3 |
---|
1061 | |
---|
1062 | k41iso_1 = k41_1 |
---|
1063 | k41iso_1p = k41iso_1 * exp(dble( -ee * (-253.)/tt )) |
---|
1064 | k41iso_2 = k41iso_1 |
---|
1065 | k41iso_2p = k41iso_2 * exp(dble( -ee * (-278.)/tt )) |
---|
1066 | k41iso_3 = k41iso_1 |
---|
1067 | k41iso_3p = k41iso_3 * exp(dble( -ee * (-303.)/tt )) |
---|
1068 | |
---|
1069 | |
---|
1070 | |
---|
1071 | c k42 : co(v) + co ---> co(v-1) + co(1) + de=-26.481 si v=2 K42 |
---|
1072 | ! -52.8940 si v=3 k42b |
---|
1073 | ! -79.2402 si v=4 k42c |
---|
1074 | ! tomado de stepanova & shved (ellos de powell, 1975), ver pg .. l5 |
---|
1075 | ! solo para v=2 : |
---|
1076 | |
---|
1077 | k42 = 2.89d-10 * (1./sqrt(tt) + 67.4/tt**1.5) * |
---|
1078 | @ exp(dble(24.78/tt)) |
---|
1079 | k42 = k42 * rf42 |
---|
1080 | k42b = k42 |
---|
1081 | k42c = k42 |
---|
1082 | k42p = k42 * exp(dble( -ee * (-26.481)/tt )) |
---|
1083 | k42bp = k42b * exp(dble( -ee * (-52.894)/tt )) |
---|
1084 | k42cp = k42c * exp(dble( -ee * (-79.24)/tt )) |
---|
1085 | |
---|
1086 | c k42iso : 63(v) + 63 ---> 63(v-1) + 63(1) + de=-25.31 si v=2 K42iso |
---|
1087 | ! -50.57 si v=3 k42isob |
---|
1088 | ! tomado de stepanova & shved (ellos de powell, 1975), ver pg .. l5 |
---|
1089 | ! solo para v=2 : |
---|
1090 | |
---|
1091 | k42iso = k42 |
---|
1092 | k42isop = k42iso * exp(dble( -ee * (-25.31)/tt )) |
---|
1093 | k42isob = k42 |
---|
1094 | k42isobp = k42isob * exp(dble( -ee * (-50.57)/tt )) |
---|
1095 | |
---|
1096 | |
---|
1097 | c k43 : co(v) + o3p ---> co(v-1) + o3p + de=2143 |
---|
1098 | ! tomado de lewittes et. al, 1978 para v=1 |
---|
1099 | |
---|
1100 | if (iopt43.eq.1) then |
---|
1101 | tt1 = tt - 300. |
---|
1102 | k43 = 2.85d-14 * exp( dble( 9.5e-3*tt1 + 1.11e-4*tt1**2. ) ) |
---|
1103 | elseif (iopt43.eq.2) then |
---|
1104 | k43 = 1.4d-5 * exp( -10957.d0 / tt + 1.486d6 / tt**2.d0 ) |
---|
1105 | if ( tt.lt.265.0 ) k43 = 2.3d-14 |
---|
1106 | end if |
---|
1107 | k43 = k43 * rf43 |
---|
1108 | k43p = k43 * exp( -ee * dble(2143.3 / tt) ) |
---|
1109 | |
---|
1110 | c k43iso : co63(v) + o3p ---> co63(v-1) + o3p + de=2096 |
---|
1111 | ! Por similitud con el anterior |
---|
1112 | |
---|
1113 | k43iso = k43 |
---|
1114 | k43isop = k43iso * exp( -ee * dble(2096. / tt) ) |
---|
1115 | |
---|
1116 | |
---|
1117 | c k44 : co62(v) + co63 ---> co62(v-1) + co63(1) + de |
---|
1118 | ! basado en Lopez-Valverde et al para el caso v=1, solo usamos este |
---|
1119 | ! k44x x = a --- v=1 de= 147.33 |
---|
1120 | ! b --- v=2 de= 20.7241 |
---|
1121 | ! c --- v=3 de= -5.7 |
---|
1122 | ! d --- v=4 de= -32.0361 |
---|
1123 | |
---|
1124 | k44a = 2.0d-12 * rf44 ! Solo vamos a usar este, no los b,c,d |
---|
1125 | k44b = k44a |
---|
1126 | k44c = k44a |
---|
1127 | k44d = k44a |
---|
1128 | |
---|
1129 | de = 147.33 |
---|
1130 | k44ap = k44a * exp(dble( -ee * de/tt )) |
---|
1131 | de = 20.7241 |
---|
1132 | k44bp = k44b * exp(dble( -ee * de/tt )) |
---|
1133 | de = -5.7 |
---|
1134 | k44cp = k44c * exp(dble( -ee * de/tt )) |
---|
1135 | de = -32.0361 |
---|
1136 | k44dp = k44d * exp(dble( -ee * de/tt )) |
---|
1137 | |
---|
1138 | |
---|
1139 | co2(hcl) + co2 --> co2 + co2 + de(hcl) |
---|
1140 | ! este rate tambien lo usamos para los high combination levels (para tra |
---|
1141 | ! al lte. cualquier valor vale, supongo. es k_vthcl |
---|
1142 | |
---|
1143 | k_vthcl = 3.3d-15 ! similar al valor pequenho del vt2 |
---|
1144 | k_vthcl = k_vthcl * rf_hcl |
---|
1145 | |
---|
1146 | return |
---|
1147 | end |
---|