Changeset 1660 for trunk/LMDZ.MARS/libf


Ignore:
Timestamp:
Feb 8, 2017, 4:36:25 PM (8 years ago)
Author:
emillour
Message:

Mars GCM:

  • Added possibility to run with an Helium "he" tracer (to be initialized at constant value of 3.6e-7 kg/kg_air, i.e. the 4ppm of Krasnopolsky 1996 EUVE satellite, using newstart).
  • corrected case for CH4 in aeronomars/photochemistry.F (was using undefined indexes when there is no CH4).
  • updated aki/cpi coefficients for Argon used to compute mean atmospheric Cp and thermal conductivity in aeronomars/concentrations.F

JYC+EM

Location:
trunk/LMDZ.MARS/libf
Files:
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/aeronomars/concentrations.F

    r1266 r1660  
    99     &                      igcm_o2plus, igcm_coplus, igcm_cplus,
    1010     &                      igcm_nplus, igcm_noplus, igcm_n2plus,
    11      &                      igcm_hplus, igcm_hco2plus, mmol
     11     &                      igcm_hplus, igcm_hco2plus, mmol,
     12     &                      igcm_he
    1213      use conc_mod, only: mmean, Akknew, rnew, cpnew
    13       USE comcstfi_h                   
    1414      implicit none
    1515
     
    136136            nbq = nbq + 1
    137137            niq(nbq) = igcm_ar
    138             aki(nbq) = 0.0      !?
    139             cpi(nbq) = 1.000e3  !?
     138            aki(nbq) = 3.4e-4
     139            cpi(nbq) = 5.2e2
     140            ! aki/cpi from Leslie A. Guildner,
     141            ! JOURNAL OF RESEARCH of the National Bureau of Standards-
     142            ! A. Physics and Chemistry
     143            ! Vol. 79A, No.2, March-April 1975
    140144         end if
    141145         if (igcm_h2o_vap /= 0) then
     
    168172            aki(nbq) = 0.0
    169173            cpi(nbq) = 0.0
     174         endif
     175         if(igcm_he /= 0) then
     176            nbq = nbq + 1
     177            niq(nbq) = igcm_he
     178            aki(nbq) = 30.e-4
     179            cpi(nbq) = 5.2e3
     180            ! aki/cpi from Leslie A. Guildner,
     181            ! JOURNAL OF RESEARCH of the National Bureau of Standards-
     182            ! A. Physics and Chemistry
     183            ! Vol. 79A, No.2, March-April 1975
    170184         endif
    171185         if(igcm_co2plus /= 0) then
  • trunk/LMDZ.MARS/libf/aeronomars/inichim_newstart.F90

    r1621 r1660  
    5353! local :
    5454
    55       integer :: iq, i, j, l, n, nbqchem
     55      integer :: iq, i, j, l, n
    5656      integer :: count, ierr, dummy
    5757      real    :: mmean(nbp_lon+1,nbp_lat,nbp_lev)             ! mean molecular mass (g)
     
    7676      nqmx=nq ! initialize value of nqmx
    7777     
    78       do iq = 1,nqmx
    79         igcm_dustbin(iq) = 0
    80       end do
    81 
    82       igcm_dust_mass   = 0
    83       igcm_dust_number = 0
    84       igcm_ccn_mass    = 0
    85       igcm_ccn_number  = 0
    86       igcm_h2o_vap     = 0
    87       igcm_h2o_ice     = 0
    88       igcm_co2         = 0
    89       igcm_co          = 0
    90       igcm_o           = 0
    91       igcm_o1d         = 0
    92       igcm_o2          = 0
    93       igcm_o3          = 0
    94       igcm_h           = 0
    95       igcm_h2          = 0
    96       igcm_oh          = 0
    97       igcm_ho2         = 0
    98       igcm_h2o2        = 0
    99       igcm_ch4         = 0
    100       igcm_n2          = 0
    101       igcm_ar          = 0
    102       igcm_ar_n2       = 0
    103       igcm_co2plus     = 0
    104       igcm_oplus       = 0
    105       igcm_o2plus      = 0
    106       igcm_coplus      = 0
    107       igcm_cplus       = 0
    108       igcm_nplus       = 0
    109       igcm_noplus      = 0
    110       igcm_n2plus      = 0
    111       igcm_hplus       = 0
    112       igcm_hco2plus    = 0
    113       igcm_elec        = 0
     78      igcm_dustbin(1:nq)=0
     79      igcm_co2_ice=0
     80      igcm_ccnco2_mass=0
     81      igcm_ccnco2_number=0
     82      igcm_dust_mass=0
     83      igcm_dust_number=0
     84      igcm_ccn_mass=0
     85      igcm_ccn_number=0
     86      igcm_dust_submicron=0
     87      igcm_h2o_vap=0
     88      igcm_h2o_ice=0
     89      igcm_co2=0
     90      igcm_co=0
     91      igcm_o=0
     92      igcm_o1d=0
     93      igcm_o2=0
     94      igcm_o3=0
     95      igcm_h=0
     96      igcm_h2=0
     97      igcm_oh=0
     98      igcm_ho2=0
     99      igcm_h2o2=0
     100      igcm_ch4=0
     101      igcm_n2=0
     102      igcm_ar=0
     103      igcm_ar_n2=0
     104      igcm_n=0
     105      igcm_no=0
     106      igcm_no2=0
     107      igcm_n2d=0
     108      igcm_he=0
     109      igcm_co2plus=0
     110      igcm_oplus=0
     111      igcm_o2plus=0
     112      igcm_coplus=0
     113      igcm_cplus=0
     114      igcm_nplus=0
     115      igcm_noplus=0
     116      igcm_n2plus=0
     117      igcm_hplus=0
     118      igcm_hco2plus=0
     119      igcm_elec=0
    114120
    115121! 1.2 find dust tracers
     
    167173! 1.3 find chemistry and water tracers
    168174
    169       nbqchem = 0
    170175      do iq = 1,nqmx
    171176         if (noms(iq) == "co2") then
     
    173178            mmol(igcm_co2) = 44.
    174179            count = count + 1
    175             nbqchem = nbqchem + 1
    176180        end if
    177181        if (noms(iq) == "co") then
     
    179183           mmol(igcm_co) = 28.
    180184           count = count + 1
    181            nbqchem = nbqchem + 1
    182185        end if
    183186        if (noms(iq) == "o") then
     
    185188           mmol(igcm_o) = 16.
    186189           count = count + 1
    187            nbqchem = nbqchem + 1
    188190        end if
    189191        if (noms(iq) == "o1d") then
     
    191193           mmol(igcm_o1d) = 16.
    192194           count = count + 1
    193            nbqchem = nbqchem + 1
    194195        end if
    195196        if (noms(iq) == "o2") then
     
    197198           mmol(igcm_o2) = 32.
    198199           count = count + 1
    199            nbqchem = nbqchem + 1
    200200        end if
    201201        if (noms(iq) == "o3") then
     
    203203           mmol(igcm_o3) = 48.
    204204           count = count + 1
    205            nbqchem = nbqchem + 1
    206205        end if
    207206        if (noms(iq) == "h") then
     
    209208           mmol(igcm_h) = 1.
    210209           count = count + 1
    211            nbqchem = nbqchem + 1
    212210        end if
    213211        if (noms(iq) == "h2") then
     
    215213           mmol(igcm_h2) = 2.
    216214           count = count + 1
    217            nbqchem = nbqchem + 1
    218215        end if
    219216        if (noms(iq) == "oh") then
     
    221218           mmol(igcm_oh) = 17.
    222219           count = count + 1
    223            nbqchem = nbqchem + 1
    224220        end if
    225221        if (noms(iq) == "ho2") then
     
    227223           mmol(igcm_ho2) = 33.
    228224           count = count + 1
    229            nbqchem = nbqchem + 1
    230225        end if
    231226        if (noms(iq) == "h2o2") then
     
    233228           mmol(igcm_h2o2) = 34.
    234229           count = count + 1
    235            nbqchem = nbqchem + 1
    236230        end if
    237231        if (noms(iq) == "ch4") then
     
    239233           mmol(igcm_ch4) = 16.
    240234           count = count + 1
    241            nbqchem = nbqchem + 1
    242235        end if
    243236        if (noms(iq) == "n2") then
     
    245238           mmol(igcm_n2) = 28.
    246239           count = count + 1
    247            nbqchem = nbqchem + 1
    248240        end if
    249241        if (noms(iq) == "n") then
     
    251243           mmol(igcm_n) = 14.
    252244           count = count + 1
    253            nbqchem = nbqchem + 1
    254245        end if
    255246        if (noms(iq) == "n2d") then
     
    257248           mmol(igcm_n2d) = 14.
    258249           count = count + 1
    259            nbqchem = nbqchem + 1
    260250        end if
    261251        if (noms(iq) == "no") then
     
    263253           mmol(igcm_no) = 30.
    264254           count = count + 1
    265            nbqchem = nbqchem + 1
    266255        end if
    267256        if (noms(iq) == "no2") then
     
    269258           mmol(igcm_no2) = 46.
    270259           count = count + 1
    271            nbqchem = nbqchem + 1
    272260        end if
    273261        if (noms(iq) == "ar") then
     
    275263           mmol(igcm_ar) = 40.
    276264           count = count + 1
    277            nbqchem = nbqchem + 1
    278265        end if
    279266        if (noms(iq) == "h2o_vap") then
     
    281268           mmol(igcm_h2o_vap) = 18.
    282269           count = count + 1
    283            nbqchem = nbqchem + 1
    284270        end if
    285271        if (noms(iq) == "h2o_ice") then
     
    287273           mmol(igcm_h2o_ice) = 18.
    288274           count = count + 1
    289            nbqchem = nbqchem + 1
    290         end if
     275        end if
     276        if (noms(iq).eq."he") then
     277          igcm_he=iq
     278          mmol(igcm_he)=4.
     279          count=count+1
     280        endif
    291281
    292282! 1.4 find ions
     
    296286           mmol(igcm_co2plus) = 44.
    297287           count = count + 1
    298            nbqchem = nbqchem + 1
    299288        end if
    300289        if (noms(iq) == "oplus") then
     
    302291           mmol(igcm_oplus) = 16.
    303292           count = count + 1
    304            nbqchem = nbqchem + 1
    305293        end if
    306294        if (noms(iq) == "o2plus") then
     
    308296           mmol(igcm_o2plus) = 32.
    309297           count = count + 1
    310            nbqchem = nbqchem + 1
    311298        end if
    312299        if (noms(iq) == "coplus") then
     
    314301           mmol(igcm_coplus) = 28.
    315302           count = count + 1
    316            nbqchem = nbqchem + 1
    317303        end if
    318304        if (noms(iq) == "cplus") then
     
    320306           mmol(igcm_cplus) = 12.
    321307           count = count + 1
    322            nbqchem = nbqchem + 1
    323308        end if
    324309        if (noms(iq) == "nplus") then
     
    326311           mmol(igcm_nplus) = 14.
    327312           count = count + 1
    328            nbqchem = nbqchem + 1
    329313        end if
    330314        if (noms(iq) == "noplus") then
     
    332316           mmol(igcm_noplus) = 30.
    333317           count = count + 1
    334            nbqchem = nbqchem + 1
    335318        end if
    336319        if (noms(iq) == "n2plus") then
     
    338321           mmol(igcm_n2plus) = 28.
    339322           count = count + 1
    340            nbqchem = nbqchem + 1
    341323        end if
    342324        if (noms(iq) == "hplus") then
     
    344326           mmol(igcm_hplus) = 1.
    345327           count = count + 1
    346            nbqchem = nbqchem + 1
    347328        end if
    348329        if (noms(iq) == "hco2plus") then
     
    350331           mmol(igcm_hco2plus) = 45.
    351332           count = count + 1
    352            nbqchem = nbqchem + 1
    353333        end if
    354334        if (noms(iq) == "elec") then
  • trunk/LMDZ.MARS/libf/aeronomars/moldiff_red.F90

    r1543 r1660  
    6464      real*8,dimension(:),allocatable,save ::  wi,Wad,Uthermal,Lambdaexo,Hspecie
    6565      real*8,dimension(:),allocatable,save :: Mtot1,Mtot2,Mraf1,Mraf2
    66       character(len=20),dimension(14) :: ListeDiff
     66      integer,parameter :: ListeDiffNb=15
     67      character(len=20),dimension(ListeDiffNb) :: ListeDiff
    6768      real*8,parameter :: pi=3.141592653
    6869      real*8,parameter :: g=3.72d0
     
    108109      real,save :: step
    109110
     111
    110112! Initializations at first call
    111113      if (firstcall) then
     
    127129        ListeDiff(13)='o3'
    128130        ListeDiff(14)='n'
     131        ListeDiff(15)='he'
    129132        i_h=1000
    130133        i_h2=1000
     
    135138       
    136139        do nn=1,nq
    137         do n=1,14
     140        do n=1,ListeDiffNb
    138141        if (ListeDiff(n) .eq. noms(nn)) then
    139142        indic_diff(nn)=1
  • trunk/LMDZ.MARS/libf/aeronomars/photochemistry.F

    r1499 r1660  
    188188c*****************************************************************
    189189
     190      use tracer_mod, only: igcm_ch4
    190191      implicit none
    191192
     
    686687         production(l,i_ch4) = 0.
    687688
    688          loss(l,i_ch4) = j(l,j_ch4_ch3_h)
    689      $                 + j(l,j_ch4_1ch2_h2)
    690      $                 + j(l,j_ch4_3ch2_h_h)
    691      $                 + j(l,j_ch4_ch_h2_h)
    692      $                 + b007(l)*cc(l,i_o1d)
    693      $                 + b008(l)*cc(l,i_o1d)
    694      $                 + b009(l)*cc(l,i_o1d)
    695      $                 + e003(l)*cc(l,i_oh)
     689         if (igcm_ch4/=0) then
     690           loss(l,i_ch4) = j(l,j_ch4_ch3_h)
     691     $                   + j(l,j_ch4_1ch2_h2)
     692     $                   + j(l,j_ch4_3ch2_h_h)
     693     $                   + j(l,j_ch4_ch_h2_h)
     694     $                   + b007(l)*cc(l,i_o1d)
     695     $                   + b008(l)*cc(l,i_o1d)
     696     $                   + b009(l)*cc(l,i_o1d)
     697     $                   + e003(l)*cc(l,i_oh)
     698         else
     699           loss(l,i_ch4) = 0.
     700         endif
    696701
    697702      end do
  • trunk/LMDZ.MARS/libf/phymars/initracer.F

    r1621 r1660  
    8888      igcm_no2=0
    8989      igcm_n2d=0
     90      igcm_he=0
    9091      igcm_co2plus=0
    9192      igcm_oplus=0
     
    238239          count=count+1
    239240        endif
     241        if (noms(iq).eq."he") then
     242          igcm_he=iq
     243          mmol(igcm_he)=4.
     244          count=count+1
     245        endif
    240246        if (noms(iq).eq."co2plus") then
    241247          igcm_co2plus=iq
  • trunk/LMDZ.MARS/libf/phymars/physiq_mod.F

    r1649 r1660  
    2020     &                      rho_ice_co2,nuiceco2_sed,nuiceco2_ref,
    2121     &                      igcm_dust_mass, igcm_dust_number, igcm_h2o2,
    22      &                      nuice_ref, rho_ice, rho_dust, ref_r0
     22     &                      nuice_ref, rho_ice, rho_dust, ref_r0,
     23     &                      igcm_he
    2324      use comsoil_h, only: inertiedat, ! soil thermal inertia
    2425     &                     tsoil, nsoilmx ! number of subsurface layers
     
    23362337         endif ! of if (tracer.and.(igcm_co2.ne.0))
    23372338
     2339
     2340        ! Output He tracer, if there is one
     2341        if (tracer.and.(igcm_he.ne.0)) then
     2342          call WRITEDIAGFI(ngrid,"he","helium mass mixing ratio",
     2343     &                     "kg/kg",3,zq(1,1,igcm_he))
     2344          vmr=zq(1:ngrid,1:nlayer,igcm_he)
     2345     &       *mmean(1:ngrid,1:nlayer)/mmol(igcm_he)
     2346          call WRITEDIAGFI(ngrid,'vmr_he','helium vol. mixing ratio',
     2347     &                       'mol/mol',3,vmr)
     2348        endif
     2349
    23382350c        ----------------------------------------------------------
    23392351c        Outputs of the water cycle
  • trunk/LMDZ.MARS/libf/phymars/tracer_mod.F90

    r1655 r1660  
    7373      integer,save :: igcm_no2
    7474      integer,save :: igcm_n2d
     75      integer,save :: igcm_he
    7576      integer,save :: igcm_ch4
    7677      ! Ions
Note: See TracChangeset for help on using the changeset viewer.