source:
issm/oecreview/Archive/19101-20495/ISSM-20091-20092.diff
Last change on this file was 20498, checked in by , 9 years ago | |
---|---|
File size: 3.1 KB |
-
../trunk-jpl/src/c/shared/Elements/LliboutryDuval.cpp
Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
8 8 9 9 /* get ice stiffness B from enthalpy, pressure and flow law exponent*/ 10 10 IssmDouble LliboutryDuval(IssmDouble enthalpy, IssmDouble pressure, IssmDouble n, IssmDouble betaCC, IssmDouble referencetemperature, IssmDouble heatcapacity, IssmDouble latentheat){ 11 /*Use parameterization for the rheology: Grewe/Blatter 2009, Aschwanden 2012 11 /*Use Lliboutry & Duval's 1985 parameterization for the rheology: 12 * see also: Grewe/Blatter 2009, Aschwanden et al. 2012 13 * 14 * ISSM uses enthalpy/temperature values that are not corrected for pressure. 12 15 * 13 16 * A(H,p) = A0 exp(-Q/RT(H,p)), if H < H_s(p) 14 17 * = A0 exp(-Q/RTpmp) (1+181.25w(H,p)), if H_s(p) \le H < H_l(p) … … 33 36 * = 8.314 34 37 * 35 38 * Convert A to B : B = A^(-1/n) */ 36 37 39 /*check feasibility*/ 38 _assert_(pressure>=0); 39 40 41 42 43 40 _assert_(pressure+1.e-4>=0); // deal with pressure instability at ice surface 41 _assert_(n>0); 42 _assert_(betaCC>=0); 43 _assert_(referencetemperature>=0); 44 _assert_(heatcapacity>0); 45 _assert_(latentheat>0); 44 46 45 46 47 /*Some physical constants*/ 48 IssmDouble R=8.314; 47 49 48 49 50 /*Intermediaries*/ 51 IssmDouble A,B,Tstar,Tpmp,H_sp,waterfraction; 50 52 51 Tpmp=273.15-betaCC*pressure; 52 H_sp=heatcapacity*(Tpmp - referencetemperature); 53 if (enthalpy < H_sp){ 54 Tstar = referencetemperature + enthalpy/heatcapacity - betaCC*pressure; 55 waterfraction = 0.; 56 } 57 else{ 58 Tstar=Tpmp; 59 waterfraction=(enthalpy - H_sp)/latentheat; 60 if (waterfraction > 0.01) 61 waterfraction = 0.01; 62 } 53 Tpmp=273.15-betaCC*pressure; //pressure melting point temperature 54 H_sp=heatcapacity*(Tpmp-referencetemperature); //pressure melting point enthalpy 55 if (enthalpy<H_sp){ //compute homologous temperature and water fraction 56 Tstar=referencetemperature+enthalpy/heatcapacity+betaCC*pressure; 57 waterfraction=0.; 58 } 59 else{ 60 Tstar=273.15; 61 waterfraction=(enthalpy-H_sp)/latentheat; 62 if (waterfraction>0.01) waterfraction=0.01; // limit softness of ice 63 } 63 64 64 /*Get A*/ 65 if(Tstar<=263.15){ 66 A=3.61e-13 * exp( -6.e+4/(R*Tstar)); 67 } 68 else{ 69 A=1.73e3 * exp(-13.9e+4/(R*Tstar)); 70 } 71 A*=(1. + 181.25*waterfraction); 65 /*Get A*/ 66 if(Tstar<=263.15){A=3.61e-13*exp(-6.e+4/(R*Tstar));} 67 else{A=1.73e3*exp(-13.9e+4/(R*Tstar));} 68 A*=(1.+181.25*waterfraction); 72 69 73 /*Convert to B*/ 74 B=pow(A,-1./n); 75 76 return B; 70 /*Convert to B*/ 71 B=pow(A,-1./n); 72 return B; 77 73 }
Note:
See TracBrowser
for help on using the repository browser.