Changeset 2042


Ignore:
Timestamp:
Nov 15, 2018, 10:25:09 AM (6 years ago)
Author:
emillour
Message:

Mars GCM:
Modifications to use the parametrized photoabsorbtion coefficients;
a first step towards implementing ionospheric chemistry in the new
chemical solver:

  • change in species indexes in chemthermos.F90, paramfoto_compact.F, hrtherm.F and euvheat.F90
  • calchim.F90: added a variable in call to photochemistry
  • photochemistry.F90: added calls to jthermcalc_e107 and phdisrate, with an additionlal flag, jparam (.false. by default). The computed photodissociation coefficents are sent to v_phot, which is used in the chemistry. Thus concentrations computed in chimtogcm are now done over all atmospheric layers.

FGG

Location:
trunk/LMDZ.MARS
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r2023 r2042  
    26592659- Fix writediagsoil so that it also works in parallel.
    26602660
    2661 
     2661== 15/11/2018 == FGG
     2662Modifications to use the parametrized photoabsorbtion coefficients;
     2663a first step towards implementing ionospheric chemistry in the new
     2664chemical solver:
     2665- change in species indexes in chemthermos.F90, paramfoto_compact.F,
     2666  hrtherm.F and euvheat.F90
     2667- calchim.F90: added a variable in call to photochemistry
     2668- photochemistry.F90: added calls to jthermcalc_e107 and phdisrate,
     2669  with an additionlal flag, jparam (.false. by default). The
     2670  computed photodissociation coefficents are sent to v_phot, which
     2671  is used in the chemistry. Thus concentrations computed in
     2672  chimtogcm are now done over all atmospheric layers.
     2673
     2674et jthermcalc.F
  • trunk/LMDZ.MARS/libf/aeronomars/calchim.F90

    r2031 r2042  
    664664
    665665         if (photochem) then
    666 
    667666            call photochemistry(nlayer,nq,                            &
    668667                           ig,lswitch,zycol,szacol,ptimestep,         &
    669668                           zpress,zlocal,ztemp,zdens,zmmean,dist_sol, &
    670                            surfdust1d,surfice1d,jo3,jh2o,taucol,iter)
     669                           zday,surfdust1d,surfice1d,jo3,jh2o,taucol,iter)
    671670
    672671!        ozone photolysis, for output
     
    735734      end do ! of do ig=1,ngrid
    736735
     736!      stop
    737737!=======================================================================
    738738!     write outputs
     
    754754            call writediagfi(ngrid,'emission_o2',        &
    755755                 'O2 nightglow emission rate','cm-3 s-1',3,emission_o2)
    756 
     756           
    757757            if (callstats) then
    758758               call wstats(ngrid,'jo3','j o3->o1d',       &
  • trunk/LMDZ.MARS/libf/aeronomars/chemthermos.F90

    r1888 r2042  
    9191!!! If some value is changed here, the same change has to
    9292!!! be made into the other subroutines
    93       integer,parameter :: i_co2=1
    94       integer,parameter :: i_o2=2
    95       integer,parameter :: i_o=3
    96       integer,parameter :: i_co=4
    97       integer,parameter :: i_h=5
    98       integer,parameter :: i_oh=6
    99       integer,parameter :: i_ho2=7
    100       integer,parameter :: i_h2=8
    101       integer,parameter :: i_h2o=9
    102       integer,parameter :: i_h2o2=10
    103       integer,parameter :: i_o1d=11
    104       integer,parameter :: i_o3=12
    105       integer,parameter :: i_n2=13
    106       integer,parameter :: i_n=14
    107       integer,parameter :: i_no=15
    108       integer,parameter :: i_n2d=16
    109       integer,parameter :: i_no2=17
     93      integer,parameter :: i_co2  =  1
     94      integer,parameter :: i_co   =  2
     95      integer,parameter :: i_o    =  3
     96      integer,parameter :: i_o1d  =  4
     97      integer,parameter :: i_o2   =  5
     98      integer,parameter :: i_o3   =  6
     99      integer,parameter :: i_h    =  7
     100      integer,parameter :: i_h2   =  8
     101      integer,parameter :: i_oh   =  9
     102      integer,parameter :: i_ho2  = 10
     103      integer,parameter :: i_h2o2 = 11
     104      integer,parameter :: i_h2o  = 12
     105      integer,parameter :: i_n    = 13
     106      integer,parameter :: i_n2d  = 14
     107      integer,parameter :: i_no   = 15
     108      integer,parameter :: i_no2  = 16
     109      integer,parameter :: i_n2   = 17
     110!      integer,parameter :: i_co2=1
     111!      integer,parameter :: i_o2=2
     112!      integer,parameter :: i_o=3
     113!      integer,parameter :: i_co=4
     114!      integer,parameter :: i_h=5
     115!      integer,parameter :: i_oh=6
     116!      integer,parameter :: i_ho2=7
     117!      integer,parameter :: i_h2=8
     118!      integer,parameter :: i_h2o=9
     119!      integer,parameter :: i_h2o2=10
     120!      integer,parameter :: i_o1d=11
     121!      integer,parameter :: i_o3=12
     122!      integer,parameter :: i_n2=13
     123!      integer,parameter :: i_n=14
     124!      integer,parameter :: i_no=15
     125!      integer,parameter :: i_n2d=16
     126!      integer,parameter :: i_no2=17
    110127      integer,parameter :: i_co2plus=18
    111128      integer,parameter :: i_oplus=19
     
    471488      !Photoabsorption coefficients
    472489      call jthermcalc_e107(ig,nlayer,chemthermod,rm,nesptherm,ztemp,zlocal,zenit,zday)
    473          
    474490
    475491      !Chemistry
  • trunk/LMDZ.MARS/libf/aeronomars/euvheat.F90

    r1684 r2042  
    7171!!! ATTENTION. These values have to be identical to those in chemthermos.F90
    7272!!! If the values are changed there, the same has to be done here  !!!
    73       integer,parameter :: i_co2=1
    74       integer,parameter :: i_o2=2
    75       integer,parameter :: i_o=3
    76       integer,parameter :: i_co=4
    77       integer,parameter :: i_h=5
    78       integer,parameter :: i_oh=6
    79       integer,parameter :: i_ho2=7
    80       integer,parameter :: i_h2=8
    81       integer,parameter :: i_h2o=9
    82       integer,parameter :: i_h2o2=10
    83       integer,parameter :: i_o1d=11
    84       integer,parameter :: i_o3=12
    85       integer,parameter :: i_n2=13
    86       integer,parameter :: i_n=14
    87       integer,parameter :: i_no=15
    88       integer,parameter :: i_n2d=16
    89       integer,parameter :: i_no2=17
     73      integer,parameter :: i_co2  =  1
     74      integer,parameter :: i_co   =  2
     75      integer,parameter :: i_o    =  3
     76      integer,parameter :: i_o1d  =  4
     77      integer,parameter :: i_o2   =  5
     78      integer,parameter :: i_o3   =  6
     79      integer,parameter :: i_h    =  7
     80      integer,parameter :: i_h2   =  8
     81      integer,parameter :: i_oh   =  9
     82      integer,parameter :: i_ho2  = 10
     83      integer,parameter :: i_h2o2 = 11
     84      integer,parameter :: i_h2o  = 12
     85      integer,parameter :: i_n    = 13
     86      integer,parameter :: i_n2d  = 14
     87      integer,parameter :: i_no   = 15
     88      integer,parameter :: i_no2  = 16
     89      integer,parameter :: i_n2   = 17
     90!      integer,parameter :: i_co2=1
     91!      integer,parameter :: i_o2=2
     92!      integer,parameter :: i_o=3
     93!      integer,parameter :: i_co=4
     94!      integer,parameter :: i_h=5
     95!      integer,parameter :: i_oh=6
     96!      integer,parameter :: i_ho2=7
     97!      integer,parameter :: i_h2=8
     98!      integer,parameter :: i_h2o=9
     99!      integer,parameter :: i_h2o2=10
     100!      integer,parameter :: i_o1d=11
     101!      integer,parameter :: i_o3=12
     102!      integer,parameter :: i_n2=13
     103!      integer,parameter :: i_n=14
     104!      integer,parameter :: i_no=15
     105!      integer,parameter :: i_n2d=16
     106!      integer,parameter :: i_no2=17
    90107
    91108     
  • trunk/LMDZ.MARS/libf/aeronomars/hrtherm.F

    r1684 r2042  
    4141!!! ATTENTION. These values have to be identical to those in chemthermos.F90
    4242!!! If the values are changed there, the same has to be done here  !!!
    43       integer,parameter :: i_co2=1
    44       integer,parameter :: i_o2=2
    45       integer,parameter :: i_o=3
    46       integer,parameter :: i_co=4
    47       integer,parameter :: i_h=5
    48       integer,parameter :: i_h2=8
    49       integer,parameter :: i_h2o=9
    50       integer,parameter :: i_h2o2=10
    51       integer,parameter :: i_o3=12
    52       integer,parameter :: i_n2=13
    53       integer,parameter :: i_n=14
    54       integer,parameter :: i_no=15
    55       integer,parameter :: i_no2=17
     43      integer,parameter :: i_co2  =  1
     44      integer,parameter :: i_co   =  2
     45      integer,parameter :: i_o    =  3
     46      integer,parameter :: i_o1d  =  4
     47      integer,parameter :: i_o2   =  5
     48      integer,parameter :: i_o3   =  6
     49      integer,parameter :: i_h    =  7
     50      integer,parameter :: i_h2   =  8
     51      integer,parameter :: i_oh   =  9
     52      integer,parameter :: i_ho2  = 10
     53      integer,parameter :: i_h2o2 = 11
     54      integer,parameter :: i_h2o  = 12
     55      integer,parameter :: i_n    = 13
     56      integer,parameter :: i_n2d  = 14
     57      integer,parameter :: i_no   = 15
     58      integer,parameter :: i_no2  = 16
     59      integer,parameter :: i_n2   = 17
     60!      integer,parameter :: i_co2=1
     61!      integer,parameter :: i_o2=2
     62!      integer,parameter :: i_o=3
     63!      integer,parameter :: i_co=4
     64!      integer,parameter :: i_h=5
     65!      integer,parameter :: i_h2=8
     66!      integer,parameter :: i_h2o=9
     67!      integer,parameter :: i_h2o2=10
     68!      integer,parameter :: i_o3=12
     69!      integer,parameter :: i_n2=13
     70!      integer,parameter :: i_n=14
     71!      integer,parameter :: i_no=15
     72!      integer,parameter :: i_no2=17
    5673
    5774c*************************PROGRAM STARTS*******************************
  • trunk/LMDZ.MARS/libf/aeronomars/jthermcalc.F

    r1266 r2042  
    11281128      !!! ATTENTION. These values have to be identical to those in chemthermos.F90
    11291129      !!! If the values are changed there, the same has to be done here  !!!
    1130       integer,parameter :: i_co2=1
    1131       integer,parameter :: i_o2=2
    1132       integer,parameter :: i_o=3
    1133       integer,parameter :: i_co=4
    1134       integer,parameter :: i_h=5
    1135       integer,parameter :: i_h2=8
    1136       integer,parameter :: i_h2o=9
    1137       integer,parameter :: i_h2o2=10
    1138       integer,parameter :: i_o3=12
    1139       integer,parameter :: i_n2=13
    1140       integer,parameter :: i_n=14
    1141       integer,parameter :: i_no=15
    1142       integer,parameter :: i_no2=17
     1130      integer,parameter :: i_co2  =  1
     1131      integer,parameter :: i_co   =  2
     1132      integer,parameter :: i_o    =  3
     1133      integer,parameter :: i_o1d  =  4
     1134      integer,parameter :: i_o2   =  5
     1135      integer,parameter :: i_o3   =  6
     1136      integer,parameter :: i_h    =  7
     1137      integer,parameter :: i_h2   =  8
     1138      integer,parameter :: i_oh   =  9
     1139      integer,parameter :: i_ho2  = 10
     1140      integer,parameter :: i_h2o2 = 11
     1141      integer,parameter :: i_h2o  = 12
     1142      integer,parameter :: i_n    = 13
     1143      integer,parameter :: i_n2d  = 14
     1144      integer,parameter :: i_no   = 15
     1145      integer,parameter :: i_no2  = 16
     1146      integer,parameter :: i_n2   = 17
     1147!      integer,parameter :: i_co2=1
     1148!      integer,parameter :: i_o2=2
     1149!      integer,parameter :: i_o=3
     1150!      integer,parameter :: i_co=4
     1151!      integer,parameter :: i_h=5
     1152!      integer,parameter :: i_h2=8
     1153!      integer,parameter :: i_h2o=9
     1154!      integer,parameter :: i_h2o2=10
     1155!      integer,parameter :: i_o3=12
     1156!      integer,parameter :: i_n2=13
     1157!      integer,parameter :: i_n=14
     1158!      integer,parameter :: i_no=15
     1159!      integer,parameter :: i_no2=17
    11431160
    11441161
     
    13431360      enddo           !Of do i=nlayer,1,-1
    13441361
    1345 
    13461362      return
    13471363
  • trunk/LMDZ.MARS/libf/aeronomars/paramfoto_compact.F

    r1888 r2042  
    8686!!! ATTENTION. These values have to be identical to those in chemthermos.F90
    8787!!! If the values are changed there, the same has to be done here  !!!
    88       integer,parameter :: i_co2=1
    89       integer,parameter :: i_o2=2
    90       integer,parameter :: i_o=3
    91       integer,parameter :: i_co=4
    92       integer,parameter :: i_h=5
    93       integer,parameter :: i_oh=6
    94       integer,parameter :: i_ho2=7
    95       integer,parameter :: i_h2=8
    96       integer,parameter :: i_h2o=9
    97       integer,parameter :: i_h2o2=10
    98       integer,parameter :: i_o1d=11
    99       integer,parameter :: i_o3=12
    100       integer,parameter :: i_n2=13
    101       integer,parameter :: i_n=14
    102       integer,parameter :: i_no=15
    103       integer,parameter :: i_n2d=16
    104       integer,parameter :: i_no2=17
     88!      integer,parameter :: i_co2=1
     89!      integer,parameter :: i_o2=2
     90!      integer,parameter :: i_o=3
     91!      integer,parameter :: i_co=4
     92!      integer,parameter :: i_h=5
     93!      integer,parameter :: i_oh=6
     94!      integer,parameter :: i_ho2=7
     95!      integer,parameter :: i_h2=8
     96!      integer,parameter :: i_h2o=9
     97!      integer,parameter :: i_h2o2=10
     98!      integer,parameter :: i_o1d=11
     99!      integer,parameter :: i_o3=12
     100!      integer,parameter :: i_n2=13
     101!      integer,parameter :: i_n=14
     102!      integer,parameter :: i_no=15
     103!      integer,parameter :: i_n2d=16
     104!      integer,parameter :: i_no2=17
     105      integer,parameter :: i_co2  =  1
     106      integer,parameter :: i_co   =  2
     107      integer,parameter :: i_o    =  3
     108      integer,parameter :: i_o1d  =  4
     109      integer,parameter :: i_o2   =  5
     110      integer,parameter :: i_o3   =  6
     111      integer,parameter :: i_h    =  7
     112      integer,parameter :: i_h2   =  8
     113      integer,parameter :: i_oh   =  9
     114      integer,parameter :: i_ho2  = 10
     115      integer,parameter :: i_h2o2 = 11
     116      integer,parameter :: i_h2o  = 12
     117      integer,parameter :: i_n    = 13
     118      integer,parameter :: i_n2d  = 14
     119      integer,parameter :: i_no   = 15
     120      integer,parameter :: i_no2  = 16
     121      integer,parameter :: i_n2   = 17
    105122      integer,parameter :: i_co2plus=18
    106123      integer,parameter :: i_oplus=19
     
    175192            enddo
    176193         end do
    177          
    178194
    179195         !Reaction rates
  • trunk/LMDZ.MARS/libf/aeronomars/photochemistry.F90

    r2031 r2042  
    1515subroutine photochemistry(nlayer, nq,                                   &
    1616                          ig, lswitch, zycol, sza, ptimestep, press,    &
    17                           alt, temp, dens, zmmean, dist_sol, surfdust1d,&
    18                           surfice1d, jo3, jh2o, tau, iter)
     17                          alt, temp, dens, zmmean, dist_sol, zday,      &
     18                          surfdust1d, surfice1d, jo3, jh2o,tau, iter)
    1919
    2020use photolysis_mod, only : nb_phot_max,       &
    2121                           nb_reaction_3_max, &
    2222                           nb_reaction_4_max
     23
     24use param_v4_h, only: jdistot, jdistot_b
     25
    2326implicit none
    2427
     
    4144real :: zmmean(nlayer)        ! mean molar mass (g/mole)
    4245real :: dist_sol              ! sun distance (au)
     46real :: zday                  ! date (time since Ls=0, in martian days)
    4347real :: surfdust1d(nlayer)    ! dust surface area (cm2/cm3)
    4448real :: surfice1d(nlayer)     ! ice surface area (cm2/cm3)
     
    7074logical, save :: firstcall = .true.
    7175logical :: jonline               ! switch for online photolysis
     76logical :: jparam                ! switch for J parameterization
    7277
    7378! tracer indexes in the chemistry:
     
    9196integer,parameter :: i_n2   = 17
    9297
     98
     99integer :: ilay
     100
    93101real :: ctimestep           ! standard timestep for the chemistry (s)
    94102real :: dt_guess            ! first-guess timestep (s)
     
    144152
    145153jonline = .false.
     154jparam= .false.
    146155
    147156if (jonline) then
     
    155164      v_phot(:,:) = 0.
    156165   end if
     166else if(jparam) then
     167   call jthermcalc_e107(ig,nlayer,2,c,nesp,temp,alt,sza,zday)
     168   
     169   do ilay=1,lswitch-1
     170      call phdisrate(ig,nlayer,2,sza,ilay)
     171   enddo
     172   v_phot(:,1)=jdistot(2,:)
     173   v_phot(:,2)=jdistot_b(2,:)
     174   v_phot(:,3)=jdistot(1,:)
     175   v_phot(:,4)=jdistot_b(1,:)
     176   v_phot(:,5)=jdistot(7,:)
     177   v_phot(:,6)=jdistot_b(7,:)
     178   v_phot(:,7)=jdistot(4,:)
     179   v_phot(:,8)=jdistot(6,:)
     180   v_phot(:,10)=jdistot(5,:)
     181   v_phot(:,11)=jdistot(10,:)
     182   v_phot(:,12)=jdistot(13,:)
     183   v_phot(:,13)=jdistot(8,:)
    157184else
    158185   tau = tau*7./press(1) ! dust in the lookup table is at 7 hpa
     
    18631890
    18641891      do iesp = 1,nesp
    1865          do l = 1,lswitch-1
     1892         do l = 1,nlayer!-1!lswitch-1
    18661893            c(l,iesp) = rm(l,iesp)*dens(l)
    18671894         end do
Note: See TracChangeset for help on using the changeset viewer.