source: trunk/LMDZ.COMMON/libf/evolution/NS_soilthprop_mars.F90 @ 3526

Last change on this file since 3526 was 3526, checked in by jbclement, 2 days ago

PEM:
Removing unused or redundant Norbert Schorghofer's subroutines (follow-up of r3493) + cleaning and some modifications of related subroutines.
JBC

File size: 2.8 KB
Line 
1subroutine soilthprop(porosity,fill,rhocobs,tiobs,layertype, &
2     &     newrhoc,newti,icefrac)
3!***********************************************************************
4! soilthprop: assign thermal properties of icy soil or dirty ice
5!
6!     porositiy = void space / total volume
7!     rhof = density of free ice in space not occupied by regolith [kg/m^3]
8!     fill = rhof/icedensity <=1 (only relevant for layertype 1)
9!     rhocobs = heat capacity per volume of dry regolith [J/m^3]
10!     tiobs = thermal inertia of dry regolith [SI-units]
11!     layertype: 1=interstitial ice, 2=pure ice or ice with dirt
12!                3=pure ice, 4=ice-cemented soil, 5=custom values
13!     icefrac: fraction of ice in icelayer (only relevant for layertype 2)
14!     output are newti and newrhoc
15!***********************************************************************
16  implicit none
17  integer, intent(IN) :: layertype
18  real(8), intent(IN) :: porosity, fill, rhocobs, tiobs
19  real(8), intent(OUT) :: newti, newrhoc
20  real(8), intent(IN) :: icefrac
21  real(8) kobs, cice, icedensity, kice
22  !parameter (cice=2000.d0, icedensity=926.d0, kice=2.4d0) ! unaffected by scaling
23  parameter (cice=1540.d0, icedensity=927.d0, kice=3.2d0) ! at 198 Kelvin
24  real(8) fA, ki0, ki, k
25  real(8), parameter :: kw=3. ! Mellon et al., JGR 102, 19357 (1997)
26
27  kobs = tiobs**2/rhocobs
28  ! k, rhoc, and ti are defined in between grid points
29  ! rhof and T are defined on grid points
30
31  newrhoc = -9999.
32  newti  = -9999.
33
34  select case (layertype)
35  case (1) ! interstitial ice
36     newrhoc = rhocobs + porosity*fill*icedensity*cice
37     if (fill>0.) then
38        !--linear addition (option A)
39        k = porosity*fill*kice + kobs
40        !--Mellon et al. 1997 (option B)
41        ki0 = porosity/(1/kobs-(1-porosity)/kw)
42        fA = sqrt(fill)
43        ki = (1-fA)*ki0 + fA*kice
44        !k = kw*ki/((1-porosity)*ki+porosity*kw)
45     else
46        k = kobs
47     endif
48     newti = sqrt(newrhoc*k)
49     
50  case (2)  ! massive ice (pure or dirty ice)
51     newrhoc = rhocobs*(1.-icefrac)/(1.-porosity) + icefrac*icedensity*cice
52     k = icefrac*kice + (1.-icefrac)*kw
53     newti = sqrt(newrhoc*k)
54 
55  case (3)  ! all ice, special case of layertype 2, which doesn't use porosity
56     newrhoc = icedensity*cice
57     k = kice
58     newti = sqrt(newrhoc*k)
59 
60  case (4)  ! pores completely filled with ice, special case of layertype 1
61     newrhoc = rhocobs + porosity*icedensity*cice
62     k = porosity*kice + kobs ! option A, end-member case of type 1, option A
63     !k = kw*kice/((1-porosity)*kice+porosity*kw) ! option B, harmonic average
64     newti = sqrt(newrhoc*k)
65
66  case (5)  ! custom values
67     ! values from Mellon et al. (2004) for ice-cemented soil
68     newrhoc = 2018.*1040.
69     k = 2.5
70     newti = sqrt(newrhoc*k)
71
72  case default
73     error stop 'invalid layer type'
74     
75  end select
76 
77end subroutine soilthprop
Note: See TracBrowser for help on using the repository browser.