Changeset 4065 for trunk/LMDZ.COMMON/libf/evolution/subsurface_ice.F90
- Timestamp:
- Feb 12, 2026, 9:09:12 AM (2 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/evolution/subsurface_ice.F90
r3991 r4065 17 17 !----------------------------------------------------------------------- 18 18 19 ! DEPENDENCIES 20 ! ------------ 21 use numerics, only: dp, di 22 19 23 ! DECLARATION 20 24 ! ----------- 21 25 implicit none 22 26 23 ! MODULEPARAMETERS24 ! ---------- -------27 ! PARAMETERS 28 ! ---------- 25 29 real(8), parameter :: dt = 0.02 ! in units of Mars solar days 26 30 !real(8), parameter :: Fgeotherm = 0. … … 47 51 ! orbital elements remain constant 48 52 !*********************************************************************** 49 use constants_marspem_mod, only: sec_per_sol50 use phys_constants,only: pi53 use orbit, only: sol_len_s 54 use maths, only: pi 51 55 ! DECLARATION 52 56 ! ----------- … … 139 143 ! print *,' latitude (deg)',latitude(k),' rho*c (J/m^3/K)',rhoc(k),' thIn=',thIn(k) 140 144 ! print *,' total pressure=',p0(k),'partial pressure=',pfrost(k) 141 delta = thIn(k)/rhoc(k)*sqrt(s ec_per_sol/pi)145 delta = thIn(k)/rhoc(k)*sqrt(sol_len_s/pi) 142 146 ! print *,' skin depths (m)',delta,delta*sqrt(solsperyear) 143 147 call soilthprop(porosity,1.d0,rhoc(k),thIn(k),1,newrhoc,newti,icefrac) … … 222 226 ! output are newti and newrhoc 223 227 !*********************************************************************** 224 ! DECLARATION 228 229 ! DEPENDENCIES 230 ! ------------ 231 use stoppage, only: stop_clean 232 233 ! DECLARATION 225 234 ! ----------- 226 235 implicit none … … 281 290 282 291 case default 283 error stop 'invalid layer type'292 call stop_clean(__FILE__,__LINE__,'invalid layer type',1) 284 293 285 294 end select … … 338 347 ! latitude [degree] 339 348 !************************************************************************* 340 use ice_table, only: rho_ice349 !use ice_table, only: rho_ice 341 350 !use omp_lib 342 351 ! DECLARATION … … 457 466 ! Tb>0 initializes temperatures with Tb 458 467 !*********************************************************************** 459 use constants_marspem_mod, only: sols_per_my, sec_per_sol468 use orbit, only: yr_len_sol, sol_len_s 460 469 ! DECLARATION 461 470 ! ----------- … … 485 494 real(8) rhosatav0, rhosatav(nz), rlow 486 495 487 tmax = EQUILTIME* sols_per_my496 tmax = EQUILTIME*yr_len_sol 488 497 nsteps = int(tmax/dt) ! calculate total number of timesteps 489 498 … … 523 532 do n=0,nsteps-1 524 533 time = (n+1)*dt ! time at n+1 525 ! tdays = time*(s ec_per_sol/earthDay) ! parenthesis may improve roundoff534 ! tdays = time*(sol_len_s/earthDay) ! parenthesis may improve roundoff 526 535 ! call generalorbit(tdays,a,ecc,omega,eps,marsLs,marsDec,marsR) 527 536 ! HA = 2.*pi*mod(time,1.d0) ! hour angle … … 533 542 Told(1:nz) = T(1:nz) 534 543 if (m<=0. .or. Tsurf>Tco2frost) then 535 ! call conductionQ(nz,z,dt*s ec_per_sol,Qn,Qnp1,T,ti,rhocv,emiss, &544 ! call conductionQ(nz,z,dt*sol_len_s,Qn,Qnp1,T,ti,rhocv,emiss, & 536 545 ! & Tsurf,Fgeotherm,Fsurf) 537 546 endif 538 547 if (Tsurf<Tco2frost .or. m>0.) then ! CO2 condensation 539 548 T(1:nz) = Told(1:nz) 540 !call conductionT(nz,z,dt*s ec_per_sol,T,Tsurfold,Tco2frost,ti, &549 !call conductionT(nz,z,dt*sol_len_s,T,Tsurfold,Tco2frost,ti, & 541 550 !& rhocv,Fgeotherm,Fsurf) 542 551 Tsurf = Tco2frost 543 552 ! dE = (- Qn - Qnp1 + Fsurfold + Fsurf + & 544 553 ! & emiss*sigSB*(Tsurfold**4+Tsurf**4)/2. 545 m = m + dt*s ec_per_sol*dE/Lco2frost554 m = m + dt*sol_len_s*dE/Lco2frost 546 555 endif 547 556 if (Tsurf>Tco2frost .or. m<=0.) then … … 554 563 !Qn=Qnp1 555 564 556 if (time>=tmax- sols_per_my) then565 if (time>=tmax-yr_len_sol) then 557 566 Tmean1 = Tmean1 + Tsurf 558 567 Tmean3 = Tmean3 + T(nz) … … 715 724 ! B = Diff*bigstep/(porosity*icedensity) [SI units] 716 725 !*********************************************************************** 717 use math_toolkit, only: deriv2_simple, deriv1_onesided, deriv1, colint 718 use ice_table, only: constriction 726 use maths, only: deriv2_simple, deriv1_onesided, deriv1, colint 719 727 ! DECLARATION 720 728 ! ----------- … … 848 856 ! a crucial subroutine 849 857 !*********************************************************** 850 use math _toolkit,only: colint851 use ice_table,only: rho_ice858 use maths, only: colint 859 !use ice_table, only: rho_ice 852 860 ! DECLARATION 853 861 ! ----------- … … 933 941 end subroutine icechanges 934 942 943 !======================================================================= 944 FUNCTION constriction(porefill) RESULT(eta) 945 !----------------------------------------------------------------------- 946 ! NAME 947 ! constriction 948 ! 949 ! DESCRIPTION 950 ! Compute the constriction of vapor flux by pore ice. 951 ! 952 ! AUTHORS & DATE 953 ! L. Lange 954 ! JB Clement, 2023-2025 955 ! 956 ! NOTES 957 ! 958 !----------------------------------------------------------------------- 959 960 ! DECLARATION 961 ! ----------- 962 implicit none 963 964 ! ARGUMENTS 965 ! --------- 966 real, intent(in) :: porefill ! pore filling fraction 967 968 ! LOCAL VARIABLES 969 ! --------------- 970 real :: eta ! constriction 971 972 ! CODE 973 ! ---- 974 if (porefill <= 0.) then 975 eta = 1. 976 else if (0 < porefill .and. porefill < 1.) then 977 eta = (1-porefill)**2 ! Hudson et al., JGR, 2009 978 else 979 eta = 0. 980 endif 981 982 END FUNCTION constriction 983 !======================================================================= 984 935 985 END MODULE subsurface_ice
Note: See TracChangeset
for help on using the changeset viewer.
