Ignore:
Timestamp:
Apr 18, 2023, 10:41:16 AM (22 months ago)
Author:
llange
Message:

PEM
Introduce module 'constants_marspem': Constants that are used are now put in this module, and load in each subroutine.
LL

Location:
trunk/LMDZ.COMMON/libf/evolution
Files:
1 added
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/evolution/adsorption_mod.F90

    r2939 r2944  
    9393      use comslope_mod, only : subslope_dist,def_slope_mean
    9494      use vertical_layers_mod, ONLY: ap,bp
     95      use constants_marspem_mod,only: alpha_clap_h2o,beta_clap_h2o, &
     96                                      m_h2o,m_co2,m_noco2, &
     97                                      rho_regolith
    9598#endif
    9699
     
    121124 real :: as_breccia = 1.7e4       ! Specific area of basalt, Zent
    122125 real ::  inertie_thresold = 800. ! TI > 800 means cementation
    123  real :: m_h2o = 18.01528E-3      ! Molecular weight of h2o (kg/mol)
    124  real :: m_co2 = 44.01E-3         ! Molecular weight of co2 (kg/mol)
    125  real :: m_noco2 = 33.37E-3       ! Molecular weight of non co2 (kg/mol)
    126  real ::  rho_regolith = 2000.    ! density of the regolith (Zent 1995, Buhler & piqueux 2021)
    127  real :: alpha_clapeyron = -6143.7! eq. (2) in Murphy & Koop 2005
    128  real :: beta_clapeyron = 28.9074 ! eq. (2) in Murphy & Koop 2005
    129 ! local variables
     126
     127 ! local variables
    130128#ifndef CPP_STD
    131129 REAL :: deltam_reg_complete(ngrid,index_breccia,nslope)         ! Difference in the mass per slope and soil layer (kg/m^3)
     
    202200        theta_h2o_adsorbded(ig,iloop,islope) = (K*pvapor_avg(ig)/(1+K*pvapor_avg(ig)))**mu
    203201      else
    204         p_sat =exp(alpha_clapeyron/tsoil_PEM(ig,iloop,islope) +beta_clapeyron) ! we assume fixed temperature in the ice ... not really:q good but ...
     202        p_sat =exp(beta_clap_h2o/tsoil_PEM(ig,iloop,islope) +alpha_clap_h2o) ! we assume fixed temperature in the ice ... not really good but ...
    205203        theta_h2o_adsorbded(ig,iloop,islope) = (K*p_sat/(1+K*p_sat))**mu
    206204      endif
     
    250248      use comslope_mod, only : subslope_dist,def_slope_mean
    251249      use vertical_layers_mod, ONLY: ap,bp
     250      use constants_marspem_mod, only: m_co2, m_noco2,rho_regolith
    252251#endif
    253252
     
    272271 REAL :: beta =  -1541.5  ! Zent & Quinn 1995
    273272 REAL ::  inertie_thresold = 800. ! TI > 800 means cementation
    274  REAL ::  rho_regolith = 2000. ! density of the regolith, buhler & piqueux 2021
    275  real :: m_co2 = 44.01E-3      ! Molecular weight of co2 (kg/mol)
    276  real :: m_noco2 = 33.37E-3    ! Molecular weight of h2o (kg/mol)
    277273 real :: m_theta = 4.27e-7     ! Mass of co2 per m^2 absorbed
    278274! real :: as = 18.9e3              ! Specific area, Buhler & Piqueux 2021
  • trunk/LMDZ.COMMON/libf/evolution/co2glaciers_mod.F90

    r2918 r2944  
    6464
    6565     USE comconst_mod, ONLY: pi
     66     use comcstfi_h, only: g
    6667
    6768!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    8788      REAL,INTENT(OUT) :: hmax(ngrid,nslope) ! Physical grid x Slope field: maximum co2 thickness before flaw [m]
    8889! Local
    89       REAL, PARAMETER :: g = 3.71 ! surface gravity [m/s^2]
    9090      INTEGER,PARAMETER :: n = 7 ! flow law exponent Nye et al., 2000
    9191      REAL,PARAMETER :: Rg = 8.3145 ! gas constant [J/K/mol]
     
    226226!!!
    227227!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    228 implicit none
     228 
     229use constants_marspem_mod,only : alpha_clap_co2,beta_clap_co2
     230
     231implicit none
     232
    229233! arguments:
    230234! ----------
     
    243247      INTEGER :: ig,it ! for loop
    244248      REAL :: ave ! intermediate to compute average
    245       REAL :: alpha_clap, beta_clap ! Clapeyron law for CO2
    246       alpha_clap = 23.3494 ! James et al. 1992
    247       beta_clap = 3182.48  ! James et al. 1992
    248249
    249250!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    253254        ave = 0
    254255        DO it = 1,timelen
    255            ave = ave + beta_clap/(alpha_clap-log(vmr_co2_PEM(ig,it)*ps_GCM(ig,it)*global_ave_ps_GCM/global_ave_ps_PEM/100))
     256           ave = ave + beta_clap_co2/(alpha_clap_co2-log(vmr_co2_PEM(ig,it)*ps_GCM(ig,it)*global_ave_ps_GCM/global_ave_ps_PEM/100))
    256257        ENDDO
    257258        Tcond(ig) = ave/timelen
  • trunk/LMDZ.COMMON/libf/evolution/pem.F90

    r2939 r2944  
    8787      use co2glaciers_mod,only: co2glaciers_evol,co2glaciersflow
    8888      use criterion_pem_stop_mod,only: criterion_waterice_stop,criterion_co2_stop
     89      use constants_marspem_mod,only: alpha_clap_co2,beta_clap_co2, alpha_clap_h2o,beta_clap_h2o, &
     90                                      m_co2,m_noco2
     91
    8992!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SOIL
    9093      use comsoil_h_PEM, only: soil_pem,ini_comsoil_h_PEM,end_comsoil_h_PEM,nsoilmx_PEM, &
     
    179182      INTEGER :: criterion_stop  ! which criterion is reached ? 1= h2o ice surf, 2 = co2 ice surf, 3 = ps, 4 = orb param
    180183
    181       real,save :: m_co2, m_noco2, A , B, mmean        ! Molar mass of co2, no co2 (Ar, ...), intermediate A, B for computations, mean molar mass of the layer [mol/kg]
     184      real,save ::     A , B, mmean        ! Molar mass: intermediate A, B for computations of the mean molar mass of the layer [mol/kg]
    182185      real ,allocatable :: vmr_co2_gcm(:,:) ! Physics x Times  co2 volume mixing ratio retrieve from the gcm [m^3/m^3]
    183186      real ,allocatable :: vmr_co2_pem_phys(:,:) ! Physics x Times  co2 volume mixing ratio used in the PEM
     
    189192      REAL, ALLOCATABLE :: p(:,:)  ! Physics x Atmosphere: pressure to recompute and write in restart (ngrid,llmp1)
    190193      REAL :: extra_mass           ! Intermediate variables Extra mass of a tracer if it is greater than 1
    191      REAL :: beta_clap_co2 = 3182.48 ! clapeyron's law for CO2
    192      REAL :: alpha_clap_co2 = 23.3494 ! Clapeyron's law for CO2
    193194
    194195
     
    238239     REAL :: totmassco2_adsorbded                                           ! Total mass of CO2 that is exchanged because of adsorption / desoprtion over the planets [kg]
    239240     REAL :: totmassh2o_adsorbded                                           ! Total mass of H2O that is exchanged because of adsorption / desoprtion over the planets [kg]
    240      REAL :: alpha_clap_h2o = -6143.7                                    ! coeffcient to compute psat, from Murphie et Kood 2005 [K]
    241      REAL :: beta_clap_h2o = 28.9074                                     ! coefficient to compute psat, from Murphie et Kood 2005 [1]
    242241     LOGICAL :: bool_sublim                                              ! logical to check if there is sublimation or not
    243242     
     
    278277      ngrid=ngridmx
    279278      nlayer=llm
    280 
    281       m_co2 = 44.01E-3  ! CO2 molecular mass (kg/mol)   
    282       m_noco2 = 33.37E-3  ! Non condensible mol mass (kg/mol)   
     279   
    283280      A =(1/m_co2 - 1/m_noco2)
    284281      B=1/m_noco2
     
    971968       do ig = 1,ngrid
    972969         do isoil = 1,nsoilmx_PEM
    973           watersoil_density_PEM_timeseries(ig,isoil,islope,t) = exp(alpha_clap_h2o/Tsoil_locslope(ig,isoil) + beta_clap_h2o)/Tsoil_locslope(ig,isoil)
     970          watersoil_density_PEM_timeseries(ig,isoil,islope,t) = exp(beta_clap_h2o/Tsoil_locslope(ig,isoil) + alpha_clap_h2o)/Tsoil_locslope(ig,isoil)
    974971          if(isnan(Tsoil_locslope(ig,isoil))) then
    975972            call abort_pem("PEM - Update Tsoil","NAN detected in Tsoil ",1)
  • trunk/LMDZ.COMMON/libf/evolution/pemetat0.F90

    r2939 r2944  
    1010   USE temps_mod_evol, ONLY: year_PEM
    1111   USE ice_table_mod, only: computeice_table_equilibrium
     12   USE constants_marspem_mod,only: alpha_clap_h2o,beta_clap_h2o, &
     13                                   TI_breccia,TI_bedrock
    1214#ifndef CPP_STD   
    1315   use surfdat_h, only: watercaptag
     
    5355   LOGICAL :: found2                                                  ! check if variables are found in the start
    5456   integer :: iloop,ig,islope,it,isoil                                ! index for loops
    55    REAL :: TI_breccia = 750.                                          ! Thermal inertia of Breccia following Wood 2009 [SI]
    56    REAL :: TI_bedrock = 2300.                                         ! Thermal inertia of Bedrock following Wood 2009 [SI]
    5757   real :: kcond                                                      ! Thermal conductivity, intermediate variable [SI]
    5858   real :: delta                                                      ! Depth of the interface regolith-breccia, breccia -bedrock [m]
     
    6464   real :: beta_tmp(ngrid,nsoil_PEM-1)                                ! Intermediate for tsoil computatio []                               
    6565   real :: year_PEM_read                                              ! Year of the PEM previous run
    66    real :: alpha_clap_h2o = -6143.7                                   ! Intermediate coefficient to compute psat using clapeyron law, Murphie et al. 2005 [K^-1]
    67    real :: beta_clap_h2o = 28.9074                                    ! Intermediate coefficient to compute psat using clapeyron law, Murphie et al. 2005 [1]
    6866   LOGICAL :: startpem_file                                           ! boolean to check if we read the startfile or not
    6967
     
    244242      do isoil = nsoil_GCM+1,nsoil_PEM
    245243        do ig = 1,ngrid
    246         watersoil_ave(ig,isoil,islope) = exp(alpha_clap_h2o/tsoil_PEM(ig,isoil,islope) + beta_clap_h2o)/tsoil_PEM(ig,isoil,islope)
     244        watersoil_ave(ig,isoil,islope) = exp(beta_clap_h2o/tsoil_PEM(ig,isoil,islope) + alpha_clap_h2o)/tsoil_PEM(ig,isoil,islope)
    247245        enddo
    248246      enddo
     
    448446      do isoil = nsoil_GCM+1,nsoil_PEM
    449447        do ig = 1,ngrid
    450         watersoil_ave(ig,isoil,islope) = exp(alpha_clap_h2o/tsoil_PEM(ig,isoil,islope) + beta_clap_h2o)/tsoil_PEM(ig,isoil,islope)
     448        watersoil_ave(ig,isoil,islope) = exp(beta_clap_h2o/tsoil_PEM(ig,isoil,islope) + alpha_clap_h2o)/tsoil_PEM(ig,isoil,islope)
    451449        enddo
    452450      enddo
  • trunk/LMDZ.COMMON/libf/evolution/read_data_GCM.F90

    r2937 r2944  
    1111      use comsoil_h, only: nsoilmx
    1212      USE comsoil_h_PEM, ONLY: soil_pem
    13 
     13      use constants_marspem_mod,only: m_co2,m_noco2
    1414      IMPLICIT NONE
    1515
     
    5555
    5656  INTEGER :: edges(4),corner(4)
    57   INTEGER :: i,j,l,t                                                     ! loop variables
    58   real,save :: m_co2, m_noco2, A , B, mmean                            ! Molar Mass of co2 and no co2, A;B intermediate variables to compute the mean molar mass of the layer
     57  INTEGER :: i,j,l,t                                                   ! loop variables
     58  real  ::  A , B, mmean                                           ! Molar Mass of co2 and no co2, A;B intermediate variables to compute the mean molar mass of the layer
    5959
    6060  INTEGER :: islope                                                    ! loop for variables
     
    8080  modname="read_data_gcm"
    8181
    82       m_co2 = 44.01E-3  ! CO2 molecular mass (kg/mol)   
    83       m_noco2 = 33.37E-3  ! Non condensible mol mass (kg/mol)   
    8482      A =(1/m_co2 - 1/m_noco2)
    8583      B=1/m_noco2
  • trunk/LMDZ.COMMON/libf/evolution/recomp_tend_co2_slope.F90

    r2893 r2944  
    33!
    44SUBROUTINE recomp_tend_co2_slope(tendencies_co2_ice_phys,tendencies_co2_ice_phys_ini,co2ice_slope,vmr_co2_gcm,vmr_co2_pem,ps_GCM_2,global_ave_press_GCM,global_ave_press_new,timelen,ngrid,nslope)
     5
     6      use constants_marspem_mod, only : alpha_clap_co2, beta_clap_co2, sigmaB,Lco2
    57
    68      IMPLICIT NONE
     
    3234
    3335  INTEGER :: i,t,islope
    34   REAL :: eps, sigma, L, beta, alpha, coef, ave
     36  REAL :: eps, coef, ave
    3537
    3638  eps=0.95
    37   sigma=5.678E-8
    38   L=5.71*10**5
    39   beta=3182.48
    40   alpha=23.3494
    41 
    42   coef=669*88875*eps*sigma/L
     39  coef=669*88875*eps*sigmaB/Lco2
    4340
    4441! Evolution of the water ice for each physical point
     
    4946      if(co2ice_slope(i,islope).gt.1e-4 .and. abs(tendencies_co2_ice_phys(i,islope)).gt.1e-5) then
    5047        do t=1,timelen
    51            ave=ave+(beta/(alpha-log(vmr_co2_gcm(i,t)*ps_GCM_2(i,t)/100.)))**4  &
    52               -(beta/(alpha-log(vmr_co2_pem(i,t)*ps_GCM_2(i,t)*(global_ave_press_new/global_ave_press_GCM)/100.)))**4
     48           ave=ave+(beta_clap_co2/(alpha_clap_co2-log(vmr_co2_gcm(i,t)*ps_GCM_2(i,t)/100.)))**4  &
     49              -(beta_clap_co2/(alpha_clap_co2-log(vmr_co2_pem(i,t)*ps_GCM_2(i,t)*(global_ave_press_new/global_ave_press_GCM)/100.)))**4
    5350         enddo
    5451      endif
  • trunk/LMDZ.COMMON/libf/evolution/update_soil.F90

    r2939 r2944  
    55 USE vertical_layers_mod, ONLY: ap,bp
    66 USE comsoil_h_PEM, only: n_1km
     7 USE constants_marspem_mod,only: TI_breccia,TI_bedrock, TI_regolith_avg
    78 implicit none
    89! Input:
     
    1920
    2021 REAL ::  inertie_thresold = 800. ! look for ice
    21  REAL ::  inertie_averaged = 250 ! Mellon et al. 2000
    2222 REAL ::  ice_inertia = 1200  ! Inertia of ice
    2323 REAL ::  P610 = 610.0       ! current average pressure on Mars [Pa]
    24  REAL :: TI_breccia = 750.   ! THermal inertia of Breccia following Wood 2009 [SI]
    25  REAL :: TI_bedrock = 2300.  ! Thermal inertia of Bedrock following Wood 2009 [SI]
    2624
    2725! Local variables:
     
    4543   do ig = 1,ngrid
    4644      if((tendencies_waterice(ig,islope).lt.-1e-5).and.(waterice(ig,islope).eq.0)) then
    47               regolith_inertia(ig,islope) = inertie_averaged
     45              regolith_inertia(ig,islope) = TI_regolith_avg
    4846       endif
    4947      if(reg_thprop_dependp) then
Note: See TracChangeset for help on using the changeset viewer.