Ice Sheet System Model  4.18
Code documentation
Functions
Paterson.cpp File Reference
#include <math.h>
#include "../Numerics/types.h"

Go to the source code of this file.

Functions

IssmDouble Paterson (IssmDouble temperature)
 

Function Documentation

◆ Paterson()

IssmDouble Paterson ( IssmDouble  temperature)

Definition at line 11 of file Paterson.cpp.

11  {
12 
13  IssmDouble B,T;
14 
15  /*Switch to celsius from Kelvin: */
16  T=temperature-273.15;
17 
18  if(T<=-45.0){
19  B=1.e+8*(-0.000292866376675*pow(T+50.,3)+ 0.011672640664130*pow(T+50.,2) -0.325004442485481*(T+50.)+ 6.524779401948101);
20  }
21  else if((T>=-45.0) && (T<=-40.0)){
22  B=1.e+8*(-0.000292866376675*pow(T+45.,3)+ 0.007279645014004*pow(T+45.,2) -0.230243014094813*(T+45.)+ 5.154964909039554);
23  }
24  else if((T>=-40.0) && (T<=-35.0)){
25  B=1.e+8*(0.000072737147457*pow(T+40.,3)+ 0.002886649363879*pow(T+40.,2) -0.179411542205399*(T+40.)+ 4.149132666831214);
26  }
27  else if((T>=-35.0) && (T<=-30.0)){
28  B=1.e+8*(-0.000086144770023*pow(T+35.,3)+ 0.003977706575736*pow(T+35.,2) -0.145089762507325*(T+35.)+ 3.333333333333331);
29  }
30  else if((T>=-30.0) && (T<=-25.0)){
31  B=1.e+8*(-0.000043984685769*pow(T+30.,3)+ 0.002685535025386*pow(T+30.,2) -0.111773554501713*(T+30.)+ 2.696559088937191);
32  }
33  else if((T>=-25.0) && (T<=-20.0)){
34  B=1.e+8*(-0.000029799523463*pow(T+25.,3)+ 0.002025764738854*pow(T+25.,2) -0.088217055680511*(T+25.)+ 2.199331606342181);
35  }
36  else if((T>=-20.0) && (T<=-15.0)){
37  B=1.e+8*(0.000136920904777*pow(T+20.,3)+ 0.001578771886910*pow(T+20.,2) -0.070194372551690*(T+20.)+ 1.805165505978111);
38  }
39  else if((T>=-15.0) && (T<=-10.0)){
40  B=1.e+8*(-0.000899763781026*pow(T+15.,3)+ 0.003632585458564*pow(T+15.,2) -0.044137585824322*(T+15.)+ 1.510778053489523);
41  }
42  else if((T>=-10.0) && (T<=-5.0)){
43  B=1.e+8*(0.001676964325070*pow(T+10.,3)- 0.009863871256831*pow(T+10.,2) -0.075294014815659*(T+10.)+ 1.268434288203714);
44  }
45  else if((T>=-5.0) && (T<=-2.0)){
46  B=1.e+8*(-0.003748937622487*pow(T+5.,3)+0.015290593619213*pow(T+5.,2) -0.048160403003748*(T+5.)+ 0.854987973338348);
47  }
48  else{
49  B=1.e+8*(-0.003748937622488*pow(T+2.,3)-0.018449844983174*pow(T+2.,2) -0.057638157095631*(T+2.)+ 0.746900791092860);
50  }
51 
52  /*B cannot be negative!*/
53  if(B<0) B=1.e+6;
54 
55  return B;
56 }
IssmDouble
double IssmDouble
Definition: types.h:37