source: issm/trunk/src/m/mech/robintemperature.m@ 17806

Last change on this file since 17806 was 17806, checked in by Mathieu Morlighem, 11 years ago

merged trunk-jpl and trunk for revision 17804

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