Ignore:
Timestamp:
Jul 1, 2025, 2:17:10 PM (6 days ago)
Author:
jbclement
Message:

PEM:
Addition of the flag 'impose_dust_ratio' (default: .false.) to impose a dust-to-ice ratio instead of a dust tendency for the layering algorithm. The ratio value can be set in the "run_PEM.def" by 'dust_to_ice_ratio' (default: 0.01).
JBC

Location:
trunk/LMDZ.COMMON/libf/evolution
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/evolution/changelog.txt

    r3820 r3821  
    720720== 01/07/2025 == JBC
    721721Bug correction in the launching script.
     722
     723== 01/07/2025 == JBC
     724Addition of the flag 'impose_dust_ratio' (default: .false.) to impose a dust-to-ice ratio instead of a dust tendency for the layering algorithm. The ratio value can be set in the "run_PEM.def" by 'dust_to_ice_ratio' (default: 0.01).
  • trunk/LMDZ.COMMON/libf/evolution/conf_pem.F90

    r3517 r3821  
    2929use glaciers_mod,          only: h2oice_flow, co2ice_flow, inf_h2oice_threshold, metam_co2ice_threshold, metam_h2oice_threshold, metam_h2oice, metam_co2ice
    3030use ice_table_mod,         only: icetable_equilibrium, icetable_dynamic
    31 use layering_mod,          only: layering_algo
     31use layering_mod,          only: layering_algo, d_dust, impose_dust_ratio, dust2ice_ratio
    3232use info_PEM_mod,          only: iPCM, iPEM, nPCM, nPCM_ini
    3333
     
    188188call getin('layering',layering_algo)
    189189
     190d_dust = 1.e-3 ! kg.m-2.y-1
     191call getin('d_dust',d_dust)
     192
     193impose_dust_ratio = .false.
     194call getin('impose_dust_ratio',impose_dust_ratio)
     195
     196dust2ice_ratio = 0.01
     197call getin('dust2ice_ratio',dust2ice_ratio)
     198
    190199END SUBROUTINE conf_pem
    191200
  • trunk/LMDZ.COMMON/libf/evolution/deftank/run_PEM.def

    r3791 r3821  
    1414# evol_orbit_pem=.false.
    1515
    16 # If evol_orbit_pem=.true., number of Earth years before present to start the PEM run? Default = 0
     16# If evol_orbit_pem=.true., number of Earth years before present to start the PEM run. Default = 0
    1717# year_earth_bp_ini=0
    1818
     
    3030
    3131#---------- Stopping criteria parameters ----------#
    32 # If evol_orbit_pem=.false., maximal number of iterations if no stopping criterion is reached? Default=100000000
     32# If evol_orbit_pem=.false., maximal number of iterations if no stopping criterion is reached. Default=100000000
    3333# Max_iter_pem=10
    3434
    35 # Acceptance rate of sublimating H2O ice surface change? Default = 0.2
     35# Acceptance rate of sublimating H2O ice surface change. Default = 0.2
    3636# h2o_ice_crit=0.2
    3737
    38 # Acceptance rate of sublimating CO2 ice surface change? Default = 0.2
     38# Acceptance rate of sublimating CO2 ice surface change. Default = 0.2
    3939# co2_ice_crit=0.2
    4040
    41 # Acceptance rate of pressure surface change? Default = 0.15
     41# Acceptance rate of pressure surface change. Default = 0.15
    4242# ps_criterion = 0.15
    4343
    44 # Acceptance of change for obliquity? Default = 1.
     44# Acceptance of change for obliquity. Default = 1.
    4545# max_change_obl=1.
    4646
     
    6161# reg_thprop_dependp=.false.
    6262
    63 # Value of the geothermal flux? Default = 0.
     63# Value of the geothermal flux. Default = 0.
    6464# fluxgeo=0.
    6565
    66 # Depth at which the breccia layer begins? Default = 10 m
     66# Depth at which the breccia layer begins. Default = 10 m
    6767# depth_breccia=10.
    6868
    69 # Depth at which the bedrock layer begins? Default = 1000 m
     69# Depth at which the bedrock layer begins. Default = 1000 m
    7070# depth_bedrock=1000.
    7171
     
    7777
    7878#---------- Ice management parameters ----------#
    79 # Amount of H2O ice to initialize the huge reservoir if the variable is not present in "startfi_PEM.nc"? Default = 9200. kg.m-2 (= 10 m)
     79# Amount of H2O ice to initialize the huge reservoir if the variable is not present in "startfi_PEM.nc". Default = 9200. kg.m-2 (= 10 m)
    8080# ini_huge_h2oice=1.e4
    8181
    82 # Threshold to consider the amount of H2O ice as an infinite reservoir? Default = 460. kg.m-2 (= 0.5 m)
     82# Threshold to consider the amount of H2O ice as an infinite reservoir. Default = 460. kg.m-2 (= 0.5 m)
    8383# inf_h2oice_threshold=2.e3
    8484
     
    8686# metam_h2oice=.false.
    8787
    88 # Threshold to consider frost is becoming perennial H2O ice? Default = 460. kg.m-2 (= 0.5 m)
     88# Threshold to consider frost is becoming perennial H2O ice. Default = 460. kg.m-2 (= 0.5 m)
    8989# metam_h2oice_threshold=5.e-2
    9090
     
    9595# metam_co2ice=.false.
    9696
    97 # Threshold to consider frost is becoming perennial CO2 ice? Default = 16500. kg.m-2 (= 10 m)
     97# Threshold to consider frost is becoming perennial CO2 ice. Default = 16500. kg.m-2 (= 10 m)
    9898# metam_co2ice_threshold=16.e3
    9999
     
    104104# Do you want to run with the layering algorithm? Default = .false.
    105105# layering=.true.
     106 
     107# Value of the dust tendency. Default = 1.e-3 kg.m-2.y-1
     108# d_dust=1.e-3
     109 
     110# Do you want to impose a dust-to-ice ratio instead of a dust tendency? Default = .false.
     111# impose_dust_ratio=.true.
     112 
     113# If impose_dust_ratio=.true., value of the dust-to-ice ratio. Default = 0.01
     114# dust2ice_ratio=0.05
    106115
    107116# Some definitions for the physics, in file 'callphys.def'
  • trunk/LMDZ.COMMON/libf/evolution/layering_mod.F90

    r3809 r3821  
    1919
    2020! Physical parameters
    21 real, parameter :: d_dust            = 1.e-3 ! Tendency of dust [kg.m-2.y-1]
    22 real, parameter :: dry_lag_porosity  = 0.4   ! Porosity of dust lag
    23 real, parameter :: wet_lag_porosity  = 0.1   ! Porosity of water ice lag
    24 real, parameter :: regolith_porosity = 0.4   ! Porosity of regolith
    25 real, parameter :: breccia_porosity  = 0.1   ! Porosity of breccia
    26 real, parameter :: co2ice_porosity   = 0.    ! Porosity of CO2 ice
    27 real, parameter :: h2oice_porosity   = 0.    ! Porosity of H2O ice
    28 real, parameter :: rho_dust          = 2500. ! Density of dust [kg.m-3]
    29 real, parameter :: rho_rock          = 3200. ! Density of rock [kg.m-3]
    30 real, parameter :: h_patchy_dust     = 5.e-4 ! Height under which a dust lag is considered patchy [m]
    31 real, parameter :: h_patchy_ice      = 5.e-4 ! Height under which a H2O ice lag is considered patchy [m]
     21logical         :: impose_dust_ratio = .false. ! Impose dust-to-ice ratio instead of dust tendency (see 'dust2ice_ratio')
     22real            :: dust2ice_ratio    = 0.01    ! Dust-to-ice ratio when ice condenses (1% by default)
     23real            :: d_dust            = 1.e-3   ! Tendency of dust [kg.m-2.y-1]
     24real, parameter :: dry_lag_porosity  = 0.4     ! Porosity of dust lag
     25real, parameter :: wet_lag_porosity  = 0.1     ! Porosity of water ice lag
     26real, parameter :: regolith_porosity = 0.4     ! Porosity of regolith
     27real, parameter :: breccia_porosity  = 0.1     ! Porosity of breccia
     28real, parameter :: co2ice_porosity   = 0.      ! Porosity of CO2 ice
     29real, parameter :: h2oice_porosity   = 0.      ! Porosity of H2O ice
     30real, parameter :: rho_dust          = 2500.   ! Density of dust [kg.m-3]
     31real, parameter :: rho_rock          = 3200.   ! Density of rock [kg.m-3]
     32real, parameter :: h_patchy_dust     = 5.e-4   ! Height under which a dust lag is considered patchy [m]
     33real, parameter :: h_patchy_ice      = 5.e-4   ! Height under which a H2O ice lag is considered patchy [m]
    3234
    3335! Parameters for CO2 flux correction (inspired by Levrard et al. 2007)
     
    574576! Is the considered stratum a dust lag?
    575577if (.not. is_dust_lag(current)) return
    576 do while (is_dust_lag(current) .and. associated(current))
     578do while (is_dust_lag(current))
    577579    h_toplag = h_toplag + thickness(current)
    578     current => current%down
     580    if (associated(current%down)) then
     581        current => current%down
     582    else
     583        exit
     584    endif
    579585enddo
     586
     587if (.not. associated(current%down)) then ! Bottom of the layering -> no ice below
     588    h_toplag = 0.
     589    return
     590endif
     591
    580592! Is the stratum below the dust lag made of ice?
    581 if (current%h_h2oice > 0. .and. current%h_h2oice > current%h_co2ice) then ! There is more H2O ice than CO2 ice
     593if (current%h_h2oice > 0. .and. current%h_h2oice > current%h_co2ice) then ! Yes, there is more H2O ice than CO2 ice
    582594    if (h_toplag < h_patchy_dust) then ! But the dust lag is too thin to considered ice as subsurface ice
    583595        h_toplag = 0.
    584596        h2o_ice = current%h_h2oice
    585597    endif
    586 else if (current%h_co2ice > 0. .and. current%h_co2ice > current%h_h2oice) then ! There is more CO2 ice than H2O ice
     598else if (current%h_co2ice > 0. .and. current%h_co2ice > current%h_h2oice) then ! No, there is more CO2 ice than H2O ice
    587599    h_toplag = 0. ! Because it matters only for H2O ice
    588600    if (h_toplag < h_patchy_ice) then ! But the dust lag is too thin to considered ice as subsurface ice
     
    712724dh_h2oice = d_h2oice/rho_h2oice
    713725! To disable dust sedimenation when there is ice sublimation (because dust tendency is fixed)
    714 if (dh_co2ice > 0. .or. dh_h2oice > 0.) then
    715     dh_dust = d_dust/rho_dust
     726if (dh_co2ice >= 0. .and. dh_h2oice >= 0.) then
     727    if (impose_dust_ratio) then
     728        dh_dust = dust2ice_ratio*(dh_h2oice + dh_co2ice)
     729    else
     730        dh_dust = d_dust/rho_dust
     731    endif
    716732else
    717733    dh_dust = 0.
Note: See TracChangeset for help on using the changeset viewer.