- Timestamp:
- Dec 16, 2025, 4:39:24 PM (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/evolution/soil_thermal_inertia.F90
r3989 r3991 1 1 MODULE soil_thermal_inertia 2 2 !----------------------------------------------------------------------- 3 ! NAME 4 ! soil_thermal_inertia 5 ! 6 ! DESCRIPTION 7 ! Compute and update soil thermal properties based on ice content, 8 ! pressure, and cementation state. 9 ! 10 ! AUTHORS & DATE 11 ! L. Lange, 2023 12 ! JB Clement, 2025 13 ! 14 ! NOTES 15 ! 16 !----------------------------------------------------------------------- 17 18 ! DECLARATION 19 ! ----------- 3 20 implicit none 4 21 5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6 !!! 7 !!! Purpose: Compute the soil thermal properties 8 !!! Author: LL, 04/2023 9 !!! 10 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 11 12 ! Constants: 22 ! MODULE PARAMETERS 23 ! ----------------- 13 24 real, parameter :: reg_inertie_thresold = 370. ! Above this thermal inertia, the regolith has too much cementation to be dependant on the pressure [J/m^2/K/s^1/2] 14 25 real, parameter :: reg_inertie_minvalue = 50. ! Minimum value of the Thermal Inertia at low pressure (Piqueux & Christensen 2009) [J/m^2/K/s^1/2] … … 19 30 real, parameter :: Pa2Torr = 1./133.3 ! Conversion from Pa to tor [Pa/Torr] 20 31 21 !=======================================================================22 32 contains 23 !======================================================================= 24 33 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 34 35 !======================================================================= 25 36 SUBROUTINE get_ice_TI(ispureice,pore_filling,surf_thermalinertia,ice_thermalinertia) 26 !======================================================================= 27 ! subject: Compute ice thermal properties 28 ! -------- 29 ! 30 ! author: LL, 04/2023 31 ! ------- 32 ! 33 !======================================================================= 34 37 !----------------------------------------------------------------------- 38 ! NAME 39 ! get_ice_TI 40 ! 41 ! DESCRIPTION 42 ! Compute ice thermal properties based on pore filling and purity. 43 ! 44 ! AUTHORS & DATE 45 ! L. Lange, 2023 46 ! JB Clement, 2025 47 ! 48 ! NOTES 49 ! Uses Siegler et al. (2012) formula for pore-filling ice; 50 ! uses Mellon et al. (2004) value for pure water ice. 51 !----------------------------------------------------------------------- 52 53 ! DEPENDENCIES 54 ! ------------ 35 55 use constants_marspem_mod, only: porosity 36 56 57 ! DECLARATION 58 ! ----------- 37 59 implicit none 38 60 39 !----------------------------------------------------------------------- 40 !======================================================================= 41 ! Declarations : 42 !======================================================================= 43 ! 44 ! Input/Output 45 ! ------------ 46 logical, intent(in) :: ispureice ! Boolean to check if ice is massive or just pore filling 47 real, intent(in) :: pore_filling ! ice pore filling in each layer (1) 48 real, intent(in) :: surf_thermalinertia ! surface thermal inertia (J/m^2/K/s^1/2) 49 real, intent(out) :: ice_thermalinertia ! Thermal inertia of ice when present in the pore (J/m^2/K/s^1/2) 50 51 ! Local Variables 52 ! -------------- 53 REAL :: inertie_purewaterice = 2100 ! 2050 is better according to my computations with the formula from Siegler et al., 2012, but let's follow Mellon et al. (2004) 54 !======================================================================= 55 ! Beginning of the code 56 !======================================================================= 57 61 ! ARGUMENTS 62 ! --------- 63 logical, intent(in) :: ispureice ! Boolean to check if ice is massive or just pore filling 64 real, intent(in) :: pore_filling ! ice pore filling in each layer (1) 65 real, intent(in) :: surf_thermalinertia ! surface thermal inertia (J/m^2/K/s^1/2) 66 real, intent(out) :: ice_thermalinertia ! Thermal inertia of ice when present in the pore (J/m^2/K/s^1/2) 67 68 ! LOCAL VARIABLES 69 ! --------------- 70 real :: inertie_purewaterice = 2100 ! 2050 is better according to my computations with the formula from Siegler et al., 2012, but let's follow Mellon et al. (2004) 71 72 ! CODE 73 ! ---- 58 74 if (ispureice) then 59 75 ice_thermalinertia = inertie_purewaterice … … 65 81 !======================================================================= 66 82 83 !======================================================================= 67 84 SUBROUTINE update_soil_TI(ngrid,nslope,nsoil,tendencies_waterice,waterice,p_avg_new,icetable_depth,icetable_thickness,ice_porefilling,icetable_equilibrium,icetable_dynamic,TI_PEM) 68 85 !----------------------------------------------------------------------- 86 ! NAME 87 ! update_soil_TI 88 ! 89 ! DESCRIPTION 90 ! Update soil thermal inertia based on ice table, regolith properties, 91 ! and pressure-dependent cementation. 92 ! 93 ! AUTHORS & DATE 94 ! L. Lange, 2023 95 ! JB Clement, 2025 96 ! 97 ! NOTES 98 ! 99 !----------------------------------------------------------------------- 100 101 ! DEPENDENCIES 102 ! ------------ 69 103 use comsoil_h, only: volcapa 70 104 use soil, only: layer_PEM, inertiedat_PEM, depth_breccia, depth_bedrock, index_breccia, index_bedrock, reg_thprop_dependp 71 105 use constants_marspem_mod, only: TI_breccia, TI_bedrock, TI_regolith_avg 72 106 107 ! DECLARATION 108 ! ----------- 73 109 implicit none 74 110 75 ! Input: 76 integer, intent(in) :: ngrid, nslope, nsoil ! Shape of the arrays: physical grid, number of sub-grid slopes, number of layer in the soil 77 real, intent(in) :: p_avg_new ! Global average surface pressure [Pa] 78 real, dimension(ngrid,nslope), intent(in) :: tendencies_waterice ! Tendencies on the water ice [kg/m^2/year] 79 real, dimension(ngrid,nslope), intent(in) :: waterice ! Surface Water ice [kg/m^2] 80 real, dimension(ngrid,nslope), intent(in) :: icetable_depth ! Ice table depth [m] 81 real, dimension(ngrid,nslope), intent(in) :: icetable_thickness ! Ice table thickness [m] 82 real, dimension(ngrid,nsoil,nslope), intent(in) :: ice_porefilling ! Ice porefilling [m^3/m^3] 83 logical, intent(in) :: icetable_equilibrium, icetable_dynamic ! Computing method for ice table 84 85 ! Outputs: 86 real, dimension(ngrid,nsoil,nslope), intent(inout) :: TI_PEM ! Soil Thermal Inertia [J/m^2/K/s^1/2] 87 88 ! Local variables: 89 integer :: ig, islope, isoil, iref, iend ! Loop variables 90 real, dimension(ngrid,nslope) :: regolith_inertia ! Thermal inertia of the regolith (first layer in the GCM) [J/m^2/K/s^1/2] 91 real :: delta ! Difference of depth to compute the thermal inertia in a mixed layer [m] 92 real :: ice_bottom_depth ! Bottom depth of the subsurface ice [m] 93 real :: d_part ! Regolith particle size [micrometer] 94 real :: ice_inertia ! Inertia of water ice [SI] 95 111 ! ARGUMENTS 112 ! --------- 113 integer, intent(in) :: ngrid, nslope, nsoil ! Shape of the arrays: physical grid, number of sub-grid slopes, number of layer in the soil 114 real, intent(in) :: p_avg_new ! Global average surface pressure [Pa] 115 real, dimension(ngrid,nslope), intent(in) :: tendencies_waterice ! Tendencies on the water ice [kg/m^2/year] 116 real, dimension(ngrid,nslope), intent(in) :: waterice ! Surface Water ice [kg/m^2] 117 real, dimension(ngrid,nslope), intent(in) :: icetable_depth ! Ice table depth [m] 118 real, dimension(ngrid,nslope), intent(in) :: icetable_thickness ! Ice table thickness [m] 119 real, dimension(ngrid,nsoil,nslope), intent(in) :: ice_porefilling ! Ice porefilling [m^3/m^3] 120 logical, intent(in) :: icetable_equilibrium, icetable_dynamic ! Computing method for ice table 121 real, dimension(ngrid,nsoil,nslope), intent(inout) :: TI_PEM ! Soil Thermal Inertia [J/m^2/K/s^1/2] 122 123 ! LOCAL VARIABLES 124 ! --------------- 125 integer :: ig, islope, isoil, iref, iend ! Loop variables 126 real, dimension(ngrid,nslope) :: regolith_inertia ! Thermal inertia of the regolith (first layer in the GCM) [J/m^2/K/s^1/2] 127 real :: delta ! Difference of depth to compute the thermal inertia in a mixed layer [m] 128 real :: ice_bottom_depth ! Bottom depth of the subsurface ice [m] 129 real :: d_part ! Regolith particle size [micrometer] 130 real :: ice_inertia ! Inertia of water ice [SI] 131 132 ! CODE 133 ! ---- 96 134 write(*,*) "> Updating soil properties" 97 135 … … 222 260 223 261 END SUBROUTINE update_soil_TI 262 !======================================================================= 224 263 225 264 END MODULE soil_thermal_inertia
Note: See TracChangeset
for help on using the changeset viewer.
