Changeset 2302 for trunk


Ignore:
Timestamp:
Apr 28, 2020, 9:53:07 AM (5 years ago)
Author:
emillour
Message:

Mars GCM:

  • Add H2O+ ion chemistry

FGG

Location:
trunk/LMDZ.MARS
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r2298 r2302  
    29722972== 27/04/2020 == MV
    29732973follow-up of the last commit: add the routine check_isotopes_p.F in dyn3dpar. Note: this routine is used in the Earth GCM to check the aberrant values but for now it is inactive in our version, as long as variable "ok_isotopes" in /dyn3d_common/infotrac.F90 remains "false". This routine was already present in the sequential version of the dynamics dyn3d.
     2974
     2975== 28/04/2020 == FGG
     2976Add H2O+ ion chemistry
  • trunk/LMDZ.MARS/libf/aeronomars/calchim_mod.F90

    r2284 r2302  
    2222                            igcm_coplus, igcm_cplus, igcm_nplus,          &
    2323                            igcm_noplus, igcm_n2plus, igcm_hplus,         &
    24                             igcm_hco2plus, igcm_hcoplus, igcm_elec, mmol
     24                            igcm_hco2plus, igcm_hcoplus, igcm_h2oplus,    &
     25                            igcm_elec, mmol
    2526
    2627      use conc_mod, only: mmean ! mean molecular mass of the atmosphere
     
    142143      integer,save :: i_hco2plus=0
    143144      integer,save :: i_hcoplus=0
     145      integer,save :: i_h2oplus=0
    144146      integer,save :: i_elec=0
    145147
     
    240242         if (i_co2 == 0) then
    241243            write(*,*) "calchim: Error; no CO2 tracer !!!"
    242             stop
     244            call abort_physic("calchim","missing co2 tracer",1)
    243245         else
    244246            nbq = nbq + 1
     
    248250         if (i_co == 0) then
    249251            write(*,*) "calchim: Error; no CO tracer !!!"
    250             stop
     252            call abort_physic("calchim","missing co tracer",1)
    251253         else
    252254            nbq = nbq + 1
     
    256258         if (i_o == 0) then
    257259            write(*,*) "calchim: Error; no O tracer !!!"
    258             stop
     260            call abort_physic("calchim","missing o tracer",1)
    259261         else
    260262            nbq = nbq + 1
     
    264266         if (i_o1d == 0) then
    265267            write(*,*) "calchim: Error; no O1D tracer !!!"
    266             stop
     268            call abort_physic("calchim","missing o1d tracer",1)
    267269         else
    268270            nbq = nbq + 1
     
    272274         if (i_o2 == 0) then
    273275            write(*,*) "calchim: Error; no O2 tracer !!!"
    274             stop
     276            call abort_physic("calchim","missing o2 tracer",1)
    275277         else
    276278            nbq = nbq + 1
     
    280282         if (i_o3 == 0) then
    281283            write(*,*) "calchim: Error; no O3 tracer !!!"
    282             stop
     284            call abort_physic("calchim","missing o3 tracer",1)
    283285         else
    284286            nbq = nbq + 1
     
    288290         if (i_h == 0) then
    289291            write(*,*) "calchim: Error; no H tracer !!!"
    290             stop
     292            call abort_physic("calchim","missing h tracer",1)
    291293         else
    292294            nbq = nbq + 1
     
    296298         if (i_h2 == 0) then
    297299            write(*,*) "calchim: Error; no H2 tracer !!!"
    298             stop
     300            call abort_physic("calchim","missing h2 tracer",1)
    299301         else
    300302            nbq = nbq + 1
     
    304306         if (i_oh == 0) then
    305307            write(*,*) "calchim: Error; no OH tracer !!!"
    306             stop
     308            call abort_physic("calchim","missing oh tracer",1)
    307309         else
    308310            nbq = nbq + 1
     
    312314         if (i_ho2 == 0) then
    313315            write(*,*) "calchim: Error; no HO2 tracer !!!"
    314             stop
     316            call abort_physic("calchim","missing ho2 tracer",1)
    315317         else
    316318            nbq = nbq + 1
     
    320322         if (i_h2o2 == 0) then
    321323            write(*,*) "calchim: Error; no H2O2 tracer !!!"
    322             stop
     324            call abort_physic("calchim","missing h2o2 tracer",1)
    323325         else
    324326            nbq = nbq + 1
     
    336338         if (i_n2 == 0) then
    337339            write(*,*) "calchim: Error; no N2 tracer !!!"
    338             stop
     340            call abort_physic("calchim","missing n2 tracer",1)
    339341         else
    340342            nbq = nbq + 1
     
    345347            if (photochem) then
    346348               write(*,*) "calchim: Error; no N tracer !!!"
    347                stop
     349               call abort_physic("calchim","missing n tracer",1)
    348350            end if
    349351         else
     
    355357            if (photochem) then
    356358               write(*,*) "calchim: Error; no N2D tracer !!!"
    357                stop
     359               call abort_physic("calchim","missing n2d tracer",1)
    358360            end if
    359361         else
     
    365367            if (photochem) then
    366368               write(*,*) "calchim: Error; no NO tracer !!!"
    367                stop
     369               call abort_physic("calchim","missing no tracer",1)
    368370            end if
    369371         else
     
    375377            if (photochem) then
    376378               write(*,*) "calchim: Error; no NO2 tracer !!!"
    377                stop
     379               call abort_physic("calchim","missing no2 tracer",1)
    378380            end if
    379381         else
     
    384386         if (i_h2o == 0) then
    385387            write(*,*) "calchim: Error; no water vapor tracer !!!"
    386             stop
     388            call abort_physic("calchim","missing h2o_vap tracer",1)
    387389         else
    388390            nbq = nbq + 1
     
    405407               write(*,*) "calchim: Error, no CO2+ tracer !!!"
    406408               write(*,*) "CO2+ is needed if O2+ is in traceur.def"
    407                stop
     409               call abort_physic("calchim","missing co2plus tracer",1)
    408410            else
    409411               nbq = nbq + 1
     
    414416               write(*,*) "calchim: Error: CO2+ is present, but O2+ is not!!!"
    415417               write(*,*) "Both must be in traceur.def if ion chemistry wanted"
    416                stop
     418               call abort_physic("calchim","missing o2plus tracer",1)
    417419            endif
    418420         endif
     
    422424               write(*,*) "calchim: Error, no O+ tracer !!!"
    423425               write(*,*) "O+ is needed if O2+ is in traceur.def"
    424                stop
     426               call abort_physic("calchim","missing oplus tracer",1)
    425427            else
    426428               nbq = nbq + 1
     
    431433               write(*,*) "calchim: Error: O+ is present, but O2+ is not!!!"
    432434               write(*,*) "Both must be in traceur.def if ion chemistry wanted"
    433                stop
     435               call abort_physic("calchim","missing o2plus tracer",1)
    434436            endif
    435437         endif
     
    439441               write(*,*) "calchim: Error, no NO+ tracer !!!"
    440442               write(*,*) "NO+ is needed if O2+ is in traceur.def"
    441                stop
     443               call abort_physic("calchim","missing noplus tracer",1)
    442444            else
    443445               nbq = nbq + 1
     
    455457               write(*,*) "calchim: Error, no CO+ tracer !!!"
    456458               write(*,*) "CO+ is needed if O2+ is in traceur.def"
    457                stop               
     459               call abort_physic("calchim","missing coplus tracer",1)               
    458460            else
    459461               nbq = nbq + 1
     
    471473               write(*,*) "calchim: Error, no C+ tracer !!!"
    472474               write(*,*) "C+ is needed if O2+ is in traceur.def"
    473                stop
     475               call abort_physic("calchim","missing cplus tracer",1)
    474476            else
    475477               nbq = nbq + 1
     
    487489               write(*,*) "calchim: Error, no N2+ tracer !!!"
    488490               write(*,*) "N2+ is needed if O2+ is in traceur.def"
    489                stop
     491               call abort_physic("calchim","missing n2plus tracer",1)
    490492            else
    491493               nbq = nbq + 1
     
    503505               write(*,*) "calchim: Error, no N+ tracer !!!"
    504506               write(*,*) "N+ is needed if O2+ is in traceur.def"
    505                stop
     507               call abort_physic("calchim","missing nplus tracer",1)
    506508            else
    507509               nbq = nbq + 1
     
    519521               write(*,*) "calchim: Error, no H+ tracer !!!"
    520522               write(*,*) "H+ is needed if O2+ is in traceur.def"
    521                stop
     523               call abort_physic("calchim","missing hplus tracer",1)
    522524            else
    523525               nbq = nbq + 1
     
    535537               write(*,*) "calchim: Error, no HCO2+ tracer !!!"
    536538               write(*,*) "HCO2+ is needed if O2+ is in traceur.def"
    537                stop
     539               call abort_physic("calchim","missing hco2plus tracer",1)
    538540            else
    539541               nbq = nbq + 1
     
    551553               write(*,*) "calchim: Error, no HCO+ tracer !!!"
    552554               write(*,*) "HCO+ is needed if O2+ is in traceur.def"
    553                stop
     555               call abort_physic("calchim","missing hcoplus tracer",1)
    554556            else
    555557               nbq = nbq + 1
     
    559561            if (i_hcoplus /= 0) then
    560562               write(*,*) "calchim: Error: HCO+ is present, but O2+ is not!!!"
     563               write(*,*) "Both must be in traceur.def if ion chemistry wanted"
     564            endif
     565         endif
     566         i_h2oplus=igcm_h2oplus
     567         if(ionchem) then
     568            if (i_h2oplus == 0) then
     569               write(*,*) "calchim: Error, no H2O+ tracer !!!"
     570               write(*,*) "H2O+ is needed if O2+ is in traceur.def"
     571               call abort_physic("calchim","missing h2oplus tracer",1)
     572            else
     573               nbq = nbq + 1
     574               niq(nbq) = i_h2oplus
     575            end if
     576         else
     577            if (i_h2oplus /= 0) then
     578               write(*,*) "calchim: Error: H2O+ is present, but O2+ is not!!!"
    561579               write(*,*) "Both must be in traceur.def if ion chemistry wanted"
    562580            endif
     
    567585               write(*,*) "calchim: Error, no e- tracer !!!"
    568586               write(*,*) "e- is needed if O2+ is in traceur.def"
    569                stop
     587               call abort_physic("calchim","missing elec tracer",1)
    570588            else
    571589               nbq = nbq + 1
     
    647665            ! set number of reactions, depending on ion chemistry or not
    648666            if (ionchem) then
    649                nb_reaction_4_max = 67   ! set number of bimolecular reactions
     667               nb_reaction_4_max = 80   ! set number of bimolecular reactions
    650668               nb_reaction_3_max = 6    ! set number of quadratic reactions
    651669               nquench           = 9    ! set number of quenching + heterogeneous reactions
  • trunk/LMDZ.MARS/libf/aeronomars/inichim_newstart.F90

    r2284 r2302  
    118118      igcm_hco2plus=0
    119119      igcm_hcoplus=0
     120      igcm_h2oplus=0
    120121      igcm_elec=0
    121122
     
    338339           count = count + 1
    339340        end if
     341        if (noms(iq) == "h2oplus") then
     342           igcm_h2oplus = iq
     343           mmol(igcm_h2oplus) = 18.
     344           count = count + 1
     345        end if
    340346        if (noms(iq) == "elec") then
    341347           igcm_elec = iq
     
    362368            write(*,*) '      ', iq, ' ', trim(noms(iq))
    363369         end do
    364          stop
     370         call abort_physic("inichim_newstart","tracer mismatch",1)
    365371      else
    366372         write(*,*) "inichim_newstart: found all expected tracers"
     
    378384            write(*,*)'N, NO2 and/or N2D are in traceur.def, but not NO'
    379385            write(*,*)'stop'
    380             stop
     386            call abort_physic("inichim_newstart","missing no tracer",1)
    381387         endif
    382388         flagnitro = .false.
     
    388394            write(*,*)'if NO is in traceur.def, N, NO2 and N2D must also be'
    389395            write(*,*)'stop'
    390             stop
     396            call abort_physic("inichim_newstart","missing n* tracer",1)
    391397         endif
    392398         flagnitro = .true.
     
    470476         write(*,*)'   can be obtained online on:'
    471477         write(*,*)' http://www.lmd.jussieu.fr/~lmdz/planets/mars/datadir'
    472          stop
     478         call abort_physic("inichim_newstart","missing input file",1)
    473479      end if
    474480      open(220, iostat=ierr,file=trim(datadir)//'/atmosfera_LMD_min.dat')
     
    482488         write(*,*)'   can be obtained online on:'
    483489         write(*,*)' http://www.lmd.jussieu.fr/~lmdz/planets/mars/datadir'
    484          stop
     490         call abort_physic("inichim_newstart","missing input file",1)
    485491      end if
    486492      if(flagnitro) then
     
    495501            write(*,*)'   can be obtained online on:'
    496502            write(*,*)' http://www.lmd.jussieu.fr/~lmdz/planets/mars/datadir'
    497             STOP
     503            call abort_physic("inichim_newstart","missing input file",1)
    498504         endif
    499505      endif   ! Of if(flagnitro)
     
    599605              .or. igcm_cplus == 0 .or. igcm_nplus == 0 .or. igcm_noplus == 0    &
    600606              .or. igcm_n2plus == 0 .or. igcm_hplus == 0 .or. igcm_hco2plus == 0 &
    601               .or. igcm_hcoplus == 0 .or. igcm_elec == 0) then
     607              .or. igcm_hcoplus == 0 .or. igcm_h2oplus == 0 .or. igcm_elec == 0) then
    602608            write(*,*)'inichim_newstart error:'
    603609            write(*,*)'if co2plus is in traceur.def, all other ions must also be'
    604610            write(*,*)'o2plus, oplus, coplus, cplus, nplus, noplus, n2plus'
    605             write(*,*)'hplus, hco2plus, hcoplus, and elec'
     611            write(*,*)'hplus, hco2plus, hcoplus, h2oplus, and elec'
    606612            write(*,*)'stop'
    607             stop
     613            call abort_physic("inichim_newstart","missing ions in tracers",1)
    608614         end if
    609615
     
    623629                  pq(i,j,l,igcm_hco2plus) = 0.
    624630                  pq(i,j,l,igcm_hcoplus)  = 0.
     631                  pq(i,j,l,igcm_h2oplus)  = 0.
    625632                  pq(i,j,l,igcm_elec)     = 0.
    626633               end do
     
    641648         qsurf(1:ngrid,igcm_hco2plus) = 0.
    642649         qsurf(1:ngrid,igcm_hcoplus)  = 0.
     650         qsurf(1:ngrid,igcm_h2oplus)  = 0.
    643651         qsurf(1:ngrid,igcm_elec)     = 0.
    644652
     
    648656              .or. igcm_cplus /= 0 .or. igcm_nplus /= 0 .or. igcm_noplus /= 0    &
    649657              .or. igcm_n2plus /= 0 .or. igcm_hplus /= 0 .or. igcm_hco2plus /= 0 &
    650               .or. igcm_hcoplus /= 0 .or. igcm_elec /= 0) then
     658              .or. igcm_hcoplus /= 0 .or. igcm_h2oplus /= 0 .or. igcm_elec /= 0) then
    651659            write(*,*)'inichim_newstart error:'
    652660            write(*,*)'some ions are in traceur.def, but not co2plus'
    653661            write(*,*)'stop'
    654             stop
     662            call abort_physic("inichim_newstart","missing ions in tracers",1)
    655663         end if
    656664      end if    ! of if(igcm_co2 /= 0)
  • trunk/LMDZ.MARS/libf/aeronomars/photochemistry.F90

    r2284 r2302  
    2424implicit none
    2525
    26 #include "callkeys.h"
     26include "callkeys.h"
    2727
    2828!===================================================================
     
    113113integer,parameter :: i_hco2plus= 27
    114114integer,parameter :: i_hcoplus = 28
    115 integer,parameter :: i_elec    = 29
     115integer,parameter :: i_h2oplus = 29
     116integer,parameter :: i_elec    = 30
    116117
    117118integer :: ilay
     
    156157               i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus,      &
    157158               i_n2plus, i_nplus, i_hplus, i_hco2plus, i_hcoplus,   &
    158                i_elec)
     159               i_h2oplus, i_elec)
    159160   firstcall = .false.
    160161end if
     
    170171               i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus, &
    171172               i_n2plus, i_nplus, i_hplus, i_hco2plus,         &
    172                i_hcoplus, i_elec, dens, rm, c)
     173               i_hcoplus, i_h2oplus, i_elec, dens, rm, c)
    173174
    174175!===================================================================
     
    344345#else
    345346   write(*,*) "photochemistry error, missing LAPACK routine dgesv"
    346    stop
     347   call abort_physic("photochemistry","missing LAPACK routine",1)
    347348#endif
    348349
     
    366367           c(ilev,i_noplus)+c(ilev,i_coplus)+c(ilev,i_cplus)+c(ilev,i_n2plus)+&
    367368           c(ilev,i_nplus)+c(ilev,i_hplus)+c(ilev,i_hco2plus)+                &
    368            c(ilev,i_hcoplus)) then
     369           c(ilev,i_hcoplus)+c(ilev,i_h2oplus)) then
    369370         c(ilev,i_elec) = c(ilev,i_co2plus)+c(ilev,i_oplus)+c(ilev,i_o2plus)+ &
    370371              c(ilev,i_noplus)+c(ilev,i_coplus)+c(ilev,i_cplus)+              &
    371372              c(ilev,i_n2plus)+c(ilev,i_nplus)+c(ilev,i_hplus)+               &
    372               c(ilev,i_hco2plus)+c(ilev,i_hcoplus)
     373              c(ilev,i_hco2plus)+c(ilev,i_hcoplus)+c(ilev,i_h2oplus)
    373374         !      write(*,*)'photochemistry/359'
    374375         !      write(*,*)'Forcing charge neutrality at ilev,',ilev,' ig=',ig
     
    396397               i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus, &
    397398               i_n2plus, i_nplus, i_hplus, i_hco2plus,         &
    398                i_hcoplus, i_elec, dens, c)
     399               i_hcoplus, i_h2oplus, i_elec, dens, c)
    399400contains
    400401
     
    481482#else
    482483   write(*,*) "photochemistry error, missing LAPACK routine dgesv"
    483    stop
     484   call abort_physic("photochemistry","missing LAPACK routine",1)
    484485#endif
    485486
     
    596597                           i020, i021, i022, i023, i024, i025, i026,   &
    597598                           i027, i028, i029, i030, i031, i032, i033,   &
    598                            i034, i035, i036,                           &
     599                           i034, i035, i036, i037, i038, i039, i040,   &
     600                           i041, i042, i043, i044, i045, i046, i047,   &
     601                           i048, i049,                                 &
    599602                           h001, h002, h003, h004, h005
    600603
     
    14131416         nb_reaction_4 = nb_reaction_4 + 1
    14141417         v_4(:,nb_reaction_4) = i036(:)
     1418
     1419!---     i037: CO2+ + H2O -> H2O+ + CO2
     1420
     1421         !UMIST, from Karpas, Z., Anicich, V.G., and Huntress, W.T., Chem. Phys. Lett., 59, 84 (1978)
     1422
     1423         i037(:) = 2.04e-9 *((300./t_elect(:))**0.5)
     1424         nb_reaction_4 = nb_reaction_4 + 1
     1425         v_4(:,nb_reaction_4) = i037(:)
     1426
     1427!---     i038: CO+ + H2O -> H2O+ + CO
     1428
     1429         !UMIST, from Huntress, W.T., McEwan, M.J., Karpas, Z., and Anicich, V.G., Astrophys. J. Supp. Series, 44, 481 (1980)
     1430
     1431         i038(:) = 1.72e-9*((300./t_elect(:))**0.5)
     1432         nb_reaction_4 = nb_reaction_4 + 1
     1433         v_4(:,nb_reaction_4) = i038(:)
     1434
     1435!---     i039: O+ + H2O -> H2O+ + O
     1436
     1437         !UMIST, from Adams, N.G., Smith, D., and Paulson, J.F., J. Chem. Phys., 72, 288 (1980); Smith, D., Adams, N.G., and Miller, T.M., J. Chem. Phys.., 69, 308 (1978)
     1438
     1439         i039(:) = 3.2e-9*((300./t_elect(:))**0.5)
     1440         nb_reaction_4 = nb_reaction_4 + 1
     1441         v_4(:,nb_reaction_4) = i039(:)
     1442
     1443!---     i040: N2+ + H2O -> H2O+ + N2
     1444
     1445         !UMIST, from Adams, N.G., Smith, D., and Paulson, J.F., J. Chem. Phys., 72, 288 (1980); Smith, D., Adams, N.G., and Miller, T.M., J. Chem. Phys.., 69, 308 (1978)
     1446
     1447         i040(:) = 2.3e-9*((300./t_elect(:))**0.5)
     1448         nb_reaction_4 = nb_reaction_4 + 1
     1449         v_4(:,nb_reaction_4) = i040(:)
     1450
     1451!---     i041: N+ + H2O -> H2O+ + N
     1452
     1453         !UMIST, from Adams, N.G., Smith, D., and Paulson, J.F., J. Chem. Phys., 72, 288 (1980); Smith, D., Adams, N.G., and Miller, T.M., J. Chem. Phys.., 69, 308 (1978)
     1454
     1455         i041(:) = 2.8e-9*((300./t_elect(:))**0.5)
     1456         nb_reaction_4 = nb_reaction_4 + 1
     1457         v_4(:,nb_reaction_4) = i041(:)
     1458
     1459
     1460!---     i042: H+ + H2O -> H2O+ + H
     1461
     1462         !UMIST, from D. Smith, P. Spanel and C. A. Mayhew, Int. J. Mass Spectrom. Ion Proc., 117, 457-473(1992)
     1463
     1464         i042(:) = 6.9e-9*((300./t_elect(:))**0.5)
     1465         nb_reaction_4 = nb_reaction_4 + 1
     1466         v_4(:,nb_reaction_4) = i042(:)
     1467
     1468!---     i043: H2O+ + O2 -> O2+ + H2O
     1469
     1470         !UMIST, from A. B. Raksit and P. Warneck, J. Chem. Soc. Faraday Trans., 76, 1084-1092(1980)
     1471
     1472         i043(:) = 4.6e-10
     1473         nb_reaction_4 = nb_reaction_4 + 1
     1474         v_4(:,nb_reaction_4) = i043(:)
     1475
     1476!---     i044: H2O+ + CO -> HCO+ + OH
     1477
     1478         !UMIST, from Jones, J.D.C., Birkinshaw, K., and Twiddy, N.D., Chem. Phys. Lett., 77, 484 (1981)
     1479
     1480         i044(:) = 5.0e-10
     1481         nb_reaction_4 = nb_reaction_4 + 1
     1482         v_4(:,nb_reaction_4) = i044(:)
     1483
     1484!---     i045: H2O+ + O -> O2+ + H2
     1485
     1486         !UMIST, from Viggiano, A.A, Howarka, F., Albritton, D.L., Fehsenfeld, F.C., Adams, N.G., and Smith, D., Astrophys. J., 236, 492 (1980)
     1487
     1488         i045(:) = 4.0e-11
     1489         nb_reaction_4 = nb_reaction_4 + 1
     1490         v_4(:,nb_reaction_4) = i045(:)
     1491
     1492!---     i046: H2O+ + NO -> NO+ + H2O
     1493
     1494         !UMIST, from A. B. Raksit and P. Warneck, J. Chem. Soc. Faraday Trans., 76, 1084-1092(1980)
     1495
     1496         i046(:) = 2.7e-10
     1497         nb_reaction_4 = nb_reaction_4 + 1
     1498         v_4(:,nb_reaction_4) = i046(:)
     1499
     1500!---     i047: H2O+ + e- -> H + H + O
     1501
     1502         !UMIST, from Rosen, S., Derkatch, A., Semaniak, J., et al., 2000, Far. Disc., 115, 295
     1503         
     1504         i047(:) = 3.05e-7*((300./t_elect(:))**0.5)
     1505         nb_reaction_4 = nb_reaction_4 + 1
     1506         v_4(:,nb_reaction_4) = i047(:)
     1507
     1508!---     i048: H2O+ + e- -> H + OH
     1509         
     1510         !UMIST, from Rosen, S., Derkatch, A., Semaniak, J., et al., 2000, Far. Disc., 115, 295
     1511
     1512         i048(:) = 8.6e-8*((300./t_elect(:))**0.5)
     1513         nb_reaction_4 = nb_reaction_4 + 1
     1514         v_4(:,nb_reaction_4) = i048(:)
     1515
     1516!---     i049: H2O+ + e- -> O + H2
     1517
     1518         !UMIST, from Rosen, S., Derkatch, A., Semaniak, J., et al., 2000, Far. Disc., 115, 295
     1519
     1520         i049(:) = 3.9e-8*((300./t_elect(:))**0.5)
     1521         nb_reaction_4 = nb_reaction_4 + 1
     1522         v_4(:,nb_reaction_4) = i049(:)
    14151523
    14161524      end if   !ionchem
     
    16261734                   i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus,      &
    16271735                   i_n2plus, i_nplus, i_hplus, i_hco2plus, i_hcoplus,   &
    1628                    i_elec)
     1736                   i_h2oplus, i_elec)
    16291737
    16301738!================================================================
     
    16511759           i_co2plus, i_oplus, i_o2plus, i_noplus, i_coplus, &
    16521760           i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus, &
    1653            i_hcoplus, i_elec
     1761           i_hcoplus, i_h2oplus, i_elec
    16541762integer, intent(in) :: nb_reaction_3_max
    16551763                       ! number of quadratic reactions
     
    25452653   indice_4(nb_reaction_4) = z4spec(1.0, i_hcoplus, 1.0, i_elec, 1.0, i_co, 1.0, i_h)
    25462654
     2655!===========================================================
     2656!      i037 : CO2+ + H2O -> H2O+ + CO2
     2657!===========================================================
     2658
     2659   nb_reaction_4 = nb_reaction_4 + 1
     2660   indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_co2)
     2661
     2662!===========================================================
     2663!      i038 : CO+ + H2O -> H2O+ + CO
     2664!===========================================================
     2665
     2666   nb_reaction_4 = nb_reaction_4 + 1
     2667   indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_co)
     2668
     2669!===========================================================
     2670!      i039 : O+ + H2O -> H2O+ + O
     2671!===========================================================
     2672
     2673   nb_reaction_4 = nb_reaction_4 + 1
     2674   indice_4(nb_reaction_4) = z4spec(1.0, i_oplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_o)
     2675
     2676!===========================================================
     2677!      i040 : N2+ + H2O -> H2O+ + N2
     2678!===========================================================
     2679
     2680   nb_reaction_4 = nb_reaction_4 + 1
     2681   indice_4(nb_reaction_4) = z4spec(1.0, i_n2plus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_n2)
     2682
     2683!===========================================================
     2684!      i041 : N+ + H2O -> H2O+ + N
     2685!===========================================================
     2686
     2687   nb_reaction_4 = nb_reaction_4 + 1
     2688   indice_4(nb_reaction_4) = z4spec(1.0, i_nplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_n)
     2689
     2690!===========================================================
     2691!      i042 : H+ + H2O -> H2O+ + H
     2692!===========================================================
     2693
     2694   nb_reaction_4 = nb_reaction_4 + 1
     2695   indice_4(nb_reaction_4) = z4spec(1.0, i_hplus, 1.0, i_h2o, 1.0, i_h2oplus, 1.0, i_h)
     2696
     2697!===========================================================
     2698!      i043 : H2O+ + O2 -> O2+ + H2O
     2699!===========================================================
     2700
     2701   nb_reaction_4 = nb_reaction_4 + 1
     2702   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_o2, 1.0, i_o2plus, 1.0, i_h2o)
     2703
     2704!===========================================================
     2705!      i044 : H2O+ + CO -> HCO+ + OH
     2706!===========================================================
     2707
     2708   nb_reaction_4 = nb_reaction_4 + 1
     2709   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_co, 1.0, i_hcoplus, 1.0, i_oh)
     2710
     2711!===========================================================
     2712!      i045 : H2O+ + O -> O2+ + H2
     2713!===========================================================
     2714
     2715   nb_reaction_4 = nb_reaction_4 + 1
     2716   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_o, 1.0, i_o2plus, 1.0, i_h2)
     2717
     2718!===========================================================
     2719!      i046 : H2O+ + NO -> NO+ + H2O
     2720!===========================================================
     2721
     2722   nb_reaction_4 = nb_reaction_4 + 1
     2723   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_no, 1.0, i_noplus, 1.0, i_h2o)
     2724
     2725!===========================================================
     2726!      i047 : H2O+ + e- -> H + H + O
     2727!===========================================================
     2728
     2729   nb_reaction_4 = nb_reaction_4 + 1
     2730   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_elec, 2.0, i_h, 1.0, i_o)
     2731
     2732!===========================================================
     2733!      i048 : H2O+ + e- -> H + OH
     2734!===========================================================
     2735
     2736   nb_reaction_4 = nb_reaction_4 + 1
     2737   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_elec, 1.0, i_h, 1.0, i_oh)
     2738
     2739!===========================================================
     2740!      i049 : H2O+ + e- -> H2 + O
     2741!===========================================================
     2742
     2743   nb_reaction_4 = nb_reaction_4 + 1
     2744   indice_4(nb_reaction_4) = z4spec(1.0, i_h2oplus, 1.0, i_elec, 1.0, i_h2, 1.0, i_o)
    25472745
    25482746end if    !ionchem
     
    26102808    (nb_reaction_4 /= nb_reaction_4_max)) then
    26112809   print*, 'wrong dimensions in indice'
    2612    stop
     2810   call abort_physic("indice","wrong array dimensions",1)
    26132811end if 
    26142812
     
    26232821                           i_co2plus, i_oplus, i_o2plus, i_noplus,   &
    26242822                           i_coplus, i_cplus, i_n2plus, i_nplus,     &
    2625                            i_hplus, i_hco2plus, i_hcoplus, i_elec,   &
    2626                            dens, rm, c)
     2823                           i_hplus, i_hco2plus, i_hcoplus, i_h2oplus,&
     2824                           i_elec, dens, rm, c)
    26272825       
    26282826!*****************************************************************
     
    26352833     &                      igcm_noplus, igcm_coplus, igcm_cplus,        &
    26362834     &                      igcm_n2plus, igcm_nplus, igcm_hplus,         &
    2637      &                      igcm_hco2plus, igcm_hcoplus, igcm_elec
     2835     &                      igcm_hco2plus, igcm_hcoplus, igcm_h2oplus,   &
     2836     &                      igcm_elec
    26382837
    26392838      implicit none
    26402839
    2641 #include "callkeys.h"
     2840      include "callkeys.h"
    26422841
    26432842!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
     
    26562855                 i_co2plus, i_oplus, i_o2plus, i_noplus, i_coplus,   &
    26572856                 i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus,    &
    2658                  i_hcoplus, i_elec
     2857                 i_hcoplus, i_h2oplus, i_elec
    26592858
    26602859      real :: zycol(nlayer,nq)      ! volume mixing ratios in the gcm
     
    26832882         if (igcm_co2 == 0) then
    26842883            write(*,*) "gcmtochim: Error; no CO2 tracer !!!"
    2685             stop
     2884            call abort_physic("gcmtochim","missing co2 tracer",1)
    26862885         endif
    26872886         if (igcm_co == 0) then
    26882887            write(*,*) "gcmtochim: Error; no CO tracer !!!"
    2689             stop
     2888            call abort_physic("gcmtochim","missing co tracer",1)
    26902889         end if
    26912890         if (igcm_o == 0) then
    26922891            write(*,*) "gcmtochim: Error; no O tracer !!!"
    2693             stop
     2892            call abort_physic("gcmtochim","missing o tracer",1)
    26942893         end if
    26952894         if (igcm_o1d == 0) then
    26962895            write(*,*) "gcmtochim: Error; no O1D tracer !!!"
    2697             stop
     2896            call abort_physic("gcmtochim","missing o1d tracer",1)
    26982897         end if
    26992898         if (igcm_o2 == 0) then
    27002899            write(*,*) "gcmtochim: Error; no O2 tracer !!!"
    2701             stop
     2900            call abort_physic("gcmtochim","missing o2 tracer",1)
    27022901         end if
    27032902         if (igcm_o3 == 0) then
    27042903            write(*,*) "gcmtochim: Error; no O3 tracer !!!"
    2705             stop
     2904            call abort_physic("gcmtochim","missing o3 tracer",1)
    27062905         end if
    27072906         if (igcm_h == 0) then
    27082907            write(*,*) "gcmtochim: Error; no H tracer !!!"
    2709             stop
     2908            call abort_physic("gcmtochim","missing h tracer",1)
    27102909         end if
    27112910         if (igcm_h2 == 0) then
    27122911            write(*,*) "gcmtochim: Error; no H2 tracer !!!"
    2713             stop
     2912            call abort_physic("gcmtochim","missing h2 tracer",1)
    27142913         end if
    27152914         if (igcm_oh == 0) then
    27162915            write(*,*) "gcmtochim: Error; no OH tracer !!!"
    2717             stop
     2916            call abort_physic("gcmtochim","missing oh tracer",1)
    27182917         end if
    27192918         if (igcm_ho2 == 0) then
    27202919            write(*,*) "gcmtochim: Error; no HO2 tracer !!!"
    2721             stop
     2920            call abort_physic("gcmtochim","missing ho2 tracer",1)
    27222921         end if
    27232922         if (igcm_h2o2 == 0) then
    27242923            write(*,*) "gcmtochim: Error; no H2O2 tracer !!!"
    2725             stop
     2924            call abort_physic("gcmtochim","missing h2o2 tracer",1)
    27262925         end if
    27272926         if (igcm_n == 0) then
    27282927            write(*,*) "gcmtochim: Error; no N tracer !!!"
    2729             stop
     2928            call abort_physic("gcmtochim","missing n tracer",1)
    27302929         end if
    27312930         if (igcm_n2d == 0) then
    27322931            write(*,*) "gcmtochim: Error; no N2D tracer !!!"
    2733             stop
     2932            call abort_physic("gcmtochim","missing n2d tracer",1)
    27342933         end if
    27352934         if (igcm_no == 0) then
    27362935            write(*,*) "gcmtochim: Error; no NO tracer !!!"
    2737             stop
     2936            call abort_physic("gcmtochim","missing no tracer",1)
    27382937         end if
    27392938         if (igcm_no2 == 0) then
    27402939            write(*,*) "gcmtochim: Error; no NO2 tracer !!!"
    2741             stop
     2940            call abort_physic("gcmtochim","missing no2 tracer",1)
    27422941         end if
    27432942         if (igcm_n2 == 0) then
    27442943            write(*,*) "gcmtochim: Error; no N2 tracer !!!"
    2745             stop
     2944            call abort_physic("gcmtochim","missing n2 tracer",1)
    27462945         end if
    27472946         if (igcm_h2o_vap == 0) then
    27482947            write(*,*) "gcmtochim: Error; no water vapor tracer !!!"
    2749             stop
     2948            call abort_physic("gcmtochim","missing h2o_vap tracer",1)
    27502949         end if
    27512950         if (ionchem) then
    27522951            if (igcm_co2plus == 0) then
    27532952               write(*,*) "gcmtochim: Error; no CO2+ tracer !!!"
    2754                stop
     2953               call abort_physic("gcmtochim","missing co2plus tracer",1)
    27552954            end if
    27562955            if (igcm_oplus == 0) then
    27572956               write(*,*) "gcmtochim: Error; no O+ tracer !!!"
    2758                stop
     2957               call abort_physic("gcmtochim","missing oplus tracer",1)
    27592958            end if
    27602959            if (igcm_o2plus == 0) then
    27612960               write(*,*) "gcmtochim: Error; no O2+ tracer !!!"
    2762                stop
     2961               call abort_physic("gcmtochim","missing o2plus tracer",1)
    27632962            end if
    27642963            if (igcm_noplus == 0) then
    27652964               write(*,*) "gcmtochim: Error; no NO+ tracer !!!"
    2766                stop
     2965               call abort_physic("gcmtochim","missing noplus tracer",1)
    27672966            endif
    27682967            if (igcm_coplus == 0) then
    27692968               write(*,*) "gcmtochim: Error; no CO+ tracer !!!"
    2770                stop
     2969               call abort_physic("gcmtochim","missing coplus tracer",1)
    27712970            endif
    27722971            if (igcm_cplus == 0) then
    27732972               write(*,*) "gcmtochim: Error; no C+ tracer !!!"
    2774                stop
     2973               call abort_physic("gcmtochim","missing cplus tracer",1)
    27752974            endif
    27762975            if (igcm_n2plus == 0) then
    27772976               write(*,*) "gcmtochim: Error; no N2+ tracer !!!"
    2778                stop
     2977               call abort_physic("gcmtochim","missing n2plus tracer",1)
    27792978            endif
    27802979            if (igcm_nplus == 0) then
    27812980               write(*,*) "gcmtochim: Error; no N+ tracer !!!"
    2782                stop
     2981               call abort_physic("gcmtochim","missing nplus tracer",1)
    27832982            endif
    27842983            if (igcm_hplus == 0) then
    27852984               write(*,*) "gcmtochim: Error; no H+ tracer !!!"
    2786                stop
     2985               call abort_physic("gcmtochim","missing hplus tracer",1)
    27872986            endif
    27882987            if (igcm_hco2plus == 0) then
    27892988               write(*,*) "gcmtochim: Error; no HCO2+ tracer !!!"
    2790                stop
     2989               call abort_physic("gcmtochim","missing hco2plus tracer",1)
    27912990            endif
    27922991            if (igcm_hcoplus == 0) then
    27932992               write(*,*) "gcmtochim: Error; no HCO+ tracer !!!"
    2794                stop
     2993               call abort_physic("gcmtochim","missing hcoplus tracer",1)
     2994            endif
     2995            if (igcm_h2oplus == 0) then
     2996               write(*,*) "gcmtochim: Error; no H2O+ tracer !!!"
     2997               call abort_physic("gcmtochim","missing h2oplus tracer",1)
    27952998            endif
    27962999            if (igcm_elec == 0) then
    27973000               write(*,*) "gcmtochim: Error; no e- tracer !!!"
    2798                stop
     3001               call abort_physic("gcmtochim","missing elec tracer",1)
    27993002            end if
    28003003         end if  ! ionchem
     
    28393042            rm(l,i_hco2plus) = zycol(l, igcm_hco2plus)
    28403043            rm(l,i_hcoplus)  = zycol(l, igcm_hcoplus)
     3044            rm(l,i_h2oplus)  = zycol(l, igcm_h2oplus)
    28413045            rm(l,i_elec)     = zycol(l, igcm_elec)
    28423046         end do
     
    28673071                           i_co2plus, i_oplus, i_o2plus, i_noplus,    &
    28683072                           i_coplus, i_cplus, i_n2plus, i_nplus,      &
    2869                            i_hplus, i_hco2plus, i_hcoplus, i_elec,    &
    2870                            dens, c)
     3073                           i_hplus, i_hco2plus, i_hcoplus, i_h2oplus, &
     3074                           i_elec, dens, c)
    28713075 
    28723076!*****************************************************************
     
    28793083                            igcm_noplus, igcm_coplus, igcm_cplus,         &
    28803084                            igcm_n2plus, igcm_nplus, igcm_hplus,          &
    2881                             igcm_hco2plus, igcm_hcoplus, igcm_elec
     3085                            igcm_hco2plus, igcm_hcoplus, igcm_h2oplus,    &
     3086                            igcm_elec
    28823087
    28833088      implicit none
     
    28993104                 i_co2plus, i_oplus, i_o2plus, i_noplus,         &
    29003105                 i_coplus, i_cplus, i_n2plus, i_nplus,           &
    2901                  i_hplus, i_hco2plus, i_hcoplus, i_elec
     3106                 i_hplus, i_hco2plus, i_hcoplus, i_h2oplus, i_elec
    29023107
    29033108      real :: dens(nlayer)     ! total number density (molecule.cm-3)
     
    29533158            zycol(l, igcm_hco2plus)= c(l,i_hco2plus)/dens(l)
    29543159            zycol(l, igcm_hcoplus) = c(l,i_hcoplus)/dens(l)
     3160            zycol(l, igcm_h2oplus) = c(l,i_h2oplus)/dens(l)
    29553161            zycol(l, igcm_elec)    = c(l,i_elec)/dens(l)
    29563162         end do
  • trunk/LMDZ.MARS/libf/phymars/initracer.F

    r2284 r2302  
    105105      igcm_hco2plus=0
    106106      igcm_hcoplus=0
     107      igcm_h2oplus=0
    107108      igcm_elec=0
    108109
     
    327328          igcm_hcoplus=iq
    328329          mmol(igcm_hcoplus)=29.
     330          count=count+1
     331        endif
     332        if (noms(iq).eq."h2oplus") then
     333          igcm_h2oplus=iq
     334          mmol(igcm_h2oplus)=18.
    329335          count=count+1
    330336        endif
     
    374380          write(*,*)'      ',iq,' ',trim(noms(iq))
    375381        enddo
    376         stop
     382        call abort_physic("initracer","tracer mismatch",1)
    377383      else
    378384        write(*,*) "initracer: found all expected tracers, namely:"
     
    522528        print*,'initracer: STOP!',
    523529     $   ' properties of dust need to be set in initracer !!!'
    524         stop
     530        call abort_physic("initracer","dustbin properties issue",1)
    525531
    526532       else if (dustbin.eq.1) then
     
    633639           write(*,*) "  cannot use doubleq option without ",
    634640     &                "a dust_mass tracer !"
    635            stop
     641           call abort_physic("initracer","doubleq issue",1)
    636642         endif
    637643         if (igcm_dust_number.eq.0) then
     
    639645           write(*,*) "  cannot use doubleq option without ",
    640646     &                "a dust_number tracer !"
    641            stop
     647           call abort_physic("initracer","doubleq issue",1)
    642648         endif
    643649       endif
     
    653659         if (count.ne.dustbin) then
    654660           write(*,*) "initracer: error !!"
    655            write(*,*) "  dusbin is set to ",dustbin,
     661           write(*,*) "  dustbin is set to ",dustbin,
    656662     &                " but we only have the following dust tracers:"
    657663           do iq=1,count
    658664             write(*,*)"   ",trim(noms(igcm_dustbin(iq)))
    659665           enddo
    660            stop
     666           call abort_physic("initracer","dustbin issue",1)
    661667         endif
    662668       endif
     
    668674           write(*,*) "  cannot use water option without ",
    669675     &                "an h2o_vap tracer !"
    670            stop
     676           call abort_physic("initracer","water cycle issue",1)
    671677         endif
    672678         if (igcm_h2o_ice.eq.0) then
     
    674680           write(*,*) "  cannot use water option without ",
    675681     &                "an h2o_ice tracer !"
    676            stop
     682           call abort_physic("initracer","water cycle issue",1)
    677683         endif
    678684       endif
     
    684690             write(*,*) "  cannot use co2 clouds option without ",
    685691     &            "a co2 tracer !"
    686           stop
     692             call abort_physic("initracer","co2 clouds issue",1)
    687693          endif
    688694          if (igcm_co2_ice .eq. 0) then
     
    690696             write(*,*) "  cannot use co2 clouds option without ",
    691697     &            "a co2_ice tracer !"
    692              stop
     698             call abort_physic("initracer","co2 clouds issue",1)
    693699          endif
    694700       endif
     
    700706           write(*,*) "  cannot use rdstorm option without ",
    701707     &                "a stormdust_mass tracer !"
    702            stop
     708           call abort_physic("initracer","rdstorm issue",1)
    703709         endif
    704710         if (igcm_stormdust_number.eq.0) then
     
    706712           write(*,*) "  cannot use rdstorm option without ",
    707713     &                "a stormdust_number tracer !"
    708            stop
     714           call abort_physic("initracer","rdstorm issue",1)
    709715         endif
    710716       endif
     
    716722           write(*,*) "  cannot use slpwind option without ",
    717723     &                "a topdust_mass tracer !"
    718            stop
     724           call abort_physic("initracer","slpwind issue",1)
    719725         endif
    720726         if (igcm_topdust_number.eq.0) then
     
    722728           write(*,*) "  cannot use slpwind option without ",
    723729     &                "a topdust_number tracer !"
    724            stop
     730           call abort_physic("initracer","slpwind issue",1)
    725731         endif
    726732       endif
     
    732738             write(*,*) "initracer: error !!"
    733739             write(*,*) "  with nltemodel>0, we need the co2 tracer!"
    734              stop
     740             call abort_physic("initracer","missing co2 tracer",1)
    735741           endif
    736742           if (igcm_co.eq.0) then
    737743             write(*,*) "initracer: error !!"
    738744             write(*,*) "  with nltemodel>0, we need the co tracer!"
    739              stop
     745             call abort_physic("initracer","missing co tracer",1)
    740746           endif
    741747           if (igcm_o.eq.0) then
    742748             write(*,*) "initracer: error !!"
    743749             write(*,*) "  with nltemodel>0, we need the o tracer!"
    744              stop
     750             call abort_physic("initracer","missing o tracer",1)
    745751           endif
    746752           if (igcm_n2.eq.0) then
    747753             write(*,*) "initracer: error !!"
    748754             write(*,*) "  with nltemodel>0, we need the n2 tracer!"
    749              stop
     755             call abort_physic("initracer","missing n2 tracer",1)
    750756           endif
    751757         endif
     
    758764           write(*,*) "  cannot use scavenging option without ",
    759765     &                "a ccn_mass or ccnco2_mass tracer !"
    760            stop
     766             call abort_physic("initracer","scavenging issue",1)
    761767         endif
    762768         if (igcm_ccn_number.eq.0 .and. igcm_ccnco2_number.eq.0 ) then
     
    764770           write(*,*) "  cannot use scavenging option without ",
    765771     &                "a ccn_number or ccnco2_number tracer !"
    766            stop
     772             call abort_physic("initracer","scavenging issue",1)
    767773         endif
    768774       endif ! of if (scavenging)
     
    774780           write(*,*) "  cannot use chemistry option without ",
    775781     &                "a co2 tracer !"
    776          stop
     782           call abort_physic("initracer","missing co2 tracer",1)
    777783         endif
    778784         if (igcm_co.eq.0) then
     
    780786           write(*,*) "  cannot use chemistry option without ",
    781787     &                "a co tracer !"
    782          stop
     788           call abort_physic("initracer","missing co tracer",1)
    783789         endif
    784790         if (igcm_o.eq.0) then
     
    786792           write(*,*) "  cannot use chemistry option without ",
    787793     &                "a o tracer !"
    788          stop
     794           call abort_physic("initracer","missing o tracer",1)
    789795         endif
    790796         if (igcm_o1d.eq.0) then
     
    792798           write(*,*) "  cannot use chemistry option without ",
    793799     &                "a o1d tracer !"
    794          stop
     800           call abort_physic("initracer","missing o1d tracer",1)
    795801         endif
    796802         if (igcm_o2.eq.0) then
     
    798804           write(*,*) "  cannot use chemistry option without ",
    799805     &                "an o2 tracer !"
    800          stop
     806           call abort_physic("initracer","missing o2 tracer",1)
    801807         endif
    802808         if (igcm_o3.eq.0) then
     
    804810           write(*,*) "  cannot use chemistry option without ",
    805811     &                "an o3 tracer !"
    806          stop
     812           call abort_physic("initracer","missing o3 tracer",1)
    807813         endif
    808814         if (igcm_h.eq.0) then
     
    810816           write(*,*) "  cannot use chemistry option without ",
    811817     &                "a h tracer !"
    812          stop
     818           call abort_physic("initracer","missing h tracer",1)
    813819         endif
    814820         if (igcm_h2.eq.0) then
     
    816822           write(*,*) "  cannot use chemistry option without ",
    817823     &                "a h2 tracer !"
    818          stop
     824           call abort_physic("initracer","missing h2 tracer",1)
    819825         endif
    820826         if (igcm_oh.eq.0) then
     
    822828           write(*,*) "  cannot use chemistry option without ",
    823829     &                "an oh tracer !"
    824          stop
     830           call abort_physic("initracer","missing oh tracer",1)
    825831         endif
    826832         if (igcm_ho2.eq.0) then
     
    828834           write(*,*) "  cannot use chemistry option without ",
    829835     &                "a ho2 tracer !"
    830          stop
     836           call abort_physic("initracer","missing ho2 tracer",1)
    831837      endif
    832838         if (igcm_h2o2.eq.0) then
     
    834840           write(*,*) "  cannot use chemistry option without ",
    835841     &                "a h2o2 tracer !"
    836          stop
     842           call abort_physic("initracer","missing h2o2 tracer",1)
    837843         endif
    838844         if (igcm_n2.eq.0) then
     
    840846           write(*,*) "  cannot use chemistry option without ",
    841847     &                "a n2 tracer !"
    842          stop
     848           call abort_physic("initracer","missing n2 tracer",1)
    843849         endif
    844850         if (igcm_ar.eq.0) then
     
    846852           write(*,*) "  cannot use chemistry option without ",
    847853     &                "an ar tracer !"
    848          stop
     854           call abort_physic("initracer","missing ar tracer",1)
    849855         endif
    850856       endif ! of if (photochem .or. callthermos)
  • trunk/LMDZ.MARS/libf/phymars/tracer_mod.F90

    r2284 r2302  
    8787      integer,save :: igcm_hco2plus
    8888      integer,save :: igcm_hcoplus
     89      integer,save :: igcm_h2oplus
    8990      integer,save :: igcm_elec
    9091      ! other tracers
Note: See TracChangeset for help on using the changeset viewer.