Changeset 3272 for trunk/LMDZ.MARS


Ignore:
Timestamp:
Mar 19, 2024, 10:52:50 AM (8 months ago)
Author:
llange
Message:

Mars PCM
Adapt soil water to run with massive ice and not pore filling ice + constant diffusion coefficient
LL

Location:
trunk/LMDZ.MARS
Files:
5 edited

Legend:

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

    r3263 r3272  
    45494549Reversing -r 3250 (the ""bug"" I fixed was not a bug but my mystake)
    45504550
    4551 == 12/03/2024 ==Jliu
     4551== 12/03/2024 == Jliu
    45524552Synchronize all default non-orographic gravity wave parameters in callphys.def with the ones in scheme. The parameters are as follows:
    45534553#Eliassen-Palm FLux(only if calllott_nonoro=.true.)
     
    45724572nonoro_gwimixing_vdl=1.5
    45734573
    4574 
     4574== 19/03/2024 == LL
     4575Adapt 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  
    3232logical, save                                  :: adsorption_soil      ! boolean to call adosrption (or not)
    3333real,    save                                  :: choice_ads           ! Choice for adsorption isotherm (3 means no adsorption, see soilwater.F90)
     34logical, save                                  :: ads_const_D          ! boolean to have constant diffusion coefficient
     35logical, save                                  :: ads_massive_ice      ! boolean to have massive subsurface ice
    3436real,    save, allocatable, dimension(:,:,:,:) :: qsoil                ! subsurface tracers (kg/m^3 of regol)
    3537integer, parameter :: nqsoil = 3                                       ! number of subsurface tracers, only three when working with water
     
    3941REAL, parameter :: porosity_reg  = 0.45
    4042!$OMP THREADPRIVATE(adsorption_soil,qsoil,choice_ads)
     43!$OMP THREADPRIVATE(ads_const_D,ads_massive_ice)
    4144
    4245!=======================================================================
  • trunk/LMDZ.MARS/libf/phymars/conf_phys.F

    r3262 r3272  
    4040     &                           lag_layer
    4141      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
    4344      use nonoro_gwd_mix_mod, only: calljliu_gwimix
    4445
     
    10411042         if (adsorption_soil) choice_ads = 1
    10421043         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
    10441051         poreice_tifeedback = .false.
    10451052         call getin_p("poreice_tifeedback",poreice_tifeedback)
  • trunk/LMDZ.MARS/libf/phymars/dyn1d/init_testphys1d_mod.F90

    r3262 r3272  
    2222use comsoil_h,                only: volcapa, nsoilmx, inertiesoil, inertiedat, layer, mlayer, flux_geo, tsoil, &
    2323                                    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
    2525use comvert_mod,              only: ap, bp, aps, bps, pa, preff, presnivs, pseudoalt, scaleheight
    2626use dimradmars_mod,           only: tauvis, totcloudfrac, albedo, ini_dimradmars_mod_slope_var, end_dimradmars_mod_slope_var
     
    688688            if(adsorption_soil) then
    689689            ! 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           
    692697            endif
    693698        else ! searching for the ice/regolith boundary:
     
    713718                else
    714719                   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
    716721                endif
    717722            endif
  • trunk/LMDZ.MARS/libf/phymars/soilwater.F90

    r3262 r3272  
    44
    55
    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
    78      use comcstfi_h
    89      use tracer_mod
     
    271272real :: var_flux_soil(ngrid, nsoil)
    272273
     274real :: default_diffcoeff = 4e-4
     275
    273276! Loop variables and counters
    274277integer :: ig, ik, i, j                   ! loop variables
     
    346349                       
    347350                        ! 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
    349356                        tortuosity(ig, ik) = 1.5D0
    350357                        rho_soil(ig, ik) = 1.3D3 ! in kg/m3 of regolith (incl. porosity)
     
    569576                  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))
    570577
     578                  if(ads_const_D) D_mid(ig, ik) = default_diffcoeff
     579
    571580                  ! Midlayer diffusion coeff. (correlation by Rogers and Nielson, 1991)
    572581                  !                             D_mid(ig, ik) = D0(ig, ik) * (1. - saturation_water_ice(ig, ik)) * exp(-6. * saturation_water_ice(ig, ik)  &
     
    595604                 
    596605                  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 
    598609!                  D_inter(ig, ik) = ( (layer(ik) - mlayer(ik - 1)) * D_mid(ig, ik + 1) &  ! old implementation with direct interpolation
    599610!                        + (mlayer(ik) - layer(ik)) * D_mid(ig, ik) ) / (mlayer(ik) - mlayer(ik - 1))
Note: See TracChangeset for help on using the changeset viewer.