Changeset 3202 for trunk/LMDZ.COMMON/libf/evolution
- Timestamp:
- Feb 6, 2024, 3:39:31 PM (11 months ago)
- Location:
- trunk/LMDZ.COMMON/libf/evolution
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/evolution/changelog.txt
r3199 r3202 196 196 Fixing bug when rewritting the startfi.nc for the PCM: fluxgeo, read in the run_PEM.def, was not written in the startfi. 197 197 198 == 09/01/202 3== JBC198 == 09/01/2024 == JBC 199 199 - Correction of script "launch_orb_1Dchained.sh" which read orbital parameters missing one interval of years in two. 200 200 - Addition of the Martian date in "info_PEM.txt" for post-processing. 201 201 202 == 17/01/202 3== LL202 == 17/01/2024 == LL 203 203 Cleaning of the several subroutine regarding soil temperatures: they are now 204 204 gathered in an unique Tsoil module. 205 205 (cosmetic commit) 206 206 207 == 25/01/202 3== JBC207 == 25/01/2024 == JBC 208 208 - Addition of a script "inipem_orbit.sh" in the deftank to modify the orbital parameters of a file "startfi.nc" according to the date set in the file "run_PEM.def" and data found in "obl_ecc_lsp.asc"; 209 209 - Flow of glaciers is now computed only when there are slopes; … … 211 211 - Some small cleanings. 212 212 213 == 25/01/202 3== JBC213 == 25/01/2024 == JBC 214 214 Update of "launch_pem.sh" related to r3171 to move the "diagsoilpem.nc" in the intended output folder. 215 215 216 == 29/01/202 3== LL216 == 29/01/2024 == LL 217 217 Fixing bug when recomputing Tsoil for the startfi. It is now done with: Tsoil averaged + Delta T where delta T is tthe difference between the instantaneous soil temperature and the yearly averaged soil temperature in the original startfi. 218 218 219 == 30/01/202 3== LL219 == 30/01/2024 == LL 220 220 Fixing bug in writediagpem: soil layers written in the diagpem where those of the PCM and not the PEM. 221 221 222 == 02/02/202 3== JBC222 == 02/02/2024 == JBC 223 223 Small correction following r3189 in the case where "soilpem = .false.". 224 225 == 06/02/2024 == LL 226 Update in the dependance of soil properties with the pressure: the program now u 227 sed a combination of work by Presley & Christensen 1997 & Piqueux & Christensen 228 2009. In pratice, values of the TI are bounded between 50 and 360 USI. 229 The conductivity of the Breccia layer does not change anymore with the pressure,as it should be neglectable. 230 Some cleaning in the routine update_soilproperties 231 -
trunk/LMDZ.COMMON/libf/evolution/orbit_param_criterion_mod.F90
r3149 r3202 77 77 do ilask = 1,size(yearlask,1) 78 78 read(73,*) yearlask(ilask), obllask(ilask), ecclask(ilask), lsplask(ilask) 79 yearlask(ilask) = yearlask(ilask)*10 00./convert_years ! Conversion from Laskar's kilo Earth years to PEM Martian years79 yearlask(ilask) = yearlask(ilask)*10./convert_years ! Conversion from Laskar's kilo Earth years to PEM Martian years 80 80 if (yearlask(ilask) > Year) last_ilask = ilask + 1 81 81 enddo -
trunk/LMDZ.COMMON/libf/evolution/soil_thermalproperties_mod.F90
r3149 r3202 36 36 ! Input/Output 37 37 ! ------------ 38 LOGICAL,INTENT(IN) :: ispureice 39 REAL,INTENT(IN) :: pore_filling 40 REAL,INTENT(IN) :: surf_thermalinertia 41 REAL,INTENT(OUT) :: ice_thermalinertia 38 LOGICAL,INTENT(IN) :: ispureice ! Boolean to check if ice is massive or just pore filling 39 REAL,INTENT(IN) :: pore_filling ! ice pore filling in each layer (1) 40 REAL,INTENT(IN) :: surf_thermalinertia ! surface thermal inertia (J/m^2/K/s^1/2) 41 REAL,INTENT(OUT) :: ice_thermalinertia ! Thermal inertia of ice when present in the pore (J/m^2/K/s^1/2) 42 42 43 43 ! Local Variables … … 77 77 ! Constants: 78 78 79 REAL :: inertie_thresold = 800. ! Above this thermal inertia, it's ice [SI] 80 REAL :: ice_inertia ! Inertia of water ice [SI] 81 REAL :: P610 = 610.0 ! current average pressure on Mars [Pa] 79 REAL :: 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] 80 REAL :: reg_inertie_minvalue = 50. ! Minimum value of the Thermal Inertia at low pressure (Piqueux & Christensen 2009) [J/m^2/K/s^1/2] 81 REAL :: reg_inertie_maxvalue = 370. ! Maximum value of the Thermal Inertia at low pressure (Piqueux & Christensen 2009) [J/m^2/K/s^1/2] 82 REAL :: ice_inertia ! Inertia of water ice [SI] 83 REAL :: P610 = 610.0 ! current average pressure on Mars [Pa] 84 REAL :: C = 0.0015 ! Constant to derive TI as a function of P, from Presley and Christensen 1997 [uniteless] 85 REAL :: K = 8.1*1e4 ! Constant to derive TI as a function of P, from Presley and Christensen 1997 [tor, or 133.3Pa] 86 REAL :: Pa2Tor = 1./133.3 ! Conversion from Pa to tor [Pa/tor] 87 82 88 83 89 ! Local variables: 84 90 85 INTEGER :: ig,islope,iloop,iref,k,iend 86 REAL :: regolith_inertia(ngrid,nslope) ! TI of the regolith 87 REAL :: delta 88 REAL :: TI_breccia_new 89 REAL :: ice_bottom_depth 91 INTEGER :: ig,islope,isoil,iref,iend ! Loop variables 92 REAL :: regolith_inertia(ngrid,nslope) ! Thermal inertia of the regolith (first layer in the GCM) [J/m^2/K/s^1/2] 93 REAL :: delta ! Difference of depth to compute the thermal inertia in a mixed layer [m] 94 REAL :: ice_bottom_depth ! Bottom depth of the subsurface ice [m] 95 REAL :: d_part ! Regolith particle size [micrometer] 96 90 97 91 98 write(*,*) "Update soil propreties" … … 99 106 endif 100 107 if(reg_thprop_dependp) then 101 if(TI_PEM(ig,1,islope).lt.inertie_thresold) then 102 regolith_inertia(ig,islope) = regolith_inertia(ig,islope)*(p_avg_new/P610)**0.3 108 if(TI_PEM(ig,1,islope).lt.reg_inertie_thresold) then 109 d_part = (regolith_inertia(ig,islope)**2/(volcapa*C*(P610*Pa2Tor)**(0.6)))**(-1./(0.11*log10(P610*Pa2Tor/K))) ! compute particle size, in micrometer 110 regolith_inertia(ig,islope) = sqrt(volcapa*C*(p_avg_new*Pa2Tor)**(0.6)*d_part**(-0.11*log10(p_avg_new*Pa2Tor/K))) 111 if(regolith_inertia(ig,islope).gt.reg_inertie_maxvalue) regolith_inertia(ig,islope) = reg_inertie_maxvalue 112 if(regolith_inertia(ig,islope).lt.reg_inertie_minvalue) regolith_inertia(ig,islope) = reg_inertie_minvalue 103 113 endif 104 TI_breccia_new = TI_breccia*(p_avg_new/P610)**0.3105 else106 TI_breccia_new = TI_breccia107 114 endif 108 115 enddo 109 116 enddo 110 117 111 112 118 ! 2. Build new Thermal Inertia 113 119 do islope=1,nslope 114 120 do ig = 1,ngrid 115 do i loop= 1,index_breccia116 TI_PEM(ig,i loop,islope) = regolith_inertia(ig,islope)121 do isoil = 1,index_breccia 122 TI_PEM(ig,isoil,islope) = regolith_inertia(ig,islope) 117 123 enddo 118 if(regolith_inertia(ig,islope).lt.TI_breccia _new) then124 if(regolith_inertia(ig,islope).lt.TI_breccia) then 119 125 !!! transition 120 126 delta = depth_breccia 121 127 TI_PEM(ig,index_breccia+1,islope) = sqrt((layer_PEM(index_breccia+1)-layer_PEM(index_breccia))/ & 122 128 (((delta-layer_PEM(index_breccia))/(TI_PEM(ig,index_breccia,islope)**2))+ & 123 ((layer_PEM(index_breccia+1)-delta)/(TI_breccia _new**2))))124 do i loop=index_breccia+2,index_bedrock125 TI_PEM(ig,i loop,islope) = TI_breccia_new129 ((layer_PEM(index_breccia+1)-delta)/(TI_breccia**2)))) 130 do isoil=index_breccia+2,index_bedrock 131 TI_PEM(ig,isoil,islope) = TI_breccia 126 132 enddo 127 133 else ! we keep the high ti values 128 do i loop=index_breccia+1,index_bedrock129 TI_PEM(ig,i loop,islope) = TI_PEM(ig,index_breccia,islope)134 do isoil=index_breccia+1,index_bedrock 135 TI_PEM(ig,isoil,islope) = TI_PEM(ig,index_breccia,islope) 130 136 enddo 131 137 endif ! TI PEM and breccia comparison … … 135 141 (((delta-layer_PEM(index_bedrock))/(TI_PEM(ig,index_bedrock,islope)**2))+ & 136 142 ((layer_PEM(index_bedrock+1)-delta)/(TI_bedrock**2)))) 137 do i loop=index_bedrock+2,nsoil_PEM138 TI_PEM(ig,i loop,islope) = TI_bedrock143 do isoil=index_bedrock+2,nsoil_PEM 144 TI_PEM(ig,isoil,islope) = TI_bedrock 139 145 enddo 140 146 enddo ! ig … … 148 154 if (ice_depth(ig,islope).lt. 1e-10) then 149 155 call ice_thermal_properties(.true.,1.,0.,ice_inertia) 150 do i loop= 1,nsoil_PEM151 TI_PEM(ig,i loop,islope)=ice_inertia156 do isoil = 1,nsoil_PEM 157 TI_PEM(ig,isoil,islope)=ice_inertia 152 158 enddo 153 159 else … … 156 162 ! 3.1.1 find the index of the mixed layer 157 163 iref=0 ! initialize iref 158 do k=1,nsoil_PEM ! loop on layers to find the beginning of the ice table159 if (ice_depth(ig,islope).ge.layer_PEM( k)) then160 iref= k! pure regolith layer up to here164 do isoil=1,nsoil_PEM ! loop on layers to find the beginning of the ice table 165 if (ice_depth(ig,islope).ge.layer_PEM(isoil)) then 166 iref=isoil ! pure regolith layer up to here 161 167 else 162 168 ! correct iref was obtained in previous cycle … … 167 173 iend=0 ! initialize iend 168 174 ice_bottom_depth = ice_depth(ig,islope)+ice_thickness(ig,islope) 169 do k=1,nsoil_PEM ! loop on layers to find the end of the ice table170 if (ice_bottom_depth.ge.layer_PEM( k)) then171 iend= k! pure regolith layer up to here175 do isoil=1,nsoil_PEM ! loop on layers to find the end of the ice table 176 if (ice_bottom_depth.ge.layer_PEM(isoil)) then 177 iend=isoil ! pure regolith layer up to here 172 178 else 173 179 ! correct iref was obtained in previous cycle … … 176 182 enddo 177 183 ! 3.2 Build the new ti 178 do i loop=1,iref179 TI_PEM(ig,i loop,islope) = TI_PEM(ig,1,islope)184 do isoil=1,iref 185 TI_PEM(ig,isoil,islope) = TI_PEM(ig,1,islope) 180 186 enddo 181 187 if (iref.lt.nsoil_PEM) then … … 209 215 endif ! iref.eq.iend 210 216 ! 3.3 Build the new ti 211 do i loop=iref+2,iend212 TI_PEM(ig,i loop,islope)=ice_inertia217 do isoil=iref+2,iend 218 TI_PEM(ig,isoil,islope)=ice_inertia 213 219 enddo 214 220
Note: See TracChangeset
for help on using the changeset viewer.