Changeset 3272 for trunk/LMDZ.MARS
- Timestamp:
- Mar 19, 2024, 10:52:50 AM (8 months ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/changelog.txt
r3263 r3272 4549 4549 Reversing -r 3250 (the ""bug"" I fixed was not a bug but my mystake) 4550 4550 4551 == 12/03/2024 == Jliu4551 == 12/03/2024 == Jliu 4552 4552 Synchronize all default non-orographic gravity wave parameters in callphys.def with the ones in scheme. The parameters are as follows: 4553 4553 #Eliassen-Palm FLux(only if calllott_nonoro=.true.) … … 4572 4572 nonoro_gwimixing_vdl=1.5 4573 4573 4574 4574 == 19/03/2024 == LL 4575 Adapt soil water to run with massive ice and not pore filling ice + constant diffusion coefficient -
trunk/LMDZ.MARS/libf/phymars/comsoil_h.F90
r3262 r3272 32 32 logical, save :: adsorption_soil ! boolean to call adosrption (or not) 33 33 real, save :: choice_ads ! Choice for adsorption isotherm (3 means no adsorption, see soilwater.F90) 34 logical, save :: ads_const_D ! boolean to have constant diffusion coefficient 35 logical, save :: ads_massive_ice ! boolean to have massive subsurface ice 34 36 real, save, allocatable, dimension(:,:,:,:) :: qsoil ! subsurface tracers (kg/m^3 of regol) 35 37 integer, parameter :: nqsoil = 3 ! number of subsurface tracers, only three when working with water … … 39 41 REAL, parameter :: porosity_reg = 0.45 40 42 !$OMP THREADPRIVATE(adsorption_soil,qsoil,choice_ads) 43 !$OMP THREADPRIVATE(ads_const_D,ads_massive_ice) 41 44 42 45 !======================================================================= -
trunk/LMDZ.MARS/libf/phymars/conf_phys.F
r3262 r3272 40 40 & lag_layer 41 41 use microphys_h, only: mteta 42 use comsoil_h, only: adsorption_soil, choice_ads 42 use comsoil_h, only: adsorption_soil, choice_ads,ads_const_D, 43 & ads_massive_ice 43 44 use nonoro_gwd_mix_mod, only: calljliu_gwimix 44 45 … … 1041 1042 if (adsorption_soil) choice_ads = 1 1042 1043 call getin_p("choice_ads",choice_ads) 1043 1044 1045 ads_const_D = .false. 1046 call getin_p("ads_const_D",ads_const_D) 1047 1048 ads_massive_ice = .false. 1049 call getin_p("ads_massive_ice",ads_massive_ice) 1050 1044 1051 poreice_tifeedback = .false. 1045 1052 call getin_p("poreice_tifeedback",poreice_tifeedback) -
trunk/LMDZ.MARS/libf/phymars/dyn1d/init_testphys1d_mod.F90
r3262 r3272 22 22 use comsoil_h, only: volcapa, nsoilmx, inertiesoil, inertiedat, layer, mlayer, flux_geo, tsoil, & 23 23 adsorption_soil, qsoil, igcm_h2o_ice_soil, porosity_reg, & 24 ini_comsoil_h_slope_var, end_comsoil_h_slope_var 24 ini_comsoil_h_slope_var, end_comsoil_h_slope_var, ads_massive_ice 25 25 use comvert_mod, only: ap, bp, aps, bps, pa, preff, presnivs, pseudoalt, scaleheight 26 26 use dimradmars_mod, only: tauvis, totcloudfrac, albedo, ini_dimradmars_mod_slope_var, end_dimradmars_mod_slope_var … … 688 688 if(adsorption_soil) then 689 689 ! add subsurface ice in qsoil if one runs with adsorption 690 qsoil(1,1,igcm_h2o_ice_soil,:) = (ice_depth-layer(2))/(layer(1) - layer(2))*porosity_reg*rho_H2O_ice 691 qsoil(1,2:,igcm_h2o_ice_soil,:) = porosity_reg*rho_H2O_ice 690 if(ads_massive_ice) then 691 qsoil(1,1,igcm_h2o_ice_soil,:) = (ice_depth-layer(2))/(layer(1) - layer(2))*rho_H2O_ice ! assume no porosity in the ice 692 qsoil(1,2:,igcm_h2o_ice_soil,:) = rho_H2O_ice 693 else 694 qsoil(1,1,igcm_h2o_ice_soil,:) = (ice_depth-layer(2))/(layer(1) - layer(2))*porosity_reg*rho_H2O_ice 695 qsoil(1,2:,igcm_h2o_ice_soil,:) = porosity_reg*rho_H2O_ice 696 endif 692 697 endif 693 698 else ! searching for the ice/regolith boundary: … … 713 718 else 714 719 qsoil(1,iref+1:,igcm_h2o_ice_soil,:) = porosity_reg*rho_H2O_ice 715 qsoil(1,iref,igcm_h2o_ice_soil,:) = (ice_depth-layer(iref))/(layer(iref-1) - layer(iref))*porosity_reg*rho_H2O_ice 720 qsoil(1,iref,igcm_h2o_ice_soil,:) = (ice_depth-layer(iref))/(layer(iref-1) - layer(iref))*porosity_reg*rho_H2O_ice 716 721 endif 717 722 endif -
trunk/LMDZ.MARS/libf/phymars/soilwater.F90
r3262 r3272 4 4 5 5 6 use comsoil_h, only: igcm_h2o_vap_soil, igcm_h2o_ice_soil, igcm_h2o_vap_ads, layer, mlayer, choice_ads, porosity_reg 6 use comsoil_h, only: igcm_h2o_vap_soil, igcm_h2o_ice_soil, igcm_h2o_vap_ads, layer, mlayer, choice_ads, porosity_reg, & 7 ads_const_D, ads_massive_ice 7 8 use comcstfi_h 8 9 use tracer_mod … … 271 272 real :: var_flux_soil(ngrid, nsoil) 272 273 274 real :: default_diffcoeff = 4e-4 275 273 276 ! Loop variables and counters 274 277 integer :: ig, ik, i, j ! loop variables … … 346 349 347 350 ! These properties are defined here in order to enable custom profiles 348 porosity_ice_free(ig, ik) = porosity_reg 351 if(ads_massive_ice) then 352 porosity_ice_free(ig, ik) = 0.9999 353 else 354 porosity_ice_free(ig, ik) = porosity_reg 355 endif 349 356 tortuosity(ig, ik) = 1.5D0 350 357 rho_soil(ig, ik) = 1.3D3 ! in kg/m3 of regolith (incl. porosity) … … 569 576 D_mid(ig, ik) = D0(ig, ik) * (1.D0 - saturation_water_ice(ig, ik)) ** 2.D0 * 1.D0 / (1.D0 / Dm(ig, ik) + 1.D0 / Dk(ig, ik)) 570 577 578 if(ads_const_D) D_mid(ig, ik) = default_diffcoeff 579 571 580 ! Midlayer diffusion coeff. (correlation by Rogers and Nielson, 1991) 572 581 ! D_mid(ig, ik) = D0(ig, ik) * (1. - saturation_water_ice(ig, ik)) * exp(-6. * saturation_water_ice(ig, ik) & … … 595 604 596 605 D_inter(ig, ik) = D0(ig, ik) * (1.D0 - saturation_water_ice_inter(ig, ik)) ** 2.D0 * 1.D0 / (1.D0 / Dm_inter(ig, ik) + 1.D0 / Dk_inter(ig, ik)) 597 606 607 if(ads_const_D) D_inter(ig, ik) = default_diffcoeff 608 598 609 ! D_inter(ig, ik) = ( (layer(ik) - mlayer(ik - 1)) * D_mid(ig, ik + 1) & ! old implementation with direct interpolation 599 610 ! + (mlayer(ik) - layer(ik)) * D_mid(ig, ik) ) / (mlayer(ik) - mlayer(ik - 1))
Note: See TracChangeset
for help on using the changeset viewer.