Index: ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 18803)
+++ ../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 18804)
@@ -132,7 +132,7 @@
 	/*Deal with friction parameters*/
 	int frictionlaw;
 	iomodel->Constant(&frictionlaw,FrictionLawEnum);
-	if(frictionlaw==4) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
+	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
 
 }/*}}}*/
 void StressbalanceAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -285,6 +285,12 @@
 			iomodel->FetchDataToInput(elements,FrictionQEnum);
 			iomodel->FetchDataToInput(elements,FrictionWaterLayerEnum);
 			break;
+		case 6:
+			iomodel->FetchDataToInput(elements,FrictionCEnum);
+			iomodel->FetchDataToInput(elements,FrictionMEnum);
+			iomodel->FetchDataToInput(elements,PressureEnum);
+			iomodel->FetchDataToInput(elements,TemperatureEnum);
+			break;
 		default:
 			_error_("not supported");
 	}
Index: ../trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- ../trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 18803)
+++ ../trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 18804)
@@ -27,6 +27,10 @@
 	if(numoutputs)parameters->AddObject(new StringArrayParam(ThermalRequestedOutputsEnum,requestedoutputs,numoutputs));
 	iomodel->DeleteData(&requestedoutputs,numoutputs,ThermalRequestedOutputsEnum);
 
+	/*Deal with friction parameters*/
+	int frictionlaw;
+	iomodel->Constant(&frictionlaw,FrictionLawEnum);
+	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
 }/*}}}*/
 void ThermalAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
 
@@ -107,6 +111,12 @@
 			iomodel->FetchDataToInput(elements,FrictionQEnum);
 			iomodel->FetchDataToInput(elements,FrictionWaterLayerEnum);
 			break;
+		case 6:
+			iomodel->FetchDataToInput(elements,FrictionCEnum);
+			iomodel->FetchDataToInput(elements,FrictionMEnum);
+			iomodel->FetchDataToInput(elements,PressureEnum);
+			iomodel->FetchDataToInput(elements,TemperatureEnum);
+			break;
 		default:
 			_error_("not supported");
 	}
Index: ../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- ../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 18803)
+++ ../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 18804)
@@ -29,7 +29,7 @@
 	/*Deal with friction parameters*/
 	int frictionlaw;
 	iomodel->Constant(&frictionlaw,FrictionLawEnum);
-	if(frictionlaw==4) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
+	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
 }/*}}}*/
 void EnthalpyAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
 
@@ -119,6 +119,12 @@
 			iomodel->FetchDataToInput(elements,FrictionQEnum);
 			iomodel->FetchDataToInput(elements,FrictionWaterLayerEnum);
 			break;
+		case 6:
+			iomodel->FetchDataToInput(elements,FrictionCEnum);
+			iomodel->FetchDataToInput(elements,FrictionMEnum);
+			iomodel->FetchDataToInput(elements,PressureEnum);
+			iomodel->FetchDataToInput(elements,TemperatureEnum);
+			break;
 		default:
 			_error_("not supported");
 	}
Index: ../trunk-jpl/src/c/classes/Loads/Friction.h
===================================================================
--- ../trunk-jpl/src/c/classes/Loads/Friction.h	(revision 18803)
+++ ../trunk-jpl/src/c/classes/Loads/Friction.h	(revision 18804)
@@ -34,6 +34,7 @@
 		void  GetAlpha2Hydro(IssmDouble* palpha2,Gauss* gauss);
 		void  GetAlpha2Temp(IssmDouble* palpha2,Gauss* gauss);
 		void  GetAlpha2WaterLayer(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2WeertmanTemp(IssmDouble* palpha2,Gauss* gauss);
 		void  GetAlphaComplement(IssmDouble* alpha_complement,Gauss* gauss);
 };
 
Index: ../trunk-jpl/src/c/classes/Loads/Friction.cpp
===================================================================
--- ../trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 18803)
+++ ../trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 18804)
@@ -57,6 +57,9 @@
 		case 5:
 			GetAlpha2WaterLayer(palpha2,gauss);
 			break;
+		case 6:
+			GetAlpha2WeertmanTemp(palpha2,gauss);
+			break;
 	  default:
 			_error_("not supported");
 	}
@@ -232,7 +235,7 @@
 void Friction::GetAlpha2Temp(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
 	/*Here, we want to parameterize the friction as a function of temperature
 	 *
-	 * alpha2 = alpha2_viscous * f(T)
+	 * alpha2 = alpha2_viscous * 1/f(T)
 	 *
 	 * where f(T) = exp((T-Tpmp)/gamma)
 	 */
@@ -251,7 +254,7 @@
 
 	/*Compute scaling parameter*/
 	element->parameters->FindParam(&gamma,FrictionGammaEnum);
-	alpha2 = alpha2*exp((T-Tpmp)/gamma);
+	alpha2 = alpha2 / exp((T-Tpmp)/gamma);
 
 	/*Assign output pointers:*/
 	*palpha2=alpha2;
@@ -317,6 +320,33 @@
 	/*Assign output pointers:*/
 	*palpha2=alpha2;
 }/*}}}*/
+void Friction::GetAlpha2WeertmanTemp(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+	/*Here, we want to parameterize the friction as a function of temperature
+	 *
+	 * alpha2 = alpha2_weertman * 1/f(T)
+	 *
+	 * where f(T) = exp((T-Tpmp)/gamma)
+	 */
+
+	/*Intermediaries: */
+	IssmDouble  f,T,pressure,Tpmp,gamma;
+	IssmDouble  alpha2;
+
+	/*Get viscous part*/
+	this->GetAlpha2Weertman(&alpha2,gauss);
+
+	/*Get pressure melting point (Tpmp) for local pressure and get current temperature*/
+	element->GetInputValue(&T,gauss,TemperatureEnum);
+	element->GetInputValue(&pressure,gauss,PressureEnum);
+	Tpmp = element->TMeltingPoint(pressure);
+
+	/*Compute scaling parameter*/
+	element->parameters->FindParam(&gamma,FrictionGammaEnum);
+	alpha2 = alpha2 / exp((T-Tpmp)/gamma);
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
 void Friction::GetAlphaComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
 
 	/* FrictionGetAlpha2 computes alpha2= drag^2 * Neff ^r * vel ^s, with Neff=rho_ice*g*thickness+rho_ice*g*bed, r=q/p and s=1/p. 
Index: ../trunk-jpl/src/m/classes/frictionweertmantemp.m
===================================================================
--- ../trunk-jpl/src/m/classes/frictionweertmantemp.m	(revision 0)
+++ ../trunk-jpl/src/m/classes/frictionweertmantemp.m	(revision 18804)
@@ -0,0 +1,50 @@
+%FRICTIONWEERTMAN class definition
+%
+%   Usage:
+%      frictionweertmantemp=frictionweertmantemp();
+
+classdef frictionweertmantemp
+	properties (SetAccess=public) 
+		gamma = 0;
+		C = NaN;
+		m = NaN;
+	end
+	methods
+		function obj = frictionweertmantemp(varargin) % {{{
+			switch nargin
+				case 0
+					obj=setdefaultparameters(obj);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+
+		end % }}}
+		function md = checkconsistency(obj,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','forcing',1,'NaN',1);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'size',[md.mesh.numberofelements 1]);
+		end % }}}
+		function disp(obj) % {{{
+			disp('Weertman sliding law parameters:');
+			disp('      Sigma_b = C^(-1/m) * |u_b|^(1/m-1)  u_b * 1/f(T)');
+			disp(' ');
+			fielddisplay(obj,'gamma','submelt sliding parameter f(T) = exp((T-Tpmp)/gamma)');
+			fielddisplay(obj,'C','friction coefficient [SI]');
+			fielddisplay(obj,'m','m exponent');
+		end % }}}
+		function marshall(obj,md,fid) % {{{
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',FrictionLawEnum,'data',6,'format','Integer');
+			WriteData(fid,'class','friction','object',obj,'fieldname','gamma','format','Double');
+			WriteData(fid,'class','friction','object',obj,'fieldname','C','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
+			WriteData(fid,'class','friction','object',obj,'fieldname','m','format','DoubleMat','mattype',2);
+			
+
+		end % }}}
+	end
+end
