source: issm/trunk/src/m/mech/robintemperature.py@ 24313

Last change on this file since 24313 was 24313, checked in by Mathieu Morlighem, 5 years ago

merged trunk-jpl and trunk for revision 24310

File size: 1.7 KB
Line 
1import numpy as np
2from scipy.special import erf
3
4
5def robintemperature(heatflux, accumrate, thickness, surftemp, z):
6 '''
7 Compute vertical temperature profile of an ice sheet (Robin, 1955)
8
9 This routine computes the vertical temperature profile of an ice sheet
10 according to the solution of Robin (1955), neglecting friction and
11 horizontal advection. The solution is thus most appropriate at an ice
12 divide.
13
14 The coordinate system for the solution runs from z = 0 at the base
15 to z = H at the surface of the ice.
16
17 Parameters (SI units):
18 - heatflux Geothermal heat flux (W m^-2)
19 - accumrate Surface accumulation rate (m s^-1 ice equivalent)
20 - thickness Ice thickness (m)
21 - surftemp Surface temperature (K)
22 - z Vertical position at which to calculate temperature
23 (z can be a scalar or a vector)
24
25 Returns a vector the same length as z containing the temperature in K
26
27 Usage:
28 tprofile = robintemperature(heatflux, accumrate, thickness, surftemp, z)
29 '''
30
31 # some constants (from Holland and Jenkins, 1999)
32 alphaT = 1.14e-6 # thermal diffusivity (m^2 s^-1)
33 c = 2009. # specific heat capacity (J kg^-1 K^-1)
34 rho = 917. # ice density (kg m^-3)
35
36 #create vertical coordinate variable
37 zstar = np.sqrt(2. * alphaT * thickness / accumrate)
38
39 tprofile = surftemp + np.sqrt(2. * thickness * np.pi / accumrate / alphaT) * (-heatflux) / 2. / rho / c * (erf(z / zstar) - erf(thickness / zstar))
40
41 return tprofile
42 # difference between surface and base temperature for check (Cuffey2010 p412):
43 # print tprofile-surftemp
Note: See TracBrowser for help on using the repository browser.