Ignore:
Timestamp:
Jan 9, 2018, 11:53:29 AM (7 years ago)
Author:
emillour
Message:

Mars GCM:
Updated the calculation of the dissociation and ionization
branching ratios, using the values in the Schunk and Nagy book.
New datafiles *branchingratio_schunkandnagy2000_param.dat must be loaded
for the "EUVDAT" subdirectory of the standard "datadir" directory.
Main changes are:

  • param_v4_h.F90 -> New definition for the O2 ionization branching ratio
  • param_read_e107.F -> Read the new files containing the S&N branching ratios
  • paramfoto_compact.F -> Mainly cleaning of the code and the comments.

Also correction of a bug affecting the calculation of CO losses

  • chemthermos.F90 -> Small modification to add the possibility of including

NO and O2 nightglow rates to the outputs

  • calchim.F90 and calchim_asis.F90 -> account for change in arguments in

calls to chemthermos
FGG

Location:
trunk/LMDZ.MARS/libf/aeronomars
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/aeronomars/calchim.F90

    r1266 r1888  
    166166      real :: surfdust1d(nlayer)   ! Dust surface area (cm2/cm3)
    167167      real :: jo3(nlayer)          ! Photodissociation rate O3->O1D (s-1)
     168      real :: em_no(nlayer)        !  NO nightglow emission rate
     169      real :: em_o2(nlayer)        !  O2 nightglow emission rate     
    168170
    169171!     for output:
     
    172174      parameter (output = .true.)
    173175      real :: jo3_3d(ngrid,nlayer)  ! Photodissociation rate O3->O1D (s-1)
     176      real :: emission_no(ngrid,nlayer) !NO emission rate
     177      real :: emission_o2(ngrid,nlayer) !O2 emission rate
    174178
    175179!=======================================================================
     
    665669         if (thermochem) then
    666670            call chemthermos(ig,nlayer,lswitch,chemthermod,zycol,ztemp,&
    667                              zdens,zpress,zlocal,szacol,ptimestep,zday)
     671                             zdens,zpress,zlocal,szacol,ptimestep,zday,&
     672                             em_no,em_o2)
     673            do l=1,nlayer
     674               emission_no(ig,l)=em_no(l)
     675               emission_o2(ig,l)=em_o2(l)
     676            enddo
    668677         end if
    669678
     
    715724            call writediagfi(ngrid,'jo3','j o3->o1d',    &
    716725                             's-1',3,jo3_3d(1,1))
     726            call writediagfi(ngrid,'emission_no',        &
     727                 'NO nightglow emission rate','cm-3 s-1',3,emission_no)
     728            call writediagfi(ngrid,'emission_o2',        &
     729                 'O2 nightglow emission rate','cm-3 s-1',3,emission_o2)
     730
    717731           if (callstats) then
    718732              call wstats(ngrid,'jo3','j o3->o1d',       &
    719733                          's-1',3,jo3_3d(1,1))
     734              call wstats(ngrid,'emission_no',           &
     735                   'NO nightglow emission rate','cm-3 s-1',3,emission_no)
     736              call wstats(ngrid,'emission_o2',           &
     737                   'O2 nightglow emission rate','cm-3 s-1',3,emission_o2)
    720738           endif
    721739         end if ! of if (ngrid.gt.1)
  • trunk/LMDZ.MARS/libf/aeronomars/calchim_asis.F90

    r1495 r1888  
    167167      real :: surfdust1d(nlayer)   ! Dust surface area (cm2/cm3)
    168168      real :: jo3(nlayer)          ! Photodissociation rate O3->O1D (s-1)
     169      real :: em_no(nlayer)        !  NO nightglow emission rate
     170      real :: em_o2(nlayer)        !  O2 nightglow emission rate     
    169171
    170172      integer :: iter(nlayer)      !  Number of chemical iterations
     
    176178      parameter (output = .true.)
    177179      real :: jo3_3d(ngrid,nlayer)  ! Photodissociation rate O3->O1D (s-1)
     180      real :: emission_no(ngrid,nlayer) !NO emission rate
     181      real :: emission_o2(ngrid,nlayer) !O2 emission rate
    178182      real :: iter_3d(ngrid,nlayer) ! Number of chemical iterations
    179183                                    !  within one physical timestep
     
    677681         if (thermochem) then
    678682            call chemthermos(ig,nlayer,lswitch,chemthermod,zycol,ztemp,&
    679                              zdens,zpress,zlocal,szacol,ptimestep,zday)
     683                             zdens,zpress,zlocal,szacol,ptimestep,zday,&
     684                             em_no,em_o2)
     685            do l=1,nlayer
     686               emission_no(ig,l)=em_no(l)
     687               emission_o2(ig,l)=em_o2(l)
     688            enddo
    680689         end if
    681690
     
    731740            call writediagfi(ngrid,'iter','iterations',  &
    732741                             ' ',3,iter_3d(1,1))
     742            call writediagfi(ngrid,'emission_no',        &
     743                 'NO nightglow emission rate','cm-3 s-1',3,emission_no)
     744            call writediagfi(ngrid,'emission_o2',        &
     745                 'O2 nightglow emission rate','cm-3 s-1',3,emission_o2)
     746
    733747            if (callstats) then
    734748               call wstats(ngrid,'jo3','j o3->o1d',       &
    735749                           's-1',3,jo3_3d(1,1))
     750               call wstats(ngrid,'emission_no',           &
     751                   'NO nightglow emission rate','cm-3 s-1',3,emission_no)
     752               call wstats(ngrid,'emission_o2',           &
     753                   'O2 nightglow emission rate','cm-3 s-1',3,emission_o2)
    736754               call wstats(ngrid,'mmean','mean molecular mass',       &
    737755                           'g.mole-1',3,mmean(1,1))
  • trunk/LMDZ.MARS/libf/aeronomars/chemthermos.F90

    r1684 r1888  
    11      SUBROUTINE chemthermos(ig,nlayer,lswitch,chemthermod,zycol,ztemp, &
    2            zdens,zpress,zlocal,zenit,ptimestep,zday)
     2           zdens,zpress,zlocal,zenit,ptimestep,zday,em_no,em_o2)
    33
    44      use tracer_mod, only: nqmx, igcm_co2, igcm_co, igcm_o, igcm_o1d,  &
     
    1010                            igcm_n2plus, igcm_hplus, igcm_hco2plus,     &
    1111                            igcm_elec, igcm_oplus
     12
     13      use param_v4_h, only: Pno, Po2
    1214      USE comcstfi_h
    1315      IMPLICIT NONE
     
    4345      real :: ptimestep
    4446      real :: zday
     47      real :: em_no(nlayer)
     48      real :: em_o2(nlayer)
    4549!
    4650!    Local variables :
     
    508512           zycol(l,g_elec)    = max(rm(l,i_elec)    / zdens(l) , 1.e-30)
    509513        endif
     514        em_no(l)=Pno(l,45)
     515        em_o2(l)=Po2(l,10)*0.75
    510516      enddo                     !nlayer
    511517
  • trunk/LMDZ.MARS/libf/aeronomars/param_read_e107.F

    r1717 r1888  
    1111     .    efdiso,efdisn,efdish,
    1212     .    efdisno,efdisn2,efdisno2,
    13      .    efdisco,efionco2,efionn2,
     13     .    efdisco,efionco2,efiono2,efionn2,
    1414     .    efionco,efiono3p,efionn,
    1515     .    efionno,efionh,
     
    300300         efionco2(inter,3)=0.
    301301         efionco2(inter,4)=0.
     302         efiono2(inter,1)=0.
     303         efiono2(inter,2)=0.
    302304         efiono3p(inter)=0.
    303305         efionn2(inter,1)=0.
     
    314316c     CO2, O2, NO
    315317
    316       open(120,file=trim(datafile)//'/EUVDAT/param_v5/efdis_inter.dat')
    317       read(120,*)
    318 !      do i=1,21
    319 !         read(120,*)inter,efdisco2(inter),efdiso2(inter),efdisno(inter)
    320       do inter=8,28
    321          read(120,*)i,efdisco2(inter),efdiso2(inter),efdisno(inter)
    322       enddo
    323       do inter=29,ninter
    324          efdisco2(inter)=1.
    325          efdiso2(inter)=1.
    326          efdisno(inter)=1.
    327       enddo
     318!      open(120,file=trim(datafile)//'/EUVDAT/param_v5/efdis_inter.dat')
     319!      read(120,*)
     320!!      do i=1,21
     321!!         read(120,*)inter,efdisco2(inter),efdiso2(inter),efdisno(inter)
     322!      do inter=8,28
     323!         read(120,*)i,efdisco2(inter),efdiso2(inter),efdisno(inter)
     324!      enddo
     325!      do inter=29,ninter
     326!         efdisco2(inter)=1.
     327!         efdiso2(inter)=1.
     328!         efdisno(inter)=1.
     329!      enddo
     330!      close(120)
    328331
    329332
     
    372375         
    373376      !4 possible channels for CO2 ionization
    374       do inter=14,16
    375          efionco2(inter,1)=1.-efdisco2(inter)
    376       enddo
    377       efionco2(13,1)=0.805*(1.-efdisco2(13))
    378       efionco2(13,2)=0.195*(1.-efdisco2(13))
    379       do inter=11,12
    380          efionco2(inter,3)=1.-efdisco2(inter)
    381       enddo
    382       efionco2(10,3)=0.9*(1.-efdisco2(10))
    383       efionco2(10,4)=0.1*(1.-efdisco2(10))
    384       do inter=2,9
    385          efionco2(inter,4)=1.-efdisco2(inter)
    386       enddo
     377      open(130,file=trim(datafile)//'/EUVDAT'//
     378     $     '/co2ion_branchingratio_schunkandnagy2000_param.dat')
     379      do inter=1,16
     380         read(130,*)i,nada,efionco2(inter,1),efionco2(inter,2),
     381     $        efionco2(inter,3),efionco2(inter,4)
     382         !Multiply the relative efficiency of each channel by the total ionization efficiency (second column)
     383         efdisco2(inter)=1.-nada
     384         efionco2(inter,1)=(1.-efdisco2(inter))*efionco2(inter,1)
     385         efionco2(inter,2)=(1.-efdisco2(inter))*efionco2(inter,2)
     386         efionco2(inter,3)=(1.-efdisco2(inter))*efionco2(inter,3)
     387         efionco2(inter,4)=(1.-efdisco2(inter))*efionco2(inter,4)
     388      enddo
     389      close(130)
     390      do inter=17,36
     391         efdisco2(inter)=1.
     392      enddo
     393
     394!      do inter=14,16
     395!         efionco2(inter,1)=1.-efdisco2(inter)
     396!      enddo
     397!      efionco2(13,1)=0.805*(1.-efdisco2(13))
     398!      efionco2(13,2)=0.195*(1.-efdisco2(13))
     399!      do inter=11,12
     400!         efionco2(inter,3)=1.-efdisco2(inter)
     401!      enddo
     402!      efionco2(10,3)=0.9*(1.-efdisco2(10))
     403!      efionco2(10,4)=0.1*(1.-efdisco2(10))
     404!      do inter=2,9
     405!         efionco2(inter,4)=1.-efdisco2(inter)
     406!      enddo
     407
     408
     409      !2 possible channels for O2 ionization
     410      open(131,file=trim(datafile)//'/EUVDAT'//
     411     $     '/o2ion_branchingratio_schunkandnagy2000_param.dat')
     412      do inter=1,23
     413         read(131,*)i,nada,efiono2(inter,1),efiono2(inter,2)
     414         !Multiply the relative efficiency of each channel by the total ionization efficiency (second column)
     415         efdiso2(inter)=1.-nada
     416         efiono2(inter,1)=(1.-efdiso2(inter))*efiono2(inter,1)
     417         efiono2(inter,2)=(1.-efdiso2(inter))*efiono2(inter,2)
     418      enddo
     419      close(131)
     420      do inter=24,36
     421         efdiso2(inter)=1.
     422      enddo
     423
    387424
    388425      !For O(3p) total ionization under 91.1 nm
     
    391428      enddo
    392429
     430
    393431      !2 channels for N2 ionization
    394       do inter=9,15
    395          efionn2(inter,1)=1.-efdisn2(inter)
    396       enddo
    397       do inter=2,8
    398          efionn2(inter,2)=1.-efdisn2(inter)
    399       enddo
    400      
     432      open(132,file=trim(datafile)//'/EUVDAT'//
     433     $     '/n2ion_branchingratio_schunkandnagy2000_param.dat')
     434      do inter=1,15
     435         read(132,*)i,nada,efionn2(inter,1),efionn2(inter,2)
     436         !Multiply the relative efficiency of each channel by the total ionization efficiency (second column)
     437         efdisn2(inter)=1.-nada
     438         efionn2(inter,1)=(1.-efdisn2(inter))*efionn2(inter,1)
     439         efionn2(inter,2)=(1.-efdisn2(inter))*efionn2(inter,2)
     440      enddo
     441      close(132)
     442      do inter=16,36
     443         efdisn2(inter)=1.
     444      enddo
     445
     446!      do inter=9,15
     447!         efionn2(inter,1)=1.-efdisn2(inter)
     448!      enddo
     449!      do inter=2,8
     450!         efionn2(inter,2)=1.-efdisn2(inter)
     451!      enddo
     452 
     453     
    401454      !3 channels for CO ionization
    402       do inter=11,16
    403          efionco(inter,1)=1.-efdisco(inter)
    404       enddo
    405       efionco(10,1)=0.87*(1.-efdisco(10))
    406       efionco(10,2)=0.13*(1.-efdisco(10))
    407       do inter=8,9
    408          efionco(inter,2)=1.-efdisco(inter)
    409       enddo
    410       efionco(7,2)=0.1*(1.-efdisco(7))
    411       efionco(7,3)=0.9*(1.-efdisco(7))
    412       do inter=2,6
    413          efionco(inter,3)=1.-efdisco(inter)
    414       enddo
     455       open(133,file=trim(datafile)//'/EUVDAT'//
     456     $     '/coion_branchingratio_schunkandnagy2000_param.dat')
     457      do inter=1,16
     458         read(133,*)i,nada,efionco(inter,1),efionco(inter,2),
     459     $        efionco(inter,3)
     460         !Multiply the relative efficiency of each channel by the total ionization efficiency (second column)
     461         efdisco(inter)=1.-nada
     462         efionco(inter,1)=(1.-efdisco(inter))*efionco(inter,1)
     463         efionco(inter,2)=(1.-efdisco(inter))*efionco(inter,2)
     464         efionco(inter,3)=(1.-efdisco(inter))*efionco(inter,3)
     465      enddo
     466      close(133)
     467      do inter=17,36
     468         efdisco(inter)=1.
     469      enddo
     470
     471!      do inter=11,16
     472!         efionco(inter,1)=1.-efdisco(inter)
     473!      enddo
     474!      efionco(10,1)=0.87*(1.-efdisco(10))
     475!      efionco(10,2)=0.13*(1.-efdisco(10))
     476!      do inter=8,9
     477!         efionco(inter,2)=1.-efdisco(inter)
     478!      enddo
     479!      efionco(7,2)=0.1*(1.-efdisco(7))
     480!      efionco(7,3)=0.9*(1.-efdisco(7))
     481!      do inter=2,6
     482!         efionco(inter,3)=1.-efdisco(inter)
     483!      enddo
     484
    415485
    416486      !Total ionization under 85 nm for N
  • trunk/LMDZ.MARS/libf/aeronomars/param_v4_h.F90

    r1266 r1888  
    5454   real efdisco(ninter)
    5555   real efionco2(ninter,4)
     56   real efiono2(ninter,2)
    5657   real efionn2(ninter,2)
    5758   real efionco(ninter,3)
  • trunk/LMDZ.MARS/libf/aeronomars/paramfoto_compact.F

    r1331 r1888  
    33      subroutine paramfoto_compact
    44     $(ig,nlayer,chemthermod,lswitch,tx,timestep,zenit,zx,rm,nesptherm)
     5
     6c     Main thermospheric photochemistry routine.
    57 
    68c     may 2008      FGG+MALV,GG             
     
    118120
    119121
     122c     external timestep
     123      timefrac_sec=dble(timestep)
     124
    120125C     Start: altitude loop
    121       timefrac_sec=dble(timestep)
    122 
    123126      do i=nlayer,lswitch,-1
    124 c     Concentrations to real*8
    125 
    126 c     Hay dos maneras de adaptar estos a los flags fotoquimicos:
    127 c     1. Se definen todas las concentraciones, dejando como 0 las que no
    128 c     se utilicen en la quimica requerida. Esto es posiblemente lo mas
    129 c     sencillo, ya que no habria que modificar las llamadas a las subrutinas
    130 c     pero puede ser menos seguro y mas caro computacionalmente
    131 c     2. Se definen nuevas variables rmini, rminput, rmoutput como arrays
    132 c     con dimension ajustable al numero de compuestos. Esto es posiblemente
    133 c     mas seguro, compacto y rapido, pero implica cambiar las llamadas a
    134 c     todas las subrutinas.
    135 c     Empiezo probando la primera manera.
    136 
     127c     Temperature and concentrations to real*8
    137128         tx8=dble(tx(i))
    138 
    139129         co2xini=dble(rm(i,i_co2))
    140130         o2xini=dble(rm(i,i_o2))
     
    205195
    206196! JYC criteria added to avoid instabilities in (H) + (O+) <-> (H+) + (O) reactions when H+ is important
    207 
    208197        fmargin1=5
    209198        !Only if ion chemistry requested
     
    213202              fmargin1=2000.*critere
    214203              if (fmargin1 .gt. 50.) fmargin1=50
    215 !       print*,'long time step chimie',ig,i,critere,fmargin1
    216204           endif
    217205        endif   !Of chemthermod.eq.3
     
    699687      function ionsec_nplus (zenit, alt)                     
    700688
    701 c       Calcula la eficiencia de produccion de N+ por electrones secundarios
    702 c       siguiendo Nicholson et al. 2009
     689c       Calculates the N+ production by photoelectrons, following
     690c       Nicholson et al. 2009
    703691
    704692c       FGG    sep 2010   first version
     
    752740         ionsec_nplus = 10**(ionsec_nplus-2.)
    753741      elseif(altaux.gt.80..and.altaux.le.108.4) then
    754 !      else
    755742         b0 = 6.346190854d4
    756743         b1 = -2.623253212d3
     
    760747         ionsec_nplus = b0 + b1*altaux + b2*altaux**2 + b3*altaux**3 +
    761748     $        b4*altaux**4
    762 !         ionsec_nplus = ionsec_nplus * 100.
    763749      else
    764750         ionsec_nplus=0.d0
    765751      endif
    766752      if(ionsec_nplus.gt.100.d0.or.ionsec_nplus.lt.0.d0)
    767 !      if(ionsec_nplus.lt.0.d0)
    768753     $     ionsec_nplus=0.d0
    769754     
    770755     
    771 !Ionizacion secundaria a 0
    772 !      ionsec_nplus=0.d0
    773756      return                                         
    774 c END
     757
    775758      end
    776759
     
    779762      function ionsec_n2plus (zenit, alt)                     
    780763
    781 c       Calcula la eficiencia de produccion de N+ por electrones secundarios
    782 c       siguiendo Nicholson et al. 2009
    783 
    784 c       FGG    sep 2010   first version
     764c     N2+ production by photoelectrons, following Nicholson et al. 2009
     765
     766c     FGG    sep 2010   first version
    785767c***********************************************************************
    786768                                               
     
    826808         ionsec_n2plus = 10**(ionsec_n2plus-2.)
    827809      elseif(altaux.gt.80..and.altaux.le.108.4) then
    828 !      else
    829810         b0 = 5.146111566d4
    830811         b1 = -1.771736158d3
     
    835816         ionsec_n2plus = b0 + b1*altaux + b2*altaux**2 + b3*altaux**3 +
    836817     $        b4*altaux**4 + b5*altaux**5
    837 !         ionsec_n2plus = ionsec_n2plus * 100.
    838818      else
    839819         ionsec_n2plus = 0.d0
    840820      endif
    841821      if(ionsec_n2plus.gt.100.d0.or.ionsec_n2plus.lt.0.d0)
    842 !      if(ionsec_n2plus.lt.0.d0)
    843822     $     ionsec_n2plus=0.d0
    844823     
    845 !Ionizacion secundaria a 0
    846 !      ionsec_n2plus=0.d0
    847824      return                                         
    848 c     END
     825
    849826      end 
    850827
     
    854831      function ionsec_oplus (zenit, alt)                     
    855832
    856 c       Calcula la eficiencia de produccion de N+ por electrones secundarios
    857 c       siguiendo Nicholson et al. 2009
    858 
    859 c       FGG    sep 2010   first version
     833c     O+ production by photoelectrons, from Nicholson et al. 2009
     834
     835c     FGG    sep 2010   first version
    860836c***********************************************************************
    861837                                               
     
    905881         ionsec_oplus = 10**(ionsec_oplus-2.)
    906882      elseif(altaux.gt.80..and.altaux.le.112.9) then
    907 !      else
    908883         b0 = -5.934881676d5
    909884         b1 = 3.546095705d4
     
    915890         ionsec_oplus = b0 + b1*altaux + b2*altaux**2 + b3*altaux**3 +
    916891     $        b4*altaux**4 + b5*altaux**5 + b6*altaux**6
    917 !         ionsec_oplus = ionsec_oplus * 100.
    918892      else
    919893         ionsec_oplus=0.d0   
     
    921895
    922896      if(ionsec_oplus.gt.100.d0.or.ionsec_oplus.lt.0.d0)
    923 !      if(ionsec_oplus.lt.0.d0)
    924897     $     ionsec_oplus=0.d0
    925898       
    926 !Ionizacion secundaria a 0
    927 !      ionsec_oplus=0.d0
    928899      return                                         
    929 c     END
     900
    930901      end
    931902
     
    935906      function ionsec_coplus (zenit, alt)                     
    936907
    937 c       Calcula la eficiencia de produccion de N+ por electrones secundarios
    938 c       siguiendo Nicholson et al. 2009
    939 
    940 c       FGG    sep 2010   first version
     908c     CO+ production by photoelectrons from Nicholson et al. 2009
     909
     910c     FGG    sep 2010   first version
    941911c***********************************************************************
    942912                                               
     
    982952         ionsec_coplus = 10**(ionsec_coplus-2.)
    983953      elseif(altaux.gt.80..and.altaux.le.110.6) then
    984 !      else
    985954         b0  = -1.165107657d6
    986955         b1  = 4.315606169d4
     
    1000969     $        b7*altaux**7 + b8*altaux**8 + b9*altaux**9 +
    1001970     $        b10*altaux**10 + b11*altaux**11 + b12*altaux**12
    1002 !         ionsec_coplus = ionsec_coplus * 100.
    1003971      else
    1004972         ionsec_coplus=0.d0
    1005973      endif
    1006974      if(ionsec_coplus.gt.100..or.ionsec_coplus.lt.0.d0)
    1007 !      if(ionsec_coplus.lt.0.d0)
    1008975     $     ionsec_coplus=0.d0
    1009976     
    1010 !Ionizacion secundaria a 0
    1011 !      ionsec_coplus=0.d0
    1012977      return                                         
    1013 c     END
     978
    1014979      end 
    1015980     
     
    1019984      function ionsec_co2plus (zenit, alt)                     
    1020985     
    1021 c     Calcula la eficiencia de produccion de N+ por electrones secundarios
    1022 c     siguiendo Nicholson et al. 2009
     986c     CO2+ production by photoelectrons, from Nicholson et al. 2009
    1023987     
    1024988c     FGG    sep 2010   first version
     
    10661030         ionsec_co2plus = 10**(ionsec_co2plus-2.)
    10671031      elseif(altaux.ge.80..and.altaux.le.112.9) then
    1068 !      else
    10691032         b0  = 1.159404818d6
    10701033         b1  = -5.617523193d4
     
    10821045     $        b7*altaux**7 + b8*altaux**8 + b9*altaux**9 +
    10831046     $        b10*altaux**10
    1084 !         ionsec_co2plus = ionsec_co2plus * 100.
    10851047      else
    10861048         ionsec_co2plus = 0.d0
    10871049      endif
    10881050      if(ionsec_co2plus.gt.100.d0.or.ionsec_co2plus.lt.0.d0)
    1089 !      if(ionsec_co2plus.lt.0.d0)
    10901051     $     ionsec_co2plus=0.d0
    10911052     
    1092 !Ionizacion secundaria a 0
    1093 !      ionsec_co2plus=0.d0
    10941053      return                                         
    1095 c     END
     1054
    10961055      end 
    10971056     
     
    11001059      function ionsec_o2plus (zenit, alt)                     
    11011060
    1102 c       Calcula la eficiencia de produccion de N+ por electrones secundarios
    1103 c       siguiendo Nicholson et al. 2009
    1104 
    1105 c       FGG    sep 2010   first version
     1061c     O2+ production by photoelectrons, from Nicholson et al. 2009
     1062
     1063c     FGG    sep 2010   first version
    11061064c***********************************************************************
    11071065                                               
     
    11441102         ionsec_o2plus = 10**(ionsec_o2plus-2.)
    11451103      elseif(altaux.gt.80..and.altaux.le.112.9) then
    1146 !      else
    11471104         b0  = 3.622091694d6
    11481105         b1  = -1.45914419d5
     
    11571114     $        b4*altaux**4 + b5*altaux**5 + b6*altaux**6 + b7*altaux**7
    11581115     $        + b8*altaux**8
    1159 !         ionsec_o2plus = ionsec_o2plus * 100.
    11601116      else
    11611117         ionsec_o2plus = 0.d0
    11621118      endif
    11631119      if(ionsec_o2plus.gt.100.d0.or.ionsec_o2plus.lt.0.d0)
    1164 !      if(ionsec_o2plus.lt.0.d0)
    11651120     $     ionsec_o2plus=0.d0
    11661121     
    1167 !Ionizacion secundaria a 0
    1168 !      ionsec_o2plus=0.d0
     1122
    11691123      return                                         
    1170 c END
     1124
    11711125      end 
    11721126
     
    11781132
    11791133      subroutine phdisrate(ig,nlayer,chemthermod,zenit,i)
     1134
     1135c     Calculates photoionization and photodissociation rates from the
     1136c     photoabsorption rates calculated in jthermcalc_e107 and the
     1137c     ionization/dissociation branching ratios in param_read_e107
    11801138
    11811139c     apr 2002       fgg           first version
     
    11891147     .    efdiso,efdisn,efdish,
    11901148     .    efdisno,efdisn2,efdisno2,
    1191      .    efdisco,efionco2,efionn2,
     1149     .    efdisco,efionco2,efiono2,efionn2,
    11921150     .    efionco,efiono3p,efionn,
    11931151     .    efionno,efionh
     
    12821240         end if
    12831241         jion(2,i,1)=jion(2,i,1) +
    1284      $        jfotsout(inter,2,i) * fluxtop(inter) * (1.-efdiso2(inter))
     1242     $        jfotsout(inter,2,i) * fluxtop(inter) * efiono2(inter,1)
     1243         jion(2,1,2)=jion(2,1,2) +
     1244     $        jfotsout(inter,2,i) * fluxtop(inter) * efiono2(inter,2)
     1245!(1.-efdiso2(inter))
    12851246         
    12861247c     O3P
     
    13811342        subroutine getch (ig,chemthermod,tt,zkm)
    13821343
     1344
     1345c     Reaction rates. The parameters rcoef are read from the
     1346c     chemthermos_reactionrates.def file
    13831347 
    1384 c       NOV 98  MALV            First Version. From the work:
    1385 c                               Rodrigo et al, Atmosfera, 3, pp.31-43, 1990
    1386 c       apr 02  FGG             New reactions
    1387 c       Sep 07 fgg             
     1348
    13881349c***************************************************************************
    13891350
     
    14171378        tcte = tt
    14181379       
     1380!        goto 151
    14191381        !Electronic temperatures
    14201382        ! (Hanson et al. 1977) approx. from Mars p. 107           
     
    14511413     $          ( zhanson(i2)-zhanson(i1) )
    14521414           t_elect = tehanson(i1) + (zkm-zhanson(i1)) * incremento
     1415
     1416!           t_elect = t_elect * 2.
    14531417        endif
     1418! 151    continue
     1419        !MAVEN measured electronic temperature (Ergun et al., GRL 2015)
     1420!        t_elect=((3140.+120.)/2.)+((3140.-120.)/2.)*tanh((zkm-241.)/60.)
    14541421
    14551422        !Initializations
     
    22282195
    22292196         if(jdistot8(5,i).gt.1.d-30) tauh2(27,i)= 1.d0/jdistot8(5,i)
    2230 
    2231 !         if(ch28 * h2oxini.gt.1.d-30) tauo3(i,28) = 1.d0/(ch28*h2oxini)
    2232 !         if(ch28 * o3xini.gt.1.d-30) tauh2o(i,28) = 1.d0/(ch28*o3xini)
    22332197         
    22342198         !Only if N or ion chemistry requested
     
    38793843     $     Pco(i,59) + Pco(i,73)
    38803844      Lcotot(i) = Lco(i,4) + Lco(i,70) + Lco(i,77) + Lco(i,78) +
    3881      $     Lco(i,90)
     3845     $     Lco(i,91)
    38823846
    38833847
     
    41624126
    41634127 
    4164 c Calculates the concentrations of the fast species in PE
     4128c Calculates the concentrations of the fast species in PE. Includes a
     4129c procedure to avoid oscillations
     4130
    41654131c
    41664132
Note: See TracChangeset for help on using the changeset viewer.