Ignore:
Timestamp:
Nov 30, 2022, 4:46:57 PM (2 years ago)
Author:
abierjon
Message:

VENUS GCM:

INCLUDING THE IONOSPHERE CODE IN VENUS GCM


ATTENTION: INCREASED MEMORY DEMAND

NEEDS AT LEAST 135 GB of allocated memory

==============================================================
===> LIST OF APPENDED FILES AND INTERNAL ADDITIONS <==========
==============================================================

NEW MODEL SPECIES

  • deftank/traceur-chemistry-IONOSPHERE.def

Neutrals: 4 Species: N, NO, NO2, N(2D)

Ions: 15 species:

CO2+, CO+, O+, O2+, H+,

N2+, H2O+, OH+, C+, HCO+,

H3O+, HCO2+, N+, NO+, elec

FROM 36 to 55 chemical species

NEW KEYWORD OF PHYSIQ.DEF

  • deftank/physiq-96x96x90-chemistry-IONOSPHERE.def
  • ok_ionchem: keyword supposed to activate ion chemistry.

(be careful that n, no, no2, n2d and the ion species are in the deftank/traceur-chemistry-IONOSPHERE.def)

  • ok_jonline: keyword supposed to activate the online photochemistry

(be careful that n, no, no2 and n2d are in the traceur-chemistry-IONOSPHERE.def)

==============================================================
===> LIST OF MODIFIED PROGRAMS <=========================
==============================================================

nonoro_gwd_ran_mod.F90

  • Change EPFLUXMAX value from 5.E-3 to 1.E-3

photochemistry_venus.F90 (krates; photolysis_online; indices;)

  • Import of keywords: ok_ionchem, tuneupperatm & ok_jonline
  • addition of ion species in order
  • Forcing electroneutrality
  • Update of the reactions a001 and a002 with taking into account the other species
  • Change of formula for a002 with the formulation of Baulch et al., 1976 (confirmed by Smith and Robertson, 2008)

photolysis_mod.F90

  • Modification of the rdsolarflux subroutine to include interpolation with Atlas1 and Atlas3 in connection with E10.7

concentration2.F90

  • Added chemical species n2d, no, no2 and n in the conductivity calculation.

The ions have been excluded because their sum is 105 times less dense than the neutrals and
their thermal conductivity is unknown

iono_h.F90

  • Addition of the phdisrate routine
  • replace the electronic temperature of Mars by that of

origin = 1: Theis et al. 1980 (Venus) with bilinear interpolation altitude/cos(SZA)
origin = 2: Theis et al. 1984 (Venus) with the formula of the electronic temperature at high solar activity

  • addition of an ion temperature model based on VIRA

cleshphys.h

  • added ok_ionchem & ok_jonline in COMMON/clesphys_l/

conf_phys.f90

  • add ok_ionchem & ok_jonline as parameters to read from physiq.def file set to .false. by default

chemparam_mod.F90

  • Add species in M_tr and corresponding i_X. Set all i_X to zero before reading traceur-chemistry-IONOSPHERE.def
  • Added Type_tr table to differentiate species: 1 == neutral, 2 == ION, 3 == liquid, 10 == others


euvheat.F90; hrtherm.F; jthermcalc_e107.F; param_read_e107.F

  • Normalization with Mars

A.M

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/libf/phyvenus/chemparam_mod.F90

    r2795 r2836  
    1313                 i_cocl2, i_s, i_so, i_so2, i_so3,       &
    1414                 i_s2o2, i_ocs, i_hso3, i_h2so4, i_s2,   &
    15                  i_clso2, i_oscl, i_n2, i_he, i_no2,     &
    16                  i_no, i_n, i_n2d
     15                 i_clso2, i_oscl, i_n2, i_he, i_n, i_no, &
     16                 i_no2, i_n2d,                           &
     17                 i_co2plus, i_coplus, i_oplus, i_o2plus, &
     18                 i_n2plus, i_hplus, i_h2oplus, i_nplus,  &
     19                 i_ohplus, i_cplus, i_noplus, i_h3oplus, &
     20                 i_hcoplus, i_hco2plus, i_elec     
    1721                 
    1822INTEGER, SAVE :: i_h2oliq, i_h2so4liq
     
    2630INTEGER, SAVE :: nmicro  ! number of microphysical tracers
    2731
    28 REAL, DIMENSION(:), SAVE, ALLOCATABLE :: M_tr
     32REAL, DIMENSION(:), SAVE, ALLOCATABLE :: M_tr     ! Molecular Mass of tracers
     33REAL, DIMENSION(:), SAVE, ALLOCATABLE :: type_tr  ! type of tracer
    2934 
    3035REAL, DIMENSION(:,:),SAVE, ALLOCATABLE :: no_emission
     
    697702  INTEGER :: i
    698703 
    699   ALLOCATE(M_tr(nqtot))
    700  
     704  ALLOCATE(M_tr(nqtot))    ! Molecular Mass of Chemistry Tracers
     705  ALLOCATE(type_tr(nqtot)) ! Type of chemistry tracers 1: neutral, 2: ion, 3: liquide
     706
     707! Initialisation index chemistry tracers
     708
     709  ! Neutral gas Tracer
     710  i_co2      = 0
     711  i_co       = 0
     712  i_h2       = 0
     713  i_h2o      = 0
     714  i_o1d      = 0
     715  i_o        = 0
     716  i_o2       = 0
     717  i_o2dg     = 0
     718  i_o3       = 0
     719  i_h        = 0
     720  i_oh       = 0
     721  i_ho2      = 0
     722  i_h2o2     = 0
     723  i_cl       = 0
     724  i_clo      = 0
     725  i_cl2      = 0
     726  i_hcl      = 0
     727  i_hocl     = 0
     728  i_clco     = 0
     729  i_clco3    = 0
     730  i_cocl2    = 0
     731  i_s        = 0
     732  i_so       = 0
     733  i_so2      = 0
     734  i_so3      = 0
     735  i_s2o2     = 0
     736  i_ocs      = 0
     737  i_hso3     = 0
     738  i_h2so4    = 0
     739  i_s2       = 0
     740  i_clso2    = 0
     741  i_oscl     = 0
     742  i_n2       = 0
     743  i_he       = 0
     744  i_n2d      = 0
     745  i_n        = 0
     746  i_no       = 0
     747  i_no2      = 0
     748  ! ION TRACERS FOR IONCHEM = TRUE
     749  i_co2plus  = 0
     750  i_coplus   = 0
     751  i_oplus    = 0
     752  i_o2plus   = 0
     753  i_n2plus   = 0
     754  i_hplus    = 0
     755  i_h2oplus  = 0
     756  i_nplus    = 0
     757  i_ohplus   = 0
     758  i_cplus    = 0
     759  i_noplus   = 0
     760  i_h3oplus  = 0
     761  i_hcoplus  = 0
     762  i_hco2plus = 0
     763  i_elec     = 0 
     764  ! MICROPHYSICAL TRACERS FOR CL_SCHEME=1
     765  i_h2oliq   = 0
     766  i_h2so4liq = 0 
     767
    701768  DO i=1, nqtot                                 
    702769       
     
    705772       
    706773        SELECT CASE(tname(i))
     774! NEUTRAL TRACERS
    707775                CASE('co2')
    708776                i_co2=i
    709777                PRINT*,'co2',i_co2
    710                 M_tr(i_co2) = 44.0095 
     778                M_tr(i_co2) = 44.0095
     779      type_tr(i_co2) = 1 
    711780                CASE('co')
    712781                i_co=i
    713782                PRINT*,'co',i_co
    714                 M_tr(i_co)=28.0101
     783                M_tr(i_co)=28.0101
     784      type_tr(i_co) = 1
    715785                CASE('h2')
    716786                i_h2=i
    717787                PRINT*,'h2',i_h2
    718788                M_tr(i_h2)= 2.01588
     789      type_tr(i_h2) = 1
    719790                CASE('h2o')
    720791                i_h2o=i
    721792                PRINT*,'h2o',i_h2o
    722793                M_tr(i_h2o)=18.0153
     794      type_tr(i_h2o) = 1
    723795                CASE('o1d')
    724796                i_o1d=i
    725797                PRINT*,'o1d',i_o1d
    726                 M_tr(i_o1d)=15.994
     798                M_tr(i_o1d)=15.994
     799      type_tr(i_o1d) = 1
    727800                CASE('o')
    728801                i_o=i
    729802                PRINT*,'o',i_o
    730                 M_tr(i_o)=15.994
     803                M_tr(i_o)=15.994
     804      type_tr(i_o) = 1
    731805                CASE('o2')
    732806                i_o2=i
    733807                PRINT*,'o2',i_o2
    734808                M_tr(i_o2)=31.9988
     809      type_tr(i_o2) = 1
    735810                CASE('o2dg')
    736811                i_o2dg=i
    737812                PRINT*,'o2dg',i_o2dg
    738813                M_tr(i_o2dg)=31.9988
     814      type_tr(i_o2dg) = 1
    739815                CASE('o3')
    740816                i_o3=i
    741817                PRINT*,'o3',i_o3
    742                 M_tr(i_o3)= 47.9982
     818                M_tr(i_o3)= 47.9982
     819      type_tr(i_o3) = 1
    743820                CASE('h')
    744821                i_h=i
    745822                PRINT*,'h',i_h
    746                 M_tr(i_h)= 1.00794
     823                M_tr(i_h)= 1.00794
     824      type_tr(i_h) = 1 
    747825                CASE('oh')
    748826                i_oh=i
    749827                PRINT*,'oh',i_oh
    750828                M_tr(i_oh)=17.0073
     829      type_tr(i_oh) = 1
    751830                CASE('ho2')
    752831                i_ho2=i
    753832                PRINT*,'ho2',i_ho2
    754833                M_tr(i_ho2)=33.0067
     834      type_tr(i_ho2) = 1
    755835                CASE('h2o2')
    756836                i_h2o2=i
    757837                PRINT*,'h2o2',i_h2o2
    758                 M_tr(i_h2o2)=34.0147
     838                M_tr(i_h2o2)=34.0147
     839      type_tr(i_h2o2) = 1
    759840                CASE('cl')
    760841                i_cl=i
    761842                PRINT*,'cl',i_cl
    762843                M_tr(i_cl)=35.453
     844      type_tr(i_cl) = 1
    763845                CASE('clo')
    764846                i_clo=i
    765847                PRINT*,'clo',i_clo
    766848                M_tr(i_clo)=51.452
     849      type_tr(i_clo) = 1
    767850                CASE('cl2')
    768851                i_cl2=i
    769852                PRINT*,'cl2',i_cl2
    770853                M_tr(i_cl2)=70.906
     854      type_tr(i_cl2) = 1
    771855                CASE('hcl')
    772856                i_hcl=i
    773857                PRINT*,'hcl',i_hcl
    774858                M_tr(i_hcl)=36.461
     859      type_tr(i_hcl) = 1
    775860                CASE('hocl')
    776861                i_hocl=i
    777862                PRINT*,'hocl',i_hocl
    778863                M_tr(i_hocl)=52.46
    779                 CASE('clco')
     864                type_tr(i_hocl) = 1
     865      CASE('clco')
    780866                i_clco=i
    781867                PRINT*,'clco',i_clco
    782868                M_tr(i_clco)=63.463
    783                 CASE('clco3')
     869                type_tr(i_clco) = 1
     870      CASE('clco3')
    784871                i_clco3=i
    785872                PRINT*,'clco3',i_clco3
    786873                M_tr(i_clco3)=95.462
    787                 CASE('cocl2')
     874                type_tr(i_clco3) = 1
     875      CASE('cocl2')
    788876                i_cocl2=i
    789877                PRINT*,'cocl2',i_cocl2
    790878                M_tr(i_cocl2)=98.916
    791                 CASE('s')
     879                type_tr(i_cocl2) = 1
     880      CASE('s')
    792881                i_s=i
    793882                PRINT*,'s',i_s
    794883                M_tr(i_s)=32.065
    795                 CASE('so')
     884                type_tr(i_s) = 1
     885      CASE('so')
    796886                i_so=i
    797887                PRINT*,'so',i_so
    798888                M_tr(i_so)=48.0644
    799                 CASE('so2')
     889                type_tr(i_so) = 1
     890      CASE('so2')
    800891                i_so2=i
    801892                PRINT*,'so2',i_so2
    802893                M_tr(i_so2)=64.064
    803                 CASE('so3')
     894                type_tr(i_so2) = 1
     895      CASE('so3')
    804896                i_so3=i
    805897                PRINT*,'so3',i_so3
    806898                M_tr(i_so3)=80.063
    807                 CASE('s2o2')
     899                type_tr(i_so3) = 1
     900      CASE('s2o2')
    808901                i_s2o2=i
    809902                PRINT*,'s2o2',i_s2o2
    810903                M_tr(i_s2o2)= 96.1288
    811                 CASE('ocs')
     904                type_tr(i_s2o2) = 1
     905      CASE('ocs')
    812906                i_ocs=i
    813907                PRINT*,'ocs',i_ocs
    814908                M_tr(i_ocs)=60.0751
    815                 CASE('hso3')
     909                type_tr(i_ocs) = 1
     910      CASE('hso3')
    816911                i_hso3=i
    817912                PRINT*,'hso3',i_hso3
    818913                M_tr(i_hso3)=81.071
    819                 CASE('h2so4')
     914                type_tr(i_hso3) = 1
     915      CASE('h2so4')
    820916                i_h2so4=i
    821917                PRINT*,'h2so4',i_h2so4
    822918                M_tr(i_h2so4)=98.078
    823                 CASE('s2')
     919                type_tr(i_h2so4) = 1
     920      CASE('s2')
    824921                i_s2=i
    825922                PRINT*,'s2',i_s2
    826923                M_tr(i_s2)=64.13
    827                 CASE('clso2')
     924                type_tr(i_s2) = 1
     925      CASE('clso2')
    828926                i_clso2=i
    829927                PRINT*,'clso2',i_clso2
    830928                M_tr(i_clso2)=99.517
    831                 CASE('oscl')
     929                type_tr(i_clso2) = 1
     930      CASE('oscl')
    832931                i_oscl=i
    833932                PRINT*,'oscl',i_oscl
    834933                M_tr(i_oscl)=83.517
    835                 CASE('n2')
    836                 i_n2=i
    837                 M_tr(i_n2)=28.013
    838                 CASE('he')
    839                 i_he=i
    840                 M_tr(i_he)=4.0026
    841                 CASE('no2')
    842                 i_no2=i
    843                 M_tr(i_no2)=46.0055
    844                 CASE('no')
    845                 i_no = i
    846                 M_tr(i_no)=30.0061
    847                 CASE('n')
    848                 i_n = i
    849                 M_tr(i_n)=14.0067
    850                 CASE('n2d')
    851                 i_n2d = i
    852                 M_tr(i_n2d)=14.0067
     934                  type_tr(i_oscl) = 1
     935      CASE('n2')
     936                  i_n2=i
     937      PRINT*,'n2',i_n2
     938                  M_tr(i_n2)=28.013
     939                  type_tr(i_n2) = 1
     940      CASE('he')
     941                  i_he=i
     942      PRINT*,'he',i_he
     943                  M_tr(i_he)=4.0026
     944                  type_tr(i_he) = 1
     945      CASE('n2d')
     946                  i_n2d=i
     947      PRINT*,'n2d',i_n2d
     948                  M_tr(i_n2d)=14.0067
     949                  type_tr(i_n2d) = 1
     950      CASE('n')
     951                  i_n=i
     952      PRINT*,'n',i_n
     953                  M_tr(i_n)=14.0067
     954                  type_tr(i_n) = 1
     955      CASE('no')
     956                  i_no=i
     957      PRINT*,'no',i_no
     958                  M_tr(i_no)=30.0061   
     959                  type_tr(i_no) = 1
     960      CASE('no2')
     961                  i_no2=i
     962      PRINT*,'no2',i_no2
     963                  M_tr(i_no2)=46.0055
     964      type_tr(i_no2) = 1         
     965! ION TRACERS FOR OK_IONCHEM = TRUE
     966      CASE('co2plus')
     967      i_co2plus=i
     968      PRINT*,'co2plus',i_co2plus
     969      M_tr(i_co2plus)=44.0095
     970      type_tr(i_co2plus) = 2
     971      CASE('coplus')
     972      i_coplus=i
     973      PRINT*,'coplus',i_coplus
     974      M_tr(i_coplus)=28.0101
     975      type_tr(i_coplus) = 2
     976      CASE('oplus')
     977      i_oplus=i
     978      PRINT*,'oplus',i_oplus
     979      M_tr(i_oplus)=15.994
     980      type_tr(i_oplus) = 2
     981      CASE('o2plus')
     982      i_o2plus=i
     983      PRINT*,'o2plus',i_o2plus
     984      M_tr(i_o2plus)=31.9988
     985      type_tr(i_o2plus) = 2
     986      CASE('n2plus')
     987      i_n2plus=i
     988      PRINT*,'n2plus',i_n2plus
     989      M_tr(i_n2plus)=28.013
     990      type_tr(i_n2plus) = 2
     991      CASE('hplus')
     992      i_hplus=i
     993      PRINT*,'hplus',i_hplus
     994      M_tr(i_hplus)=1.00794
     995                  type_tr(i_hplus) = 2
     996      CASE('h2oplus')
     997      i_h2oplus=i
     998      PRINT*,'h2oplus',i_h2oplus
     999      M_tr(i_h2oplus)=18.0153
     1000                  type_tr(i_h2oplus) = 2     
     1001      CASE('nplus')
     1002                  i_nplus=i
     1003      PRINT*,'nplus',i_nplus
     1004                  M_tr(i_nplus)=14.0067
     1005                  type_tr(i_nplus) = 2
     1006      CASE('ohplus')
     1007                  i_ohplus=i
     1008      PRINT*,'ohplus',i_ohplus
     1009                  M_tr(i_ohplus)=17.0073
     1010                  type_tr(i_ohplus) = 2
     1011      CASE('cplus')
     1012                  i_cplus=i
     1013      PRINT*,'cplus',i_cplus
     1014                  M_tr(i_cplus)=12.011
     1015                  type_tr(i_cplus) = 2
     1016      CASE('noplus')
     1017                  i_noplus=i
     1018      PRINT*,'noplus',i_noplus
     1019                  M_tr(i_noplus)=30.0061
     1020                  type_tr(i_noplus) = 2
     1021      CASE('h3oplus')
     1022                  i_h3oplus=i
     1023      PRINT*,'h3oplus',i_h3oplus
     1024                  M_tr(i_h3oplus)=19.0232
     1025                  type_tr(i_h3oplus) = 2
     1026      CASE('hcoplus')
     1027                  i_hcoplus=i
     1028      PRINT*,'hcoplus',i_hcoplus
     1029                  M_tr(i_hcoplus)=29.0180
     1030                  type_tr(i_hcoplus) = 2
     1031      CASE('hco2plus')
     1032                  i_hco2plus=i
     1033      PRINT*,'hco2plus',i_hco2plus
     1034                  M_tr(i_hco2plus)=45.
     1035                  type_tr(i_hco2plus) = 2
     1036      CASE('elec')
     1037                  i_elec=i
     1038      PRINT*,'elec',i_elec
     1039                  M_tr(i_elec)=1./1822.89
     1040      type_tr(i_elec) = 2       
    8531041! MICROPHYSICAL TRACERS FOR CL_SCHEME=1
    8541042                CASE('h2oliq')
     
    8561044                PRINT*,'h2oliq',i_h2oliq
    8571045                M_tr(i_h2oliq)=18.0153
     1046      type_tr(i_h2oliq) = 3
    8581047                CASE('h2so4liq')
    8591048                i_h2so4liq=i
    8601049                PRINT*,'h2so4liq',i_h2so4liq
    8611050                M_tr(i_h2so4liq)=98.078
     1051      type_tr(i_h2so4liq) = 3
    8621052! MICROPHYSICAL TRACERS FOR CL_SCHEME=2
    863                 CASE('M0_aer')
     1053    CASE('M0_aer')
    8641054                i_m0_aer=i
     1055    type_tr(i_m0_aer) = 10
    8651056                PRINT*,'M0_aer',i_m0_aer
    8661057                CASE('M3_aer')
    8671058                i_m3_aer=i
     1059    type_tr(i_m3_aer) = 10
    8681060                PRINT*,'M3_aer',i_m3_aer
    869                 CASE('M0_m1drop')
     1061    CASE('M0_m1drop')
    8701062                i_m0_mode1drop=i
     1063    type_tr(i_m0_mode1drop) = 10
    8711064                PRINT*,'M0_m1drop',i_m0_mode1drop
    872                 CASE('M0_m1ccn')
     1065    CASE('M0_m1ccn')
    8731066                i_m0_mode1ccn=i
     1067    type_tr(i_m0_mode1ccn) = 10
    8741068                PRINT*,'M0_m1ccn',i_m0_mode1ccn
    8751069                CASE('M3_m1sa')
    8761070                i_m3_mode1sa=i
     1071    type_tr(i_m3_mode1sa) = 10
    8771072                PRINT*,'M3_m1sa',i_m3_mode1sa
    8781073                CASE('M3_m1w')
    8791074                i_m3_mode1w=i
     1075    type_tr(i_m3_mode1w) = 10
    8801076                PRINT*,'M3_m1w',i_m3_mode1w
    8811077                CASE('M3_m1ccn')
    8821078                i_m3_mode1ccn=i
     1079    type_tr(i_m3_mode1ccn) = 10
    8831080                PRINT*,'M3_m1ccn',i_m3_mode1ccn
    884                 CASE('M0_m2drop')
     1081    CASE('M0_m2drop')
    8851082                i_m0_mode2drop=i
     1083    type_tr(i_m0_mode2drop) = 10
    8861084                PRINT*,'M0_m2drop',i_m0_mode2drop
    887                 CASE('M0_m2ccn')
     1085    CASE('M0_m2ccn')
    8881086                i_m0_mode2ccn=i
     1087    type_tr(i_m0_mode2ccn) = 10
    8891088                PRINT*,'M0_m2ccn',i_m0_mode2ccn
    8901089                CASE('M3_m2sa')
    8911090                i_m3_mode2sa=i
     1091    type_tr(i_m3_mode2sa) = 10
    8921092                PRINT*,'M3_m2sa',i_m3_mode2sa
    8931093                CASE('M3_m2w')
    8941094                i_m3_mode2w=i
     1095    type_tr(i_m3_mode2w) = 10
    8951096                PRINT*,'M3_m2w',i_m3_mode2w
    8961097                CASE('M3_m2ccn')
    8971098                i_m3_mode2ccn=i
     1099    type_tr(i_m3_mode2ccn) = 10
    8981100                PRINT*,'M3_m2ccn',i_m3_mode2ccn
    8991101        END SELECT
Note: See TracChangeset for help on using the changeset viewer.