Changeset 3653 for trunk/LMDZ.GENERIC


Ignore:
Timestamp:
Feb 27, 2025, 10:10:41 AM (4 months ago)
Author:
gmilcareck
Message:

Generic PCM:
Adding molecular weight for each gas used by the model.
Updating molecular weight for each tracers (to be consistent with gases).
GM

Location:
trunk/LMDZ.GENERIC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/changelog.txt

    r3641 r3653  
    19981998Implement the new generic continuum database
    19991999More details here: https://lmdz-forge.lmd.jussieu.fr/mediawiki/Planets/index.php/Continuum_Database
     2000
     2001== 27/02/2025 == GM
     2002
     2003Adding molecular weight for each gas used by the model.
     2004Updating molecular weight for each tracers (to be consistent with gases).
  • trunk/LMDZ.GENERIC/libf/phystd/gases_h.F90

    r2831 r3653  
    1616      character*20,allocatable,DIMENSION(:) :: gnom ! name of the gas, read by master
    1717      real,allocatable,DIMENSION(:) :: gfrac
     18     
     19      real, save, allocatable :: massmol(:)     ! mole mass of gas (g/mol)
    1820
    1921      ! in analogy with tracer.h ...
     
    3133      integer :: igas_C2H2
    3234      integer :: igas_C2H6
     35      integer :: igas_Ar
    3336!! GG MODIF Jan 2019
    3437      integer :: igas_OCS
  • trunk/LMDZ.GENERIC/libf/phystd/initracer.F90

    r3101 r3653  
    227227        if (noms(iq).eq."co2") then
    228228          igcm_co2=iq
    229           mmol(igcm_co2)=44.
     229          mmol(igcm_co2)=44.010
    230230          count=count+1
    231231!          write(*,*) 'co2: count=',count
     
    233233        if (noms(iq).eq."co2_ice") then
    234234          igcm_co2_ice=iq
    235           mmol(igcm_co2_ice)=44.
     235          mmol(igcm_co2_ice)=44.010
    236236          count=count+1
    237237!          write(*,*) 'co2_ice: count=',count
     
    239239        if (noms(iq).eq."h2o_vap") then
    240240          igcm_h2o_vap=iq
    241           mmol(igcm_h2o_vap)=18.
     241          mmol(igcm_h2o_vap)=18.01528
    242242          count=count+1
    243243!          write(*,*) 'h2o_vap: count=',count
     
    245245        if (noms(iq).eq."h2o_ice") then
    246246          igcm_h2o_ice=iq
    247           mmol(igcm_h2o_ice)=18.
     247          mmol(igcm_h2o_ice)=18.01528
    248248          count=count+1
    249249!          write(*,*) 'h2o_ice: count=',count
     
    251251        if (noms(iq).eq."co") then
    252252          igcm_co=iq
    253           mmol(igcm_co)=28.
     253          mmol(igcm_co)=28.010
    254254          count=count+1
    255255        endif
    256256        if (noms(iq).eq."o") then
    257257          igcm_o=iq
    258           mmol(igcm_o)=16.
     258          mmol(igcm_o)=15.9994
    259259          count=count+1
    260260        endif
    261261        if (noms(iq).eq."o1d") then
    262262          igcm_o1d=iq
    263           mmol(igcm_o1d)=16.
     263          mmol(igcm_o1d)=15.9994
    264264          count=count+1
    265265        endif
    266266        if (noms(iq).eq."o2") then
    267267          igcm_o2=iq
    268           mmol(igcm_o2)=32.
     268          mmol(igcm_o2)=31.998
    269269          count=count+1
    270270        endif
    271271        if (noms(iq).eq."o3") then
    272272          igcm_o3=iq
    273           mmol(igcm_o3)=48.
     273          mmol(igcm_o3)=47.9982
    274274          count=count+1
    275275        endif
    276276        if (noms(iq).eq."h") then
    277277          igcm_h=iq
    278           mmol(igcm_h)=1.
     278          mmol(igcm_h)=1.00784
    279279          count=count+1
    280280        endif
    281281        if (noms(iq).eq."h2") then
    282282          igcm_h2=iq
    283           mmol(igcm_h2)=2.
     283          mmol(igcm_h2)=2.016
    284284          count=count+1
    285285        endif
    286286        if (noms(iq).eq."oh") then
    287287          igcm_oh=iq
    288           mmol(igcm_oh)=17.
     288          mmol(igcm_oh)=17.008
    289289          count=count+1
    290290        endif
    291291        if (noms(iq).eq."ho2") then
    292292          igcm_ho2=iq
    293           mmol(igcm_ho2)=33.
     293          mmol(igcm_ho2)=33.0067
    294294          count=count+1
    295295        endif
    296296        if (noms(iq).eq."h2o2") then
    297297          igcm_h2o2=iq
    298           mmol(igcm_h2o2)=34.
     298          mmol(igcm_h2o2)=34.0147
    299299          count=count+1
    300300        endif
    301301        if (noms(iq).eq."n2") then
    302302          igcm_n2=iq
    303           mmol(igcm_n2)=28.
     303          mmol(igcm_n2)=28.0134
    304304          count=count+1
    305305        endif
    306306        if (noms(iq).eq."ch4") then
    307307          igcm_ch4=iq
    308           mmol(igcm_ch4)=16.
     308          mmol(igcm_ch4)=16.0425
    309309          count=count+1
    310310        endif
    311311        if (noms(iq).eq."ar") then
    312312          igcm_ar=iq
    313           mmol(igcm_ar)=40.
     313          mmol(igcm_ar)=39.948
    314314          count=count+1
    315315        endif
    316316        if (noms(iq).eq."n") then
    317317          igcm_n=iq
    318           mmol(igcm_n)=14.
     318          mmol(igcm_n)=14.0067
    319319          count=count+1
    320320        endif
    321321        if (noms(iq).eq."no") then
    322322          igcm_no=iq
    323           mmol(igcm_no)=30.
     323          mmol(igcm_no)=30.0061
    324324          count=count+1
    325325        endif
    326326        if (noms(iq).eq."no2") then
    327327          igcm_no2=iq
    328           mmol(igcm_no2)=46.
     328          mmol(igcm_no2)=46.0055
    329329          count=count+1
    330330        endif
    331331        if (noms(iq).eq."n2d") then
    332332          igcm_n2d=iq
    333           mmol(igcm_n2d)=28.
     333          mmol(igcm_n2d)=28.0134
    334334          count=count+1
    335335        endif
    336336        if (noms(iq).eq."ch3") then
    337337          igcm_ch3=iq
    338           mmol(igcm_ch3)=15.
     338          mmol(igcm_ch3)=15.034
    339339          count=count+1
    340340        endif
    341341        if (noms(iq).eq."ch") then
    342342          igcm_ch=iq
    343           mmol(igcm_ch)=13.
     343          mmol(igcm_ch)=13.0186
    344344          count=count+1
    345345        endif
    346346        if (noms(iq).eq."3ch2") then
    347347          igcm_3ch2=iq
    348           mmol(igcm_3ch2)=14.
     348          mmol(igcm_3ch2)=14.0266
    349349          count=count+1
    350350        endif
    351351        if (noms(iq).eq."1ch2") then
    352352          igcm_1ch2=iq
    353           mmol(igcm_1ch2)=14.
     353          mmol(igcm_1ch2)=14.0266
    354354          count=count+1
    355355        endif
    356356        if (noms(iq).eq."cho") then
    357357          igcm_cho=iq
    358           mmol(igcm_cho)=29.
     358          mmol(igcm_cho)=29.018
    359359          count=count+1
    360360        endif
    361361        if (noms(iq).eq."ch2o") then
    362362          igcm_ch2o=iq
    363           mmol(igcm_ch2o)=30.
     363          mmol(igcm_ch2o)=30.031
    364364          count=count+1
    365365        endif
    366366        if (noms(iq).eq."ch3o") then
    367367          igcm_ch3o=iq
    368           mmol(igcm_ch3o)=31.
     368          mmol(igcm_ch3o)=31.0339
    369369          count=count+1
    370370        endif
    371371        if (noms(iq).eq."c") then
    372372          igcm_c=iq
    373           mmol(igcm_c)=12.
     373          mmol(igcm_c)=12.0107
    374374          count=count+1
    375375        endif
    376376        if (noms(iq).eq."c2") then
    377377          igcm_c2=iq
    378           mmol(igcm_c2)=24.
     378          mmol(igcm_c2)=24.0214
    379379          count=count+1
    380380        endif
    381381        if (noms(iq).eq."c2h") then
    382382          igcm_c2h=iq
    383           mmol(igcm_c2h)=25.
     383          mmol(igcm_c2h)=25.0293
    384384          count=count+1
    385385        endif
    386386        if (noms(iq).eq."c2h2") then
    387387          igcm_c2h2=iq
    388           mmol(igcm_c2h2)=26.
     388          mmol(igcm_c2h2)=26.038
    389389          count=count+1
    390390        endif
    391391        if (noms(iq).eq."c2h3") then
    392392          igcm_c2h3=iq
    393           mmol(igcm_c2h3)=27.
     393          mmol(igcm_c2h3)=27.0452
    394394          count=count+1
    395395        endif
    396396        if (noms(iq).eq."c2h4") then
    397397          igcm_c2h4=iq
    398           mmol(igcm_c2h4)=28.
     398          mmol(igcm_c2h4)=28.053
    399399          count=count+1
    400400        endif
    401401        if (noms(iq).eq."c2h6") then
    402402          igcm_c2h6=iq
    403           mmol(igcm_c2h6)=30.
     403          mmol(igcm_c2h6)=30.069
    404404          count=count+1
    405405        endif
    406406        if (noms(iq).eq."ch2co") then
    407407          igcm_ch2co=iq
    408           mmol(igcm_ch2co)=42.
     408          mmol(igcm_ch2co)=42.0367
    409409          count=count+1
    410410        endif
    411411        if (noms(iq).eq."ch3co") then
    412412          igcm_ch3co=iq
    413           mmol(igcm_ch3co)=43.
     413          mmol(igcm_ch3co)=43.0446
    414414          count=count+1
    415415        endif
  • trunk/LMDZ.GENERIC/libf/phystd/su_gases.F90

    r2831 r3653  
    1919  !     
    2020  !==================================================================
     21 
    2122
    2223!$OMP MASTER
     
    6970     ! assign the 'igas_X' labels
    7071     count=0
     72     IF (.NOT.ALLOCATED(massmol))           ALLOCATE(massmol(ngasmx))
    7173     do igas=1,ngasmx
    7274        if (trim(gnom(igas)).eq."H2_" .or. trim(gnom(igas)).eq."H2") then
    7375           igas_H2=igas
     76           massmol(igas_H2)=2.016
    7477           count=count+1
    7578        elseif (trim(gnom(igas)).eq."He_" .or. trim(gnom(igas)).eq."He") then
    7679           igas_He=igas
     80           massmol(igas_He)=4.002602
    7781           count=count+1
    7882        elseif (trim(gnom(igas)).eq."H2O") then
    7983           igas_H2O=igas
     84           massmol(igas_H2O)=18.01528
    8085           count=count+1
    8186        elseif (trim(gnom(igas)).eq."CO2") then
    8287           igas_CO2=igas
     88           massmol(igas_CO2)=44.010
    8389           count=count+1
    8490        elseif (trim(gnom(igas)).eq."CO_" .or. trim(gnom(igas)).eq."CO") then
    8591           igas_CO=igas
     92           massmol(igas_CO)=28.010
    8693           count=count+1
    8794        elseif (trim(gnom(igas)).eq."N2_" .or. trim(gnom(igas)).eq."N2") then
    8895           igas_N2=igas
     96           massmol(igas_N2)=28.0134
    8997           count=count+1
    9098        elseif (trim(gnom(igas)).eq."O2_" .or. trim(gnom(igas)).eq."O2") then
    9199           igas_O2=igas
     100           massmol(igas_O2)=31.998
    92101           count=count+1
    93102        elseif (trim(gnom(igas)).eq."SO2") then
    94103           igas_SO2=igas
     104           massmol(igas_SO2)=64.066
    95105           count=count+1
    96106        elseif (trim(gnom(igas)).eq."H2S") then
    97107           igas_H2S=igas
     108           massmol(igas_H2S)=34.082
    98109           count=count+1
    99110        elseif (trim(gnom(igas)).eq."CH4") then
    100111           igas_CH4=igas
     112           massmol(igas_CH4)=16.0425
    101113           count=count+1
    102114        elseif (trim(gnom(igas)).eq."NH3") then
    103115           igas_NH3=igas
     116           massmol(igas_NH3)=17.031
    104117           count=count+1
    105118        elseif (trim(gnom(igas)).eq."C2H6") then
    106119           igas_C2H6=igas
     120           massmol(igas_C2H6)=30.069
    107121           count=count+1
    108122        elseif (trim(gnom(igas)).eq."C2H2") then
    109123           igas_C2H2=igas
     124           massmol(igas_C2H2)=26.038
     125           count=count+1
     126        elseif (trim(gnom(igas)).eq."Ar") then
     127           igas_Ar=igas
     128           massmol(igas_Ar)=39.948
    110129           count=count+1
    111130        !! GG MODIF 11 Jan 2019
    112131       elseif (trim(gnom(igas)).eq."OCS") then
    113132           igas_OCS=igas
     133           massmol(igas_OCS)=60.075
    114134           count=count+1
    115135       elseif (trim(gnom(igas)).eq."HCl") then
    116136           igas_HCl=igas
     137           massmol(igas_HCl)=36.461
    117138           count=count+1
    118139       elseif (trim(gnom(igas)).eq."HF") then
    119140           igas_HF=igas
     141           massmol(igas_HF)=20.00634
    120142           count=count+1
    121143        endif
Note: See TracChangeset for help on using the changeset viewer.