#include "dims.h" ! module chemrates ! ! Calculate temperature-dependent chemical reaction rate coefficients, ! defining common in crates_tdep.h. Routine rates_tdep is called at every ! latitude at every timestep. Temperature-independent rates are scalar ! parameters in crates_const.h. ! implicit none #include "params.h" contains !----------------------------------------------------------------------- subroutine chemrates_tdep ! ! Time-gcm wrapper for rates_tdep (temperature-dependent chemical rate ! coefficients, called at all latitudes and every time step). ! This is called from parallel latitude loop (dynamics.f) ! #include "fcom.h" #include "index.h" #include "buff.h" logical,save :: isfirst=.true. ! if (isfirst) then ! write(6,"('chemrates_tdep: calling rates_tdep.')") isfirst = .false. endif ! ! Note zkmx means top level zkmxp of rates is not defined: call rates_tdep(f(1,nj+nt),f(1,nj+nte),f(1,nj+nti),zimxp,zkmx) end subroutine chemrates_tdep !----------------------------------------------------------------------- subroutine rates_tdep(tn,te,ti,ncol,nver) ! ! Set temperature-dependent reaction rates in thread-private common in ! crates_tdep.h. This routine is called from multi-tasked latitude loop. ! #include "crates_const.h" #include "crates_tdep.h" ! ! Args: integer,intent(in) :: | ncol, ! number of columns (usually nlon) | nver ! number of vertical levels in columns real,intent(in) :: | tn(ncol,nver), ! neutral temperature (deg K) | te(ncol,nver), ! electron temperature (deg K) | ti(ncol,nver) ! ion temperature (deg K) ! ! Local: integer :: i,k real :: ti1(ncol,nver), ti2(ncol,nver), ti3(ncol,nver), | etvib(ncol,nver) ! ! Loop over number of columns, and number of levels in each column: do k=1,nver do i=1,ncol ! ! ti1 = T1/300. (S15) ti2 = T2/300. (S14) ti3 = TR/300. (S13) ! ti1(i,k) = (0.667* ti(i,k)+0.333 *tn(i,k))/300. ti2(i,k) = (0.6363*ti(i,k)+0.3637*tn(i,k))/300. ti3(i,k) = .5*(ti(i,k)+tn(i,k))/300. ! ! Rk1 through rk15 are ion chemistry reaction rates ! rk1(i,k)=1.6E-11*ti1(i,k)**(-0.52)+5.5E-11* | exp(-22.85/ti1(i,k)) rk2(i,k) = (8.6E-14*ti2(i,k)-5.92E-13)*ti2(i,k)+1.533E-12 ! ! Rate coefficient for O+ + N2 -> N + NO+ ! tvib(i,k) = tn(i,k) ! tvib is in crates_tdep.h etvib(i,k) = exp(-3353./tvib(i,k)) ! etvib == S5 rk2(i,k) = (((((270.*etvib(i,k)+220.)*etvib(i,k)+85.)* | etvib(i,k)+38.)*etvib(i,k)+1.)*rk2(i,k)*etvib(i,k)+ | rk2(i,k))*(1.-etvib(i,k)) ! if (300.*ti3(i,k) >= 1500.) then rk3(i,k) = 5.2E-11*ti3(i,k)**0.2 else rk3(i,k) = 1.4E-10*ti3(i,k)**(-0.44) endif ! rk11(i,k) = rk12*8./9.*sqrt((ti(i,k)+tn(i,k)/16.)/ | (tn(i,k)+ti(i,k)/16.)) rk19(i,k) = 4.0E-8*sqrt(300./te(i,k)) rk20(i,k) = 1.5E-7*sqrt(300./te(i,k)) rk26(i,k) = 6.6E-8*sqrt(300./te(i,k)) ! ! Electron recombination rates alf1 thru alf3 ! ra1(i,k) = 4.2E-7*(300./te(i,k))**0.85 if (te(i,k) >= 1200.) then ra2(i,k) = 1.6E-7*(300./te(i,k))**0.55 else ra2(i,k) = 2.7E-7*(300./te(i,k))**0.7 endif ra3(i,k) = 1.8E-7*(300./te(i,k))**0.39 ! ! Odd nitrogen reaction rates, beta1 through beta14 ! beta1(i,k) = 1.5E-11*exp(-3600./tn(i,k)) ! JPL-94 RATE beta3(i,k) = 2.5E-10*sqrt(tn(i,k)/300.)*exp(-600./tn(i,k)) beta5(i,k) = 3.6E-10*sqrt(te(i,k)/300.) beta9(i,k) = 1.8E-12*exp(-1370./tn(i,k)) beta10(i,k) = 3.5E-12*exp(250./tn(i,k)) beta12(i,k) = 0. ! ! Neutral chemical reaction rates for mesospheric extension ! Oxygen-hydrogen interactions ! ! Metastables rkm1(i,k) = 1.8E-11*exp(110./tn(i,k)) rkm2a(i,k) = 3.2E-11*exp( 70./tn(i,k)) rkm2b(i,k) = rkm2a(i,k) rkm6(i,k) = 7.4E-11*exp(120./tn(i,k)) rkm9(i,k) = 3.6E-18*exp(-220./tn(i,k)) ! ! Oxygen-hydrogen interactions rkm20(i,k) = 9.59E-34*exp(480./tn(i,k)) rkm21(i,k) = 6.0E-34*(300./tn(i,k))**2.3 rkm22(i,k) = rkm21(i,k) rkm23(i,k) = rkm21(i,k) rkm24(i,k) = 8.0E-12*exp(-2060./tn(i,k)) rkm25(i,k) = 2.2E-11*exp( 120./tn(i,k)) rkm26(i,k) = 1.5E-11*exp( 200./tn(i,k)) rkm27(i,k) = 1.4E-12*exp(-2000./tn(i,k)) rkm28(i,k) = 1.6E-11*exp(-4570 /tn(i,k)) rkm29(i,k) = 1.6E-12*exp( -940./tn(i,k)) rkm30(i,k) = 4.2E-12*exp( -240./tn(i,k)) rkm31(i,k) = 4.8E-11*exp( 250./tn(i,k)) rkm32(i,k) = 2.9E-12*exp( -160./tn(i,k)) rkm33(i,k) = 5.5E-12*exp(-2000./tn(i,k)) rkm34(i,k) = 1.1E-14*exp( -500./tn(i,k)) rkm35(i,k) = 2.3E-13*exp( 600./tn(i,k)) rkm36(i,k) = 5.7E-32*(300./tn(i,k))**1.6 rkm37(i,k) = 1.4E-10*exp( -470./tn(i,k)) rkm39(i,k) = 4.2E-10*exp( -950./tn(i,k)) rkm40(i,k) = 8.3E-11*exp( -500./tn(i,k)) rkm41(i,k) = 5.7E-32*(300./tn(i,k))**1.6 rkm42(i,k) = 1.35E-13*exp( -100./tn(i,k)) rkm43(i,k) = 2.4 E-12*exp(-1710./tn(i,k)) rkm44(i,k) = 3.5 E-11*exp(-4550./tn(i,k)) ! ! D-region ion chemistry ! rin9 (i,k) = 2.E-31*(300./tn(i,k))**4.4 rin10(i,k) = 1.5E+6/(tn(i,k)**5.4*exp(2150./tn(i,k))) rin11(i,k) = 7.E-30*(300./tn(i,k))**3. rin12(i,k) = 3.11E+4/(tn(i,k)**4.*exp(4025./tn(i,k))) rin13(i,k) = 1.E-27*(308./tn(i,k))**4.7 rin17(i,k) = 2.E-31*(300./tn(i,k))**4.4 rin18(i,k) = 1.5E+6/(tn(i,k)**5.4*exp(1800./tn(i,k))) rin19(i,k) = 7.E-30*(300./tn(i,k))**3. rin20(i,k) = 3.11E+4/(tn(i,k)**4.*exp(3335./tn(i,k))) rin21(i,k) = 1.0E-27*(308./tn(i,k))**4.7 rin40(i,k) = 2.6E-30*(300./tn(i,k))**3.2 ! ! Carbon reactions ! gam1(i,k) = 2.3E-12*exp(-1700./tn(i,k)) gam3(i,k) = 4.5E-31*(300./tn(i,k))**3 gam5(i,k) = 4.2E-12*exp( 180./tn(i,k)) gam6(i,k) = 3.3E-13*exp( 800./tn(i,k)) gam7(i,k) = 2.2E-13*exp( 200./tn(i,k)) gam8(i,k) = 3.8E-12*exp( 200./tn(i,k)) gam9(i,k) = 3.9E-14*exp( -900./tn(i,k)) gam11(i,k) = 3.4E-11*exp(-1600./tn(i,k)) gam12(i,k) = 3.5E-12*exp( 140./tn(i,k)) gam13(i,k) = 3.5E-13*sqrt(tn(i,k))*exp(-3650./tn(i,k)) gam14(i,k) = 1.7E-33*exp(-1510./tn(i,k)) ! ! Chlorine reactions ! del1(i,k) = 2.9E-11*exp( -260./tn(i,k)) del2(i,k) = 3.0E-11*exp( +70./tn(i,k)) del3(i,k) = 1.1E-11*exp(-1400./tn(i,k)) enddo enddo end subroutine rates_tdep end module chemrates