Changeset 2944 for trunk/LMDZ.COMMON/libf
- Timestamp:
- Apr 18, 2023, 10:41:16 AM (22 months ago)
- 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 93 93 use comslope_mod, only : subslope_dist,def_slope_mean 94 94 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 95 98 #endif 96 99 … … 121 124 real :: as_breccia = 1.7e4 ! Specific area of basalt, Zent 122 125 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 130 128 #ifndef CPP_STD 131 129 REAL :: deltam_reg_complete(ngrid,index_breccia,nslope) ! Difference in the mass per slope and soil layer (kg/m^3) … … 202 200 theta_h2o_adsorbded(ig,iloop,islope) = (K*pvapor_avg(ig)/(1+K*pvapor_avg(ig)))**mu 203 201 else 204 p_sat =exp( alpha_clapeyron/tsoil_PEM(ig,iloop,islope) +beta_clapeyron) ! we assume fixed temperature in the ice ... not really:qgood 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 ... 205 203 theta_h2o_adsorbded(ig,iloop,islope) = (K*p_sat/(1+K*p_sat))**mu 206 204 endif … … 250 248 use comslope_mod, only : subslope_dist,def_slope_mean 251 249 use vertical_layers_mod, ONLY: ap,bp 250 use constants_marspem_mod, only: m_co2, m_noco2,rho_regolith 252 251 #endif 253 252 … … 272 271 REAL :: beta = -1541.5 ! Zent & Quinn 1995 273 272 REAL :: inertie_thresold = 800. ! TI > 800 means cementation 274 REAL :: rho_regolith = 2000. ! density of the regolith, buhler & piqueux 2021275 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)277 273 real :: m_theta = 4.27e-7 ! Mass of co2 per m^2 absorbed 278 274 ! real :: as = 18.9e3 ! Specific area, Buhler & Piqueux 2021 -
trunk/LMDZ.COMMON/libf/evolution/co2glaciers_mod.F90
r2918 r2944 64 64 65 65 USE comconst_mod, ONLY: pi 66 use comcstfi_h, only: g 66 67 67 68 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 87 88 REAL,INTENT(OUT) :: hmax(ngrid,nslope) ! Physical grid x Slope field: maximum co2 thickness before flaw [m] 88 89 ! Local 89 REAL, PARAMETER :: g = 3.71 ! surface gravity [m/s^2]90 90 INTEGER,PARAMETER :: n = 7 ! flow law exponent Nye et al., 2000 91 91 REAL,PARAMETER :: Rg = 8.3145 ! gas constant [J/K/mol] … … 226 226 !!! 227 227 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 228 implicit none 228 229 use constants_marspem_mod,only : alpha_clap_co2,beta_clap_co2 230 231 implicit none 232 229 233 ! arguments: 230 234 ! ---------- … … 243 247 INTEGER :: ig,it ! for loop 244 248 REAL :: ave ! intermediate to compute average 245 REAL :: alpha_clap, beta_clap ! Clapeyron law for CO2246 alpha_clap = 23.3494 ! James et al. 1992247 beta_clap = 3182.48 ! James et al. 1992248 249 249 250 !!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 253 254 ave = 0 254 255 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)) 256 257 ENDDO 257 258 Tcond(ig) = ave/timelen -
trunk/LMDZ.COMMON/libf/evolution/pem.F90
r2939 r2944 87 87 use co2glaciers_mod,only: co2glaciers_evol,co2glaciersflow 88 88 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 89 92 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SOIL 90 93 use comsoil_h_PEM, only: soil_pem,ini_comsoil_h_PEM,end_comsoil_h_PEM,nsoilmx_PEM, & … … 179 182 INTEGER :: criterion_stop ! which criterion is reached ? 1= h2o ice surf, 2 = co2 ice surf, 3 = ps, 4 = orb param 180 183 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] 182 185 real ,allocatable :: vmr_co2_gcm(:,:) ! Physics x Times co2 volume mixing ratio retrieve from the gcm [m^3/m^3] 183 186 real ,allocatable :: vmr_co2_pem_phys(:,:) ! Physics x Times co2 volume mixing ratio used in the PEM … … 189 192 REAL, ALLOCATABLE :: p(:,:) ! Physics x Atmosphere: pressure to recompute and write in restart (ngrid,llmp1) 190 193 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 CO2192 REAL :: alpha_clap_co2 = 23.3494 ! Clapeyron's law for CO2193 194 194 195 … … 238 239 REAL :: totmassco2_adsorbded ! Total mass of CO2 that is exchanged because of adsorption / desoprtion over the planets [kg] 239 240 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]242 241 LOGICAL :: bool_sublim ! logical to check if there is sublimation or not 243 242 … … 278 277 ngrid=ngridmx 279 278 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 283 280 A =(1/m_co2 - 1/m_noco2) 284 281 B=1/m_noco2 … … 971 968 do ig = 1,ngrid 972 969 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) 974 971 if(isnan(Tsoil_locslope(ig,isoil))) then 975 972 call abort_pem("PEM - Update Tsoil","NAN detected in Tsoil ",1) -
trunk/LMDZ.COMMON/libf/evolution/pemetat0.F90
r2939 r2944 10 10 USE temps_mod_evol, ONLY: year_PEM 11 11 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 12 14 #ifndef CPP_STD 13 15 use surfdat_h, only: watercaptag … … 53 55 LOGICAL :: found2 ! check if variables are found in the start 54 56 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]57 57 real :: kcond ! Thermal conductivity, intermediate variable [SI] 58 58 real :: delta ! Depth of the interface regolith-breccia, breccia -bedrock [m] … … 64 64 real :: beta_tmp(ngrid,nsoil_PEM-1) ! Intermediate for tsoil computatio [] 65 65 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]68 66 LOGICAL :: startpem_file ! boolean to check if we read the startfile or not 69 67 … … 244 242 do isoil = nsoil_GCM+1,nsoil_PEM 245 243 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) 247 245 enddo 248 246 enddo … … 448 446 do isoil = nsoil_GCM+1,nsoil_PEM 449 447 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) 451 449 enddo 452 450 enddo -
trunk/LMDZ.COMMON/libf/evolution/read_data_GCM.F90
r2937 r2944 11 11 use comsoil_h, only: nsoilmx 12 12 USE comsoil_h_PEM, ONLY: soil_pem 13 13 use constants_marspem_mod,only: m_co2,m_noco2 14 14 IMPLICIT NONE 15 15 … … 55 55 56 56 INTEGER :: edges(4),corner(4) 57 INTEGER :: i,j,l,t 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 layer57 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 59 59 60 60 INTEGER :: islope ! loop for variables … … 80 80 modname="read_data_gcm" 81 81 82 m_co2 = 44.01E-3 ! CO2 molecular mass (kg/mol)83 m_noco2 = 33.37E-3 ! Non condensible mol mass (kg/mol)84 82 A =(1/m_co2 - 1/m_noco2) 85 83 B=1/m_noco2 -
trunk/LMDZ.COMMON/libf/evolution/recomp_tend_co2_slope.F90
r2893 r2944 3 3 ! 4 4 SUBROUTINE 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 5 7 6 8 IMPLICIT NONE … … 32 34 33 35 INTEGER :: i,t,islope 34 REAL :: eps, sigma, L, beta, alpha,coef, ave36 REAL :: eps, coef, ave 35 37 36 38 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 43 40 44 41 ! Evolution of the water ice for each physical point … … 49 46 if(co2ice_slope(i,islope).gt.1e-4 .and. abs(tendencies_co2_ice_phys(i,islope)).gt.1e-5) then 50 47 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.)))**448 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 53 50 enddo 54 51 endif -
trunk/LMDZ.COMMON/libf/evolution/update_soil.F90
r2939 r2944 5 5 USE vertical_layers_mod, ONLY: ap,bp 6 6 USE comsoil_h_PEM, only: n_1km 7 USE constants_marspem_mod,only: TI_breccia,TI_bedrock, TI_regolith_avg 7 8 implicit none 8 9 ! Input: … … 19 20 20 21 REAL :: inertie_thresold = 800. ! look for ice 21 REAL :: inertie_averaged = 250 ! Mellon et al. 200022 22 REAL :: ice_inertia = 1200 ! Inertia of ice 23 23 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]26 24 27 25 ! Local variables: … … 45 43 do ig = 1,ngrid 46 44 if((tendencies_waterice(ig,islope).lt.-1e-5).and.(waterice(ig,islope).eq.0)) then 47 regolith_inertia(ig,islope) = inertie_averaged45 regolith_inertia(ig,islope) = TI_regolith_avg 48 46 endif 49 47 if(reg_thprop_dependp) then
Note: See TracChangeset
for help on using the changeset viewer.