!----------------------------------------------------------------------- module airglow_module implicit none ! ! Output from ohrad: integer,parameter :: mxohvlev=10,nohvalt=91,mxohvband=60 real :: fohv(mxohvlev,nohvalt),fohb(mxohvband,nohvalt), | fohv_integ(mxohvlev), fohb_integ(mxohvband) integer :: iband,ihigh,ilow real :: zhoh(nohvalt) ! real :: te5577,dung ,dvng ,dtng ! greenline real :: teo200,duno2,dvno2,dtno2 ! o2 atmospheric real :: te6300,dunr ,dvnr ,dtnr ! redline ! contains !----------------------------------------------------------------------- subroutine airglow(ut) use params,only: nlev,spval use flds_airglow,only: e5577,eo200,e6300,eco215,eno53 use flds_atmos,only: tn,xnco2,xnno,xno,xnn2,xno2,xno21d use flds_ionatm,only: xio2p,xne,te use flds_modelz,only: zp,zpht use input,only: f107,f107a implicit none ! ! Args: real,intent(in) :: ut ! ! Local: integer :: i,ix,ie5577(5),ie6300 real :: sigma,dattpv,attpz,dattpz,dum real,dimension(nlev) :: un,vn character(len=80) :: char80 ! ! External: real,external :: quadrat ! util.F ! ! Airglow emissions calls (see mkemiss.F): ! un(:) = 0. vn(:) = 0. ! ! Greenline: ! ie5577(1) = 1 ie5577(2:5) = 0 call mke5577(tn,xno2,xno,xnn2,zpht,te,xne,xio2p,xno21d, | nlev,e5577,ie5577,ut,0.,0.,f107,f107a) te5577 = quadrat(e5577,zpht,nlev,spval)*1.e-6 ! write(6,"(/,'airglow after mke5577: te5577=', ! | e12.4,' e5577=',/,(6e12.4))") te5577,e5577 sigma = 17924. call doppler(nlev,zpht,tn,un,vn,e5577,sigma,dung,dvng,dtng, | dattpv,attpz,dattpz) ! ! 7/25/05 btf: Diffs with old code in dung,dvng,dtng -- have not debugged this yet. ! write(6,"('After doppler for e5577: dung,dvng,dtng =', ! | 3e12.4)") dung,dvng,dtng ! write(6,"('After doppler for e5577: dattpv,attpz,dattpz=', ! | 3e12.4)") dattpv,attpz,dattpz ! ! O2 atmospheric band: ! call mkeo200(tn,xno2,xno,xnn2,nlev,eo200) teo200 = quadrat(eo200,zpht,nlev,spval)*1.e-6 ! write(6,"(/,'airglow after mkeo200: teo200=', ! | e12.4,' eo200=',/,(6e12.4))") teo200,eo200 sigma = 13123.4 call doppler(nlev,zpht,tn,un,vn,eo200,sigma,duno2,dvno2, | dtno2,dattpv,attpz,dattpz) ! write(6,"('After doppler for eo200: duno2,dvno2,dtno2 =', ! | 3e12.4)") duno2,dvno2,dtno2 ! write(6,"('After doppler for eo200: dattpv,attpz,dattpz=', ! | 3e12.4)") dattpv,attpz,dattpz ! ! Redline: ! ie6300 = 1 ! write(6,"('call mke6300: ut=',f5.2,' f107,f107a=',2e12.4)") ! | ut,f107,f107a call mke6300(tn,xno2,xno,xnn2,zpht,te,xne,xio2p,nlev,e6300, | ie6300,ut,0.,0.,f107,f107a) te6300=quadrat(e6300,zpht,nlev,spval)*1.e-6 ! ! Diffs in e6300 and te6300 are at least partly due to diffs in xne ! (see sub mke6300 in mkemiss.F) ! write(6,"(/,'airglow after mke6300: te6300=', ! | e12.4,' e6300=',/,(6e12.4))") te6300,e6300 ! sigma=15867.852 call doppler(nlev,zpht,tn,un,vn,e6300,sigma,dunr,dvnr,dtnr, | dattpv,attpz,dattpz) ! write(6,"('After doppler for e6300: dunr,dvnr,dtnr =', ! | 3e12.4)") dunr,dvnr,dtnr ! write(6,"('After doppler for e6300: dattpv,attpz,dattpz=', ! | 3e12.4)") dattpv,attpz,dattpz ! ! 15U CO2: call mkeco215(tn,xno,xnco2,nlev,eco215) ! write(6,"(/,'airglow after mkeco215: eco215=',/,(6e12.4))") e6300 ! ! 5.3U NO: call mkeno53(tn,xno,xnno,nlev,eno53) ! write(6,"(/,'airglow after mkeno53: eno53=',/,(6e12.4))") eno53 ! ! getohv calls ohrad for oh-vib levels and bands: ! call getohv(fohv,fohb,1,fohv_integ,fohb_integ) ! ! See also sub printdiags in advance.F. iband = 62 ihigh = iband/10 ilow = iband-ihigh*10 ix = (ihigh-ilow-1)*mxohvlev+ihigh+1 ! index to 1st dim of fohb ! write(6,"('oh-v band ',i2,'=',/,(6e12.4))") iband do i=1,nohvalt zhoh(i)=30.+(i-1)*1. ! write(6,"(1x,i3,2x,12(1pe10.2))") i,zhoh(i),fohb(ix,i) enddo ! i=1,nohvalt ! ! Report to stdout: ! Diffs w/ old code in e6300 because of xne diffs after 1st step (see denmod.F) ! write(char80,"('airglow emissions: ut=',f5.2)") ut ! call fprint8(char80,nlev, ! | zp , zpht , e5577 , eo200 , e6300 , eco215 , eno53,dum, ! | 'zp','zpht','e5577','eo200','e6300','eco215','eno53',' ') end subroutine airglow !----------------------------------------------------------------------- end module airglow_module