Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 18803)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 18804)
@@ -30,5 +30,5 @@
 	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){/*{{{*/
@@ -120,4 +120,10 @@
 			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: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 18803)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 18804)
@@ -133,5 +133,5 @@
 	int frictionlaw;
 	iomodel->Constant(&frictionlaw,FrictionLawEnum);
-	if(frictionlaw==4) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
+	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
 
 }/*}}}*/
@@ -285,4 +285,10 @@
 			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:
Index: /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 18803)
+++ /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 18804)
@@ -28,4 +28,8 @@
 	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){/*{{{*/
@@ -108,4 +112,10 @@
 			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: /issm/trunk-jpl/src/c/classes/Loads/Friction.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 18803)
+++ /issm/trunk-jpl/src/c/classes/Loads/Friction.cpp	(revision 18804)
@@ -57,4 +57,7 @@
 		case 5:
 			GetAlpha2WaterLayer(palpha2,gauss);
+			break;
+		case 6:
+			GetAlpha2WeertmanTemp(palpha2,gauss);
 			break;
 	  default:
@@ -233,5 +236,5 @@
 	/*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)
@@ -252,5 +255,5 @@
 	/*Compute scaling parameter*/
 	element->parameters->FindParam(&gamma,FrictionGammaEnum);
-	alpha2 = alpha2*exp((T-Tpmp)/gamma);
+	alpha2 = alpha2 / exp((T-Tpmp)/gamma);
 
 	/*Assign output pointers:*/
@@ -318,4 +321,31 @@
 	*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){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Loads/Friction.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Friction.h	(revision 18803)
+++ /issm/trunk-jpl/src/c/classes/Loads/Friction.h	(revision 18804)
@@ -35,4 +35,5 @@
 		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: /issm/trunk-jpl/src/m/classes/frictionweertmantemp.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/frictionweertmantemp.m	(revision 18804)
+++ /issm/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
