Ignore:
Timestamp:
Feb 27, 2025, 7:03:20 PM (4 months ago)
Author:
gmilcareck
Message:

Generic PCM:
Cleaning up the code. The gas constant and Avogadro number values
was not the same between the files in the model.
We choose the value recommended by the 2019 revision of the SI.
R=8.314463 J.K-1.mol-1 and NA=6.022141e23 mol-1.
GM

Location:
trunk/LMDZ.GENERIC/libf/phystd
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/libf/phystd/aeropacity.F90

    r2899 r3663  
    724724! p_bot <=> zb ; p_top <=> zb+zc ; h_bot <=> Hlo ; h_top <=> Hup
    725725! p<p_top: N=No*(p/p_top)**(h_lay/h_top)      h_lay=RT/g  (in m)
    726 ! p>p_bot: N=No*(p_bot/p)**(h_lay/h_bot)      R=8.31/mu (mu in kg/mol)
     726! p>p_bot: N=No*(p_bot/p)**(h_lay/h_bot)      R=8.314463/mu (mu in kg/mol)
    727727! N is in m-3
    728728!
     
    745745           DO l=1,nlayer-1
    746746
    747              h_lay=8.31*pt(ig,l)/(g*0.044)
     747             h_lay=8.314463*pt(ig,l)/(g*0.044)
    748748
    749749             !! 1. below 2e5 Pa: no aerosols
     
    791791           DO l=1,nlayer-1
    792792
    793              h_lay=8.31*pt(ig,l)/(g*0.044)
     793             h_lay=8.314463*pt(ig,l)/(g*0.044)
    794794
    795795             !! 1. below 2e5 Pa: no aerosols
     
    837837           DO l=1,nlayer-1
    838838
    839              h_lay=8.31*pt(ig,l)/(g*0.044)
     839             h_lay=8.314463*pt(ig,l)/(g*0.044)
    840840
    841841             !! 1. below 2e5 Pa: no aerosols
     
    883883           DO l=1,nlayer-1
    884884 
    885               h_lay=8.31*pt(ig,l)/(g*0.044)
     885              h_lay=8.314463*pt(ig,l)/(g*0.044)
    886886
    887887             !! 1. below 2e5 Pa: no aerosols
     
    929929           DO l=1,nlayer-1
    930930
    931              h_lay=8.31*pt(ig,l)/(g*0.044)
     931             h_lay=8.314463*pt(ig,l)/(g*0.044)
    932932
    933933             !! 1. below 7e4 Pa: no aerosols
     
    975975!     ig=10
    976976!      do l=1,nlayer
    977 !          print*,8.31*pt(ig,l)/(g*0.044),pplay(ig,l),aerosol(ig,l,1),aerosol(ig,l,2),aerosol(ig,l,3),aerosol(ig,l,4)
     977!          print*,8.314463*pt(ig,l)/(g*0.044),pplay(ig,l),aerosol(ig,l,1),aerosol(ig,l,2),aerosol(ig,l,3),aerosol(ig,l,4)
    978978!         print*,l,pplay(ig,l),aerosol(ig,l,5)
    979979!      enddo
  • trunk/LMDZ.GENERIC/libf/phystd/blackl.F

    r3654 r3663  
    44
    55      ! physical constants
    6       sigma=5.67032D-8
     6      sigma=5.670374D-8
    77      pi=datan(1.d0)*4.d0
    8       c0=2.9979d+08
    9       h=6.6262d-34
    10       cbol=1.3806d-23
     8      c0=2.997925d+08
     9      h=6.62607d-34
     10      cbol=1.380649d-23
    1111      rind=1.d0
    1212      c=c0/rind
     
    2626
    2727      ! physical constants
    28       sigma=5.67032D-8
     28      sigma=5.670374D-8
    2929      pi=datan(1.d0)*4.d0
    30       c0=2.9979d+08
    31       h=6.6262d-34
    32       cbol=1.3806d-23
     30      c0=2.997925d+08
     31      h=6.62607d-34
     32      cbol=1.380649d-23
    3333      rind=1.d0
    3434      c=c0/rind
  • trunk/LMDZ.GENERIC/libf/phystd/calc_rayleigh.F90

    r3654 r3663  
    188188                     P0(:) = pmid(:)*scalep
    189189                     lr = 0.589
    190                      rho(:) = mass_frac(igas,:)*muvar(:)/massmol(igas)*P0(:)/(8.314462*T0(:)/muvar(:)/1000.)
     190                     rho(:) = mass_frac(igas,:)*muvar(:)/massmol(igas)*P0(:)/(8.314463*T0(:)/muvar(:)/1000.)
    191191                     rhos(:) = rho(:)/rhor
    192192                     ts(:) = T0(:)/Tr
     
    258258                 endif
    259259                 
    260                  tauconsti(igas,:) = 24.*pi**3 *6.022140857E+023 / (g*(muvar(:)/1000.)*(P0(:)/(1.380648813E-23*T0(:)))**2)
     260                 tauconsti(igas,:) = 24.*pi**3 *6.022141E+023 / (g*(muvar(:)/1000.)*(P0(:)/(1.380649E-23*T0(:)))**2)
    261261                 ! N=P/(kB*T)
    262262                 ! pmid*scalep -> mbar to Pa
  • trunk/LMDZ.GENERIC/libf/phystd/comcstfi_mod.F90

    r1524 r3663  
    55      REAL,SAVE :: rad ! radius of the planet (m)
    66      REAL,SAVE :: g ! gravity (m/s2)
    7       REAL,SAVE :: r ! reduced gas constant (r=8.314511/(mugaz/1000.0))
     7      REAL,SAVE :: r ! reduced gas constant (r=8.314463/(mugaz/1000.0))
    88      REAL,SAVE :: cpp ! Cp of the atmosphere
    99      REAL,SAVE :: rcp ! r/cpp
    1010      REAL,SAVE :: mugaz ! molar mass of the atmosphere (g/mol)
    1111      REAL,SAVE :: omeg ! planet rotation rate (rad/s)
    12       REAL,SAVE :: avocado ! something like 6.022e23
     12      REAL,SAVE :: avocado !  6.022141e23
    1313!$OMP THREADPRIVATE(pi,rad,g,r,cpp,rcp,mugaz,omeg,avocado)
    1414
  • trunk/LMDZ.GENERIC/libf/phystd/dyn1d/phasechange_kcm.F90

    r1403 r3663  
    12541254!
    12551255!    The specific gas constant R is related to the universal gas
    1256 !    constant R-bar = 8.31441 J/(mol degrees Kelvin) by the molar mass
     1256!    constant R-bar = 8.314463 J/(mol degrees Kelvin) by the molar mass
    12571257!    M = 18.0152 g/mol:
    12581258!
  • trunk/LMDZ.GENERIC/libf/phystd/dyn1d/rcm1d.F

    r3576 r3663  
    659659      PRINT *,"--> mugaz = ",mugaz
    660660      PRINT *,"--> cpp = ",cpp
    661       r = 8.314511E+0 * 1000.E+0 / mugaz
     661      r = 8.314463E+0 * 1000.E+0 / mugaz
    662662      rcp = r / cpp
    663663
  • trunk/LMDZ.GENERIC/libf/phystd/inifis_mod.F90

    r3662 r3663  
    9292  r=pr
    9393  rcp=r/cpp
    94   mugaz=8.314*1000./pr ! dummy init
     94  mugaz=8.314463*1000./pr ! dummy init
    9595  pi=2.*asin(1.)
    96   avocado = 6.02214179e23   ! added by RW
     96  avocado = 6.022141e23   ! added by RW
    9797
    9898  ! Initialize some "temporal and calendar" related variables
  • trunk/LMDZ.GENERIC/libf/phystd/interpolateH2O_self_foreign.F90

    r2662 r3663  
    3434
    3535      double precision kB
    36       parameter(kB=1.3806488e-23)
     36      parameter(kB=1.380649e-23)
    3737
    3838      double precision amagatS, amagatF, abcoefS, abcoefF, Nmolec
  • trunk/LMDZ.GENERIC/libf/phystd/newsedim.F

    r3360 r3663  
    146146!       - Constant  to compute gas mean free path
    147147!        l= (T/P)*a, avec a = (  0.707*8.31/(4*pi*molrad**2 * avogadro))
    148          a = 0.707*8.31/(4*3.1416* molrad**2  * 6.023e23)
     148         a = 0.707*8.314463/(4*3.1416* molrad**2  * 6.022141e23)
    149149
    150150c       - Correction to account for non-spherical shape (Murphy et al.  1990)
  • trunk/LMDZ.GENERIC/libf/phystd/optci.F90

    r3641 r3663  
    154154     ! if we have continuum opacities, we need dz
    155155     if(kastprof)then
    156         dz(k) = dpr(k)*(1000.0d0*8.3145d0/muvar(k))*TMID(K)/(g*PMID(K))
     156        dz(k) = dpr(k)*(1000.0d0*8.314463d0/muvar(k))*TMID(K)/(g*PMID(K))
    157157        U(k)  = Cmk*DPR(k)*mugaz/muvar(k)
    158158     else
  • trunk/LMDZ.GENERIC/libf/phystd/optcv.F90

    r3654 r3663  
    140140     ! if we have continuum opacities, we need dz
    141141     if(kastprof)then
    142         dz(k) = dpr(k)*(1000.0d0*8.3145d0/muvar(k))*TMID(K)/(g*PMID(K))
     142        dz(k) = dpr(k)*(1000.0d0*8.314463d0/muvar(k))*TMID(K)/(g*PMID(K))
    143143        U(k)  = Cmk*DPR(k)*mugaz/muvar(k)
    144144     else
  • trunk/LMDZ.GENERIC/libf/phystd/params_h.F90

    r716 r3663  
    1212      save ideal_v
    1313
    14       parameter (rc  = 8.314462d0) ! ideal gas constant [J mol^-1 K^-1]
     14      parameter (rc  = 8.314463d0) ! ideal gas constant [J mol^-1 K^-1]
    1515
    1616      end module params_h
  • trunk/LMDZ.GENERIC/libf/phystd/stokes.F90

    r1384 r3663  
    4949
    5050
    51          a = 0.707*8.31/(4*pi*molrad**2 * avocado)
     51         a = 0.707*8.314463/(4.*pi*molrad**2 * avocado)
    5252         b = (2./9.) * rho_aer * g / visc
    5353        !print*,'molrad=',molrad
  • trunk/LMDZ.GENERIC/libf/phystd/tabfi_mod.F90

    r3552 r3663  
    105105          call abort_physic(modname,"Missing value for omega in def files!",1)
    106106        endif
    107         mugaz=(8.3144621/r)*1.E3
     107        mugaz=(8.314463/r)*1.E3
    108108        ! daysec already set by inifis
    109109        ! dtphys alread set by inifis
     
    180180      mugaz = tab_cntrl(tab0+8)
    181181      rcp = tab_cntrl(tab0+9)
    182       cpp=(8.314511/(mugaz/1000.0))/rcp
     182      cpp=(8.314463/(mugaz/1000.0))/rcp
    183183      daysec = tab_cntrl(tab0+10)
    184184      dtphys = tab_cntrl(tab0+11)
     
    455455          write(*,*)
    456456          write(*,*) ' mugaz (new value):',mugaz
    457           r=8.314511/(mugaz/1000.0)
     457          r=8.314463/(mugaz/1000.0)
    458458          write(*,*) ' R (new value):',r
    459459
     
    465465          write(*,*)
    466466          write(*,*) ' rcp (new value):',rcp
    467           r=8.314511/(mugaz/1000.0)
     467          r=8.314463/(mugaz/1000.0)
    468468          cpp=r/rcp
    469469          write(*,*) ' cpp (new value):',cpp
     
    477477          write(*,*) ' cpp (new value):',cpp
    478478          write(*,*) ' mugaz (new value):',mugaz
    479           r=8.314511/(mugaz/1000.0)
     479          r=8.314463/(mugaz/1000.0)
    480480          rcp=r/cpp
    481481          write(*,*) ' rcp (new value):',rcp
  • trunk/LMDZ.GENERIC/libf/phystd/thermcell_env.F90

    r3435 r3663  
    132132               ENDDO
    133133
    134                RV_generic = (8.314511*1000.)/(epsi_generic*mugaz)
     134               RV_generic = (8.314463*1000.)/(epsi_generic*mugaz)
    135135               RETV_generic = RV_generic/r-1.
    136136               RLvCp_generic = RLVTT_generic/cpp
  • trunk/LMDZ.GENERIC/libf/phystd/thermcell_plume.F90

    r3435 r3663  
    144144         RLvCp_comp = RLvCp
    145145      ELSEIF (generic_condensation .AND. .NOT. water ) THEN
    146          RV_generic = (8.314511*1000.)/(epsi_generic*mugaz)
     146         RV_generic = (8.314463*1000.)/(epsi_generic*mugaz)
    147147         RETV_comp = RV_generic/r-1.
    148148         RLvCp_comp = RLVTT_generic/cpp
  • trunk/LMDZ.GENERIC/libf/phystd/watercommon_h.F90

    r3655 r3663  
    4949
    5050      !RW = 1000.*R/mH2O
    51       RW = 1000.*8.314/mH2O ! caution! R is R/mugaz already!
     51      RW = 1000.*8.314463/mH2O ! caution! R is R/mugaz already!
    5252
    5353      RCPV   = 1.88e3 ! specific heat capacity of water vapor at 350K
Note: See TracChangeset for help on using the changeset viewer.