Changeset 2284 for trunk/LMDZ.MARS/libf/aeronomars
- Timestamp:
- Apr 13, 2020, 4:48:01 PM (5 years ago)
- Location:
- trunk/LMDZ.MARS/libf/aeronomars
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/aeronomars/calchim_mod.F90
r2273 r2284 22 22 igcm_coplus, igcm_cplus, igcm_nplus, & 23 23 igcm_noplus, igcm_n2plus, igcm_hplus, & 24 igcm_hco2plus, igcm_ elec, mmol24 igcm_hco2plus, igcm_hcoplus, igcm_elec, mmol 25 25 26 26 use conc_mod, only: mmean ! mean molecular mass of the atmosphere … … 141 141 integer,save :: i_hplus=0 142 142 integer,save :: i_hco2plus=0 143 integer,save :: i_hcoplus=0 143 144 integer,save :: i_elec=0 144 145 … … 542 543 if (i_hco2plus /= 0) then 543 544 write(*,*) "calchim: Error: HCO2+ is present, but O2+ is not!!!" 545 write(*,*) "Both must be in traceur.def if ion chemistry wanted" 546 endif 547 endif 548 i_hcoplus=igcm_hcoplus 549 if(ionchem) then 550 if (i_hcoplus == 0) then 551 write(*,*) "calchim: Error, no HCO+ tracer !!!" 552 write(*,*) "HCO+ is needed if O2+ is in traceur.def" 553 stop 554 else 555 nbq = nbq + 1 556 niq(nbq) = i_hcoplus 557 end if 558 else 559 if (i_hcoplus /= 0) then 560 write(*,*) "calchim: Error: HCO+ is present, but O2+ is not!!!" 544 561 write(*,*) "Both must be in traceur.def if ion chemistry wanted" 545 562 endif … … 630 647 ! set number of reactions, depending on ion chemistry or not 631 648 if (ionchem) then 632 nb_reaction_4_max = 6 1! set number of bimolecular reactions649 nb_reaction_4_max = 67 ! set number of bimolecular reactions 633 650 nb_reaction_3_max = 6 ! set number of quadratic reactions 634 651 nquench = 9 ! set number of quenching + heterogeneous reactions -
trunk/LMDZ.MARS/libf/aeronomars/inichim_newstart.F90
r1918 r2284 117 117 igcm_hplus=0 118 118 igcm_hco2plus=0 119 igcm_hcoplus=0 119 120 igcm_elec=0 120 121 … … 330 331 igcm_hco2plus = iq 331 332 mmol(igcm_hco2plus) = 45. 333 count = count + 1 334 end if 335 if (noms(iq) == "hcoplus") then 336 igcm_hcoplus = iq 337 mmol(igcm_hcoplus) = 29. 332 338 count = count + 1 333 339 end if … … 593 599 .or. igcm_cplus == 0 .or. igcm_nplus == 0 .or. igcm_noplus == 0 & 594 600 .or. igcm_n2plus == 0 .or. igcm_hplus == 0 .or. igcm_hco2plus == 0 & 595 .or. igcm_ elec == 0) then601 .or. igcm_hcoplus == 0 .or. igcm_elec == 0) then 596 602 write(*,*)'inichim_newstart error:' 597 603 write(*,*)'if co2plus is in traceur.def, all other ions must also be' 598 604 write(*,*)'o2plus, oplus, coplus, cplus, nplus, noplus, n2plus' 599 write(*,*)'hplus, hco2plus and elec'605 write(*,*)'hplus, hco2plus, hcoplus, and elec' 600 606 write(*,*)'stop' 601 607 stop … … 616 622 pq(i,j,l,igcm_hplus) = 0. 617 623 pq(i,j,l,igcm_hco2plus) = 0. 624 pq(i,j,l,igcm_hcoplus) = 0. 618 625 pq(i,j,l,igcm_elec) = 0. 619 626 end do … … 633 640 qsurf(1:ngrid,igcm_hplus) = 0. 634 641 qsurf(1:ngrid,igcm_hco2plus) = 0. 642 qsurf(1:ngrid,igcm_hcoplus) = 0. 635 643 qsurf(1:ngrid,igcm_elec) = 0. 636 644 … … 640 648 .or. igcm_cplus /= 0 .or. igcm_nplus /= 0 .or. igcm_noplus /= 0 & 641 649 .or. igcm_n2plus /= 0 .or. igcm_hplus /= 0 .or. igcm_hco2plus /= 0 & 642 .or. igcm_ elec /= 0) then650 .or. igcm_hcoplus /= 0 .or. igcm_elec /= 0) then 643 651 write(*,*)'inichim_newstart error:' 644 652 write(*,*)'some ions are in traceur.def, but not co2plus' -
trunk/LMDZ.MARS/libf/aeronomars/photochemistry.F90
r2273 r2284 112 112 integer,parameter :: i_hplus = 26 113 113 integer,parameter :: i_hco2plus= 27 114 integer,parameter :: i_elec = 28 114 integer,parameter :: i_hcoplus = 28 115 integer,parameter :: i_elec = 29 115 116 116 117 integer :: ilay … … 154 155 i_n, i_n2d, i_no, i_no2, i_n2, i_co2plus, & 155 156 i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus, & 156 i_n2plus, i_nplus, i_hplus, i_hco2plus, i_elec) 157 i_n2plus, i_nplus, i_hplus, i_hco2plus, i_hcoplus, & 158 i_elec) 157 159 firstcall = .false. 158 160 end if … … 168 170 i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus, & 169 171 i_n2plus, i_nplus, i_hplus, i_hco2plus, & 170 i_ elec, dens, rm, c)172 i_hcoplus, i_elec, dens, rm, c) 171 173 172 174 !=================================================================== … … 363 365 if(c(ilev,i_elec).ne.c(ilev,i_co2plus)+c(ilev,i_oplus)+c(ilev,i_o2plus)+& 364 366 c(ilev,i_noplus)+c(ilev,i_coplus)+c(ilev,i_cplus)+c(ilev,i_n2plus)+& 365 c(ilev,i_nplus)+c(ilev,i_hplus)+c(ilev,i_hco2plus)) then 367 c(ilev,i_nplus)+c(ilev,i_hplus)+c(ilev,i_hco2plus)+ & 368 c(ilev,i_hcoplus)) then 366 369 c(ilev,i_elec) = c(ilev,i_co2plus)+c(ilev,i_oplus)+c(ilev,i_o2plus)+ & 367 370 c(ilev,i_noplus)+c(ilev,i_coplus)+c(ilev,i_cplus)+ & 368 371 c(ilev,i_n2plus)+c(ilev,i_nplus)+c(ilev,i_hplus)+ & 369 c(ilev,i_hco2plus) 372 c(ilev,i_hco2plus)+c(ilev,i_hcoplus) 370 373 ! write(*,*)'photochemistry/359' 371 374 ! write(*,*)'Forcing charge neutrality at ilev,',ilev,' ig=',ig … … 393 396 i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus, & 394 397 i_n2plus, i_nplus, i_hplus, i_hco2plus, & 395 i_ elec, dens, c)398 i_hcoplus, i_elec, dens, c) 396 399 contains 397 400 … … 592 595 i013, i014, i015, i016, i017, i018, i019, & 593 596 i020, i021, i022, i023, i024, i025, i026, & 594 i027, i028, i029, i030, & 597 i027, i028, i029, i030, i031, i032, i033, & 598 i034, i035, i036, & 595 599 h001, h002, h003, h004, h005 596 600 … … 1360 1364 nb_reaction_4 = nb_reaction_4 + 1 1361 1365 v_4(:,nb_reaction_4) = i030(:) 1366 1367 !--- i031: HCO2+ + O -> HCO+ + O2 1368 1369 ! UMIST 1370 1371 i031(:) = 1.e-9 1372 nb_reaction_4 = nb_reaction_4 + 1 1373 v_4(:,nb_reaction_4) = i031(:) 1374 1375 !--- i032: HCO2+ + CO -> HCO+ + CO2 1376 1377 ! UMIST, from Prassad & Huntress 1980 1378 1379 i032(:) = 7.8e-10 1380 nb_reaction_4 = nb_reaction_4 + 1 1381 v_4(:,nb_reaction_4) = i032(:) 1382 1383 !--- i033: H+ + CO2 -> HCO+ + O 1384 1385 ! UMIST, from Smith et al., Int. J. Mass Spectrom. Ion Proc., 117, 457-473(1992) 1386 1387 i033(:) = 3.5e-9 1388 nb_reaction_4 = nb_reaction_4 + 1 1389 v_4(:,nb_reaction_4) = i033(:) 1390 1391 1392 !--- i034: CO2+ + H -> HCO+ + O 1393 1394 ! Seen in Fox 2015, from Borodi et al., Int. J. Mass Spectrom. 280, 218-225, 2009 1395 1396 i034(:) = 4.5e-10 1397 nb_reaction_4 = nb_reaction_4 + 1 1398 v_4(:,nb_reaction_4) = i034(:) 1399 1400 !--- i035: CO+ + H2 -> HCO+ + H 1401 1402 !UMIST, from Scott et al., J. Chem. Phys., 106, 3982-3987(1997) 1403 1404 i035(:) = 7.5e-10 1405 nb_reaction_4 = nb_reaction_4 + 1 1406 v_4(:,nb_reaction_4) = i035(:) 1407 1408 !--- i036: HCO+ + e- -> CO + H 1409 1410 !UMIST, from Mitchell, Phys. Rep., 186, 215 (1990) 1411 1412 i036(:) = 2.4e-7 *((300./t_elect(:))**0.69) 1413 nb_reaction_4 = nb_reaction_4 + 1 1414 v_4(:,nb_reaction_4) = i036(:) 1362 1415 1363 1416 end if !ionchem … … 1572 1625 i_n, i_n2d, i_no, i_no2, i_n2, i_co2plus, & 1573 1626 i_oplus, i_o2plus, i_noplus, i_coplus, i_cplus, & 1574 i_n2plus, i_nplus, i_hplus, i_hco2plus, i_elec) 1627 i_n2plus, i_nplus, i_hplus, i_hco2plus, i_hcoplus, & 1628 i_elec) 1575 1629 1576 1630 !================================================================ … … 1596 1650 i_n, i_n2d, i_no, i_no2, i_n2, & 1597 1651 i_co2plus, i_oplus, i_o2plus, i_noplus, i_coplus, & 1598 i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus, i_elec 1652 i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus, & 1653 i_hcoplus, i_elec 1599 1654 integer, intent(in) :: nb_reaction_3_max 1600 1655 ! number of quadratic reactions … … 2441 2496 indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_elec, 1.0, i_h, 1.0, i_co2) 2442 2497 2498 2499 !=========================================================== 2500 ! i031 : HCO2+ + O -> HCO+ + O2 2501 !=========================================================== 2502 2503 nb_reaction_4 = nb_reaction_4 + 1 2504 2505 indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_o, 1.0, i_hcoplus, 1.0, i_o2) 2506 2507 2508 !=========================================================== 2509 ! i032 : HCO2+ + CO -> HCO+ + CO2 2510 !=========================================================== 2511 2512 nb_reaction_4 = nb_reaction_4 + 1 2513 indice_4(nb_reaction_4) = z4spec(1.0, i_hco2plus, 1.0, i_co, 1.0, i_hcoplus, 1.0, i_co2) 2514 2515 2516 !=========================================================== 2517 ! i033 : H+ + CO2 -> HCO+ + O 2518 !=========================================================== 2519 2520 nb_reaction_4 = nb_reaction_4 + 1 2521 indice_4(nb_reaction_4) = z4spec(1.0, i_hplus, 1.0, i_co2, 1.0, i_hcoplus, 1.0, i_o) 2522 2523 2524 !=========================================================== 2525 ! i034 : CO2+ + H -> HCO+ + O 2526 !=========================================================== 2527 2528 nb_reaction_4 = nb_reaction_4 + 1 2529 indice_4(nb_reaction_4) = z4spec(1.0, i_co2plus, 1.0, i_h, 1.0, i_hcoplus, 1.0, i_o) 2530 2531 2532 !=========================================================== 2533 ! i035 : CO+ + H2 -> HCO+ + H 2534 !=========================================================== 2535 2536 nb_reaction_4 = nb_reaction_4 + 1 2537 indice_4(nb_reaction_4) = z4spec(1.0, i_coplus, 1.0, i_h2, 1.0, i_hcoplus, 1.0, i_h) 2538 2539 2540 !=========================================================== 2541 ! i036 : HCO+ + e- -> CO + H 2542 !=========================================================== 2543 2544 nb_reaction_4 = nb_reaction_4 + 1 2545 indice_4(nb_reaction_4) = z4spec(1.0, i_hcoplus, 1.0, i_elec, 1.0, i_co, 1.0, i_h) 2546 2547 2443 2548 end if !ionchem 2444 2549 … … 2518 2623 i_co2plus, i_oplus, i_o2plus, i_noplus, & 2519 2624 i_coplus, i_cplus, i_n2plus, i_nplus, & 2520 i_hplus, i_hco2plus, i_elec, dens, rm, c) 2625 i_hplus, i_hco2plus, i_hcoplus, i_elec, & 2626 dens, rm, c) 2521 2627 2522 2628 !***************************************************************** … … 2529 2635 & igcm_noplus, igcm_coplus, igcm_cplus, & 2530 2636 & igcm_n2plus, igcm_nplus, igcm_hplus, & 2531 & igcm_hco2plus, igcm_ elec2637 & igcm_hco2plus, igcm_hcoplus, igcm_elec 2532 2638 2533 2639 implicit none … … 2549 2655 i_n, i_n2d, i_no, i_no2, i_n2, & 2550 2656 i_co2plus, i_oplus, i_o2plus, i_noplus, i_coplus, & 2551 i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus, i_elec 2657 i_cplus, i_n2plus, i_nplus, i_hplus, i_hco2plus, & 2658 i_hcoplus, i_elec 2552 2659 2553 2660 real :: zycol(nlayer,nq) ! volume mixing ratios in the gcm … … 2683 2790 stop 2684 2791 endif 2792 if (igcm_hcoplus == 0) then 2793 write(*,*) "gcmtochim: Error; no HCO+ tracer !!!" 2794 stop 2795 endif 2685 2796 if (igcm_elec == 0) then 2686 2797 write(*,*) "gcmtochim: Error; no e- tracer !!!" … … 2727 2838 rm(l,i_hplus) = zycol(l, igcm_hplus) 2728 2839 rm(l,i_hco2plus) = zycol(l, igcm_hco2plus) 2840 rm(l,i_hcoplus) = zycol(l, igcm_hcoplus) 2729 2841 rm(l,i_elec) = zycol(l, igcm_elec) 2730 2842 end do … … 2755 2867 i_co2plus, i_oplus, i_o2plus, i_noplus, & 2756 2868 i_coplus, i_cplus, i_n2plus, i_nplus, & 2757 i_hplus, i_hco2plus, i_elec, dens, c) 2869 i_hplus, i_hco2plus, i_hcoplus, i_elec, & 2870 dens, c) 2758 2871 2759 2872 !***************************************************************** … … 2766 2879 igcm_noplus, igcm_coplus, igcm_cplus, & 2767 2880 igcm_n2plus, igcm_nplus, igcm_hplus, & 2768 igcm_hco2plus, igcm_ elec2881 igcm_hco2plus, igcm_hcoplus, igcm_elec 2769 2882 2770 2883 implicit none … … 2786 2899 i_co2plus, i_oplus, i_o2plus, i_noplus, & 2787 2900 i_coplus, i_cplus, i_n2plus, i_nplus, & 2788 i_hplus, i_hco2plus, i_ elec2901 i_hplus, i_hco2plus, i_hcoplus, i_elec 2789 2902 2790 2903 real :: dens(nlayer) ! total number density (molecule.cm-3) … … 2839 2952 zycol(l, igcm_hplus) = c(l,i_hplus)/dens(l) 2840 2953 zycol(l, igcm_hco2plus)= c(l,i_hco2plus)/dens(l) 2954 zycol(l, igcm_hcoplus) = c(l,i_hcoplus)/dens(l) 2841 2955 zycol(l, igcm_elec) = c(l,i_elec)/dens(l) 2842 2956 end do
Note: See TracChangeset
for help on using the changeset viewer.