Index: trunk/LMDZ.MARS/libf/aeronomars/calchim_mod.F90
===================================================================
--- trunk/LMDZ.MARS/libf/aeronomars/calchim_mod.F90	(revision 2282)
+++ trunk/LMDZ.MARS/libf/aeronomars/calchim_mod.F90	(revision 2284)
@@ -22,5 +22,5 @@
                             igcm_coplus, igcm_cplus, igcm_nplus,          &
                             igcm_noplus, igcm_n2plus, igcm_hplus,         &
-                            igcm_hco2plus, igcm_elec, mmol
+                            igcm_hco2plus, igcm_hcoplus, igcm_elec, mmol
 
       use conc_mod, only: mmean ! mean molecular mass of the atmosphere
@@ -141,4 +141,5 @@
       integer,save :: i_hplus=0
       integer,save :: i_hco2plus=0
+      integer,save :: i_hcoplus=0
       integer,save :: i_elec=0
 
@@ -542,4 +543,20 @@
             if (i_hco2plus /= 0) then
                write(*,*) "calchim: Error: HCO2+ is present, but O2+ is not!!!"
+               write(*,*) "Both must be in traceur.def if ion chemistry wanted"
+            endif
+         endif
+         i_hcoplus=igcm_hcoplus
+         if(ionchem) then
+            if (i_hcoplus == 0) then
+               write(*,*) "calchim: Error, no HCO+ tracer !!!"
+               write(*,*) "HCO+ is needed if O2+ is in traceur.def"
+               stop
+            else
+               nbq = nbq + 1
+               niq(nbq) = i_hcoplus
+            end if
+         else
+            if (i_hcoplus /= 0) then
+               write(*,*) "calchim: Error: HCO+ is present, but O2+ is not!!!"
                write(*,*) "Both must be in traceur.def if ion chemistry wanted"
             endif
@@ -630,5 +647,5 @@
             ! set number of reactions, depending on ion chemistry or not
             if (ionchem) then
-               nb_reaction_4_max = 61   ! set number of bimolecular reactions
+               nb_reaction_4_max = 67   ! set number of bimolecular reactions
                nb_reaction_3_max = 6    ! set number of quadratic reactions
                nquench           = 9    ! set number of quenching + heterogeneous reactions
Index: trunk/LMDZ.MARS/libf/aeronomars/inichim_newstart.F90
===================================================================
--- trunk/LMDZ.MARS/libf/aeronomars/inichim_newstart.F90	(revision 2282)
+++ trunk/LMDZ.MARS/libf/aeronomars/inichim_newstart.F90	(revision 2284)
@@ -117,4 +117,5 @@
       igcm_hplus=0
       igcm_hco2plus=0
+      igcm_hcoplus=0
       igcm_elec=0
 
@@ -330,4 +331,9 @@
            igcm_hco2plus = iq
            mmol(igcm_hco2plus) = 45.
+           count = count + 1
+        end if
+        if (noms(iq) == "hcoplus") then
+           igcm_hcoplus = iq
+           mmol(igcm_hcoplus) = 29.
            count = count + 1
         end if
@@ -593,9 +599,9 @@
               .or. igcm_cplus == 0 .or. igcm_nplus == 0 .or. igcm_noplus == 0    & 
               .or. igcm_n2plus == 0 .or. igcm_hplus == 0 .or. igcm_hco2plus == 0 &
-              .or. igcm_elec == 0) then
+              .or. igcm_hcoplus == 0 .or. igcm_elec == 0) then
             write(*,*)'inichim_newstart error:'
             write(*,*)'if co2plus is in traceur.def, all other ions must also be'
             write(*,*)'o2plus, oplus, coplus, cplus, nplus, noplus, n2plus'
-            write(*,*)'hplus, hco2plus and elec'
+            write(*,*)'hplus, hco2plus, hcoplus, and elec'
             write(*,*)'stop'
             stop
@@ -616,4 +622,5 @@
                   pq(i,j,l,igcm_hplus)    = 0.
                   pq(i,j,l,igcm_hco2plus) = 0.
+                  pq(i,j,l,igcm_hcoplus)  = 0.
                   pq(i,j,l,igcm_elec)     = 0.
                end do
@@ -633,4 +640,5 @@
          qsurf(1:ngrid,igcm_hplus)    = 0.
          qsurf(1:ngrid,igcm_hco2plus) = 0.
+         qsurf(1:ngrid,igcm_hcoplus)  = 0.
          qsurf(1:ngrid,igcm_elec)     = 0.
 
@@ -640,5 +648,5 @@
               .or. igcm_cplus /= 0 .or. igcm_nplus /= 0 .or. igcm_noplus /= 0    & 
               .or. igcm_n2plus /= 0 .or. igcm_hplus /= 0 .or. igcm_hco2plus /= 0 &
-              .or. igcm_elec /= 0) then
+              .or. igcm_hcoplus /= 0 .or. igcm_elec /= 0) then
             write(*,*)'inichim_newstart error:'
             write(*,*)'some ions are in traceur.def, but not co2plus'
Index: trunk/LMDZ.MARS/libf/aeronomars/photochemistry.F90
===================================================================
--- trunk/LMDZ.MARS/libf/aeronomars/photochemistry.F90	(revision 2282)
+++ trunk/LMDZ.MARS/libf/aeronomars/photochemistry.F90	(revision 2284)
@@ -112,5 +112,6 @@
 integer,parameter :: i_hplus   = 26
 integer,parameter :: i_hco2plus= 27
-integer,parameter :: i_elec    = 28
+integer,parameter :: i_hcoplus = 28
+integer,parameter :: i_elec    = 29
 
 integer :: ilay
@@ -154,5 +155,6 @@
                i_n, i_n2d, i_no, i_no2, i_n2, i_co2plus,            &
                i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus,      &
-               i_n2plus, i_nplus, i_hplus, i_hco2plus, i_elec)
+               i_n2plus, i_nplus, i_hplus, i_hco2plus, i_hcoplus,   &
+               i_elec)
    firstcall = .false.
 end if
@@ -168,5 +170,5 @@
                i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus, &
                i_n2plus, i_nplus, i_hplus, i_hco2plus,         &
-               i_elec, dens, rm, c) 
+               i_hcoplus, i_elec, dens, rm, c) 
 
 !===================================================================
@@ -363,9 +365,10 @@
       if(c(ilev,i_elec).ne.c(ilev,i_co2plus)+c(ilev,i_oplus)+c(ilev,i_o2plus)+&
            c(ilev,i_noplus)+c(ilev,i_coplus)+c(ilev,i_cplus)+c(ilev,i_n2plus)+&
-           c(ilev,i_nplus)+c(ilev,i_hplus)+c(ilev,i_hco2plus)) then
+           c(ilev,i_nplus)+c(ilev,i_hplus)+c(ilev,i_hco2plus)+                &
+           c(ilev,i_hcoplus)) then
          c(ilev,i_elec) = c(ilev,i_co2plus)+c(ilev,i_oplus)+c(ilev,i_o2plus)+ &
               c(ilev,i_noplus)+c(ilev,i_coplus)+c(ilev,i_cplus)+              &
               c(ilev,i_n2plus)+c(ilev,i_nplus)+c(ilev,i_hplus)+               &
-              c(ilev,i_hco2plus)
+              c(ilev,i_hco2plus)+c(ilev,i_hcoplus)
          !      write(*,*)'photochemistry/359'
          !      write(*,*)'Forcing charge neutrality at ilev,',ilev,' ig=',ig
@@ -393,5 +396,5 @@
                i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus, &
                i_n2plus, i_nplus, i_hplus, i_hco2plus,         &
-               i_elec, dens, c) 
+               i_hcoplus, i_elec, dens, c) 
 contains
 
@@ -592,5 +595,6 @@
                            i013, i014, i015, i016, i017, i018, i019,   &
                            i020, i021, i022, i023, i024, i025, i026,   &
-                           i027, i028, i029, i030,                     &
+                           i027, i028, i029, i030, i031, i032, i033,   &
+                           i034, i035, i036,                           &
                            h001, h002, h003, h004, h005
 
@@ -1360,4 +1364,53 @@
          nb_reaction_4 = nb_reaction_4 + 1
          v_4(:,nb_reaction_4) = i030(:)
+
+!---     i031: HCO2+ + O -> HCO+ + O2
+
+!        UMIST
+
+         i031(:) = 1.e-9
+         nb_reaction_4 = nb_reaction_4 + 1
+         v_4(:,nb_reaction_4) = i031(:)
+
+!---     i032: HCO2+ + CO -> HCO+ + CO2
+
+!        UMIST, from Prassad & Huntress 1980
+
+         i032(:) = 7.8e-10
+         nb_reaction_4 = nb_reaction_4 + 1
+         v_4(:,nb_reaction_4) = i032(:)
+
+!---     i033: H+ + CO2 -> HCO+ + O
+
+!        UMIST, from Smith et al., Int. J. Mass Spectrom. Ion Proc., 117, 457-473(1992) 
+
+         i033(:) = 3.5e-9
+         nb_reaction_4 = nb_reaction_4 + 1
+         v_4(:,nb_reaction_4) = i033(:)
+
+
+!---     i034: CO2+ + H -> HCO+ + O
+
+!        Seen in Fox 2015, from Borodi et al., Int. J. Mass Spectrom. 280, 218-225, 2009
+
+         i034(:) = 4.5e-10
+         nb_reaction_4 = nb_reaction_4 + 1
+         v_4(:,nb_reaction_4) = i034(:)
+
+!---     i035: CO+ + H2 -> HCO+ + H
+
+         !UMIST, from Scott et al., J. Chem. Phys., 106, 3982-3987(1997)
+
+         i035(:) = 7.5e-10
+         nb_reaction_4 = nb_reaction_4 + 1
+         v_4(:,nb_reaction_4) = i035(:)
+
+!---     i036: HCO+ + e- -> CO + H
+
+         !UMIST, from Mitchell, Phys. Rep., 186, 215 (1990)
+
+         i036(:) = 2.4e-7 *((300./t_elect(:))**0.69)
+         nb_reaction_4 = nb_reaction_4 + 1
+         v_4(:,nb_reaction_4) = i036(:)
 
       end if   !ionchem
@@ -1572,5 +1625,6 @@
                    i_n, i_n2d, i_no, i_no2, i_n2, i_co2plus,            &
                    i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus,      &
-                   i_n2plus, i_nplus, i_hplus, i_hco2plus, i_elec)
+                   i_n2plus, i_nplus, i_hplus, i_hco2plus, i_hcoplus,   &
+                   i_elec)
 
 !================================================================
@@ -1596,5 +1650,6 @@
            i_n, i_n2d, i_no, i_no2, i_n2,                   &
            i_co2plus, i_oplus, i_o2plus, i_noplus, i_coplus, &
-           i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus, i_elec
+           i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus, &
+           i_hcoplus, i_elec
 integer, intent(in) :: nb_reaction_3_max
                        ! number of quadratic reactions
@@ -2441,4 +2496,54 @@
    indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_elec, 1.0, i_h, 1.0, i_co2)
 
+
+!===========================================================
+!      i031 : HCO2+ + O -> HCO+ + O2 
+!===========================================================
+
+   nb_reaction_4 = nb_reaction_4 + 1
+
+   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_o, 1.0, i_hcoplus, 1.0, i_o2)
+
+
+!===========================================================
+!      i032 : HCO2+ + CO -> HCO+ + CO2 
+!===========================================================
+
+   nb_reaction_4 = nb_reaction_4 + 1
+   indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_co, 1.0, i_hcoplus, 1.0, i_co2)
+
+
+!===========================================================
+!      i033 : H+ + CO2 -> HCO+ + O 
+!===========================================================
+
+   nb_reaction_4 = nb_reaction_4 + 1
+   indice_4(nb_reaction_4) = z4spec(1.0, i_hplus, 1.0, i_co2, 1.0, i_hcoplus, 1.0, i_o)
+
+
+!===========================================================
+!      i034 : CO2+ + H -> HCO+ + O 
+!===========================================================
+
+   nb_reaction_4 = nb_reaction_4 + 1
+   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_h, 1.0, i_hcoplus, 1.0, i_o)
+
+
+!===========================================================
+!      i035 : CO+ + H2 -> HCO+ + H 
+!===========================================================
+
+   nb_reaction_4 = nb_reaction_4 + 1
+   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_h2, 1.0, i_hcoplus, 1.0, i_h)
+
+
+!===========================================================
+!      i036 : HCO+ + e- -> CO + H 
+!===========================================================
+
+   nb_reaction_4 = nb_reaction_4 + 1
+   indice_4(nb_reaction_4) = z4spec(1.0, i_hcoplus, 1.0, i_elec, 1.0, i_co, 1.0, i_h)
+
+
 end if    !ionchem
 
@@ -2518,5 +2623,6 @@
                            i_co2plus, i_oplus, i_o2plus, i_noplus,   &
                            i_coplus, i_cplus, i_n2plus, i_nplus,     &
-                           i_hplus, i_hco2plus, i_elec, dens, rm, c) 
+                           i_hplus, i_hco2plus, i_hcoplus, i_elec,   &
+                           dens, rm, c) 
         
 !*****************************************************************
@@ -2529,5 +2635,5 @@
      &                      igcm_noplus, igcm_coplus, igcm_cplus,        &
      &                      igcm_n2plus, igcm_nplus, igcm_hplus,         &
-     &                      igcm_hco2plus, igcm_elec
+     &                      igcm_hco2plus, igcm_hcoplus, igcm_elec
 
       implicit none
@@ -2549,5 +2655,6 @@
                  i_n, i_n2d, i_no, i_no2, i_n2,                      &
                  i_co2plus, i_oplus, i_o2plus, i_noplus, i_coplus,   &
-                 i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus, i_elec
+                 i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus,    &
+                 i_hcoplus, i_elec
 
       real :: zycol(nlayer,nq)      ! volume mixing ratios in the gcm
@@ -2683,4 +2790,8 @@
                stop
             endif
+            if (igcm_hcoplus == 0) then
+               write(*,*) "gcmtochim: Error; no HCO+ tracer !!!"
+               stop
+            endif
             if (igcm_elec == 0) then
                write(*,*) "gcmtochim: Error; no e- tracer !!!"
@@ -2727,4 +2838,5 @@
             rm(l,i_hplus)    = zycol(l, igcm_hplus)
             rm(l,i_hco2plus) = zycol(l, igcm_hco2plus)
+            rm(l,i_hcoplus)  = zycol(l, igcm_hcoplus)
             rm(l,i_elec)     = zycol(l, igcm_elec)
          end do 
@@ -2755,5 +2867,6 @@
                            i_co2plus, i_oplus, i_o2plus, i_noplus,    &
                            i_coplus, i_cplus, i_n2plus, i_nplus,      &
-                           i_hplus, i_hco2plus, i_elec, dens, c) 
+                           i_hplus, i_hco2plus, i_hcoplus, i_elec,    &
+                           dens, c) 
  
 !*****************************************************************
@@ -2766,5 +2879,5 @@
                             igcm_noplus, igcm_coplus, igcm_cplus,         &
                             igcm_n2plus, igcm_nplus, igcm_hplus,          &
-                            igcm_hco2plus, igcm_elec
+                            igcm_hco2plus, igcm_hcoplus, igcm_elec
 
       implicit none
@@ -2786,5 +2899,5 @@
                  i_co2plus, i_oplus, i_o2plus, i_noplus,         &
                  i_coplus, i_cplus, i_n2plus, i_nplus,           &
-                 i_hplus, i_hco2plus, i_elec
+                 i_hplus, i_hco2plus, i_hcoplus, i_elec
 
       real :: dens(nlayer)     ! total number density (molecule.cm-3) 
@@ -2839,4 +2952,5 @@
             zycol(l, igcm_hplus)   = c(l,i_hplus)/dens(l)
             zycol(l, igcm_hco2plus)= c(l,i_hco2plus)/dens(l)
+            zycol(l, igcm_hcoplus) = c(l,i_hcoplus)/dens(l)
             zycol(l, igcm_elec)    = c(l,i_elec)/dens(l)
          end do
Index: trunk/LMDZ.MARS/libf/phymars/initracer.F
===================================================================
--- trunk/LMDZ.MARS/libf/phymars/initracer.F	(revision 2282)
+++ trunk/LMDZ.MARS/libf/phymars/initracer.F	(revision 2284)
@@ -104,4 +104,5 @@
       igcm_hplus=0
       igcm_hco2plus=0
+      igcm_hcoplus=0
       igcm_elec=0
 
@@ -321,4 +322,9 @@
           igcm_hco2plus=iq
           mmol(igcm_hco2plus)=45.
+          count=count+1
+        endif
+        if (noms(iq).eq."hcoplus") then
+          igcm_hcoplus=iq
+          mmol(igcm_hcoplus)=29.
           count=count+1
         endif
Index: trunk/LMDZ.MARS/libf/phymars/tracer_mod.F90
===================================================================
--- trunk/LMDZ.MARS/libf/phymars/tracer_mod.F90	(revision 2282)
+++ trunk/LMDZ.MARS/libf/phymars/tracer_mod.F90	(revision 2284)
@@ -86,4 +86,5 @@
       integer,save :: igcm_hplus
       integer,save :: igcm_hco2plus
+      integer,save :: igcm_hcoplus
       integer,save :: igcm_elec
       ! other tracers
