Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 23474)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 23475)
@@ -221,4 +221,5 @@
 			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
 			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling");
 			break;
 		case 5:
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 23474)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 23475)
@@ -832,4 +832,5 @@
 			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
 			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling");
 			break;
 		case 5:
@@ -933,5 +934,5 @@
 	iomodel->FindConstant(&frictionlaw,"md.friction.law");
 	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
-	if(frictionlaw==3 || frictionlaw==1 || frictionlaw==7) parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+	if(frictionlaw==3 || frictionlaw==4 || frictionlaw==1 || frictionlaw==7) parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
 	if(frictionlaw==5) parameters->AddObject(iomodel->CopyConstantObject("md.friction.f",FrictionFEnum));
 	if(frictionlaw==9) parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
Index: /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 23474)
+++ /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 23475)
@@ -217,4 +217,5 @@
 			iomodel->FetchDataToInput(elements,"md.initialization.pressure",PressureEnum);
 			iomodel->FetchDataToInput(elements,"md.initialization.temperature",TemperatureEnum);
+			iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling");
 			break;
 		case 5:
Index: /issm/trunk-jpl/src/m/classes/frictiontemp.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/frictiontemp.m	(revision 23474)
+++ /issm/trunk-jpl/src/m/classes/frictiontemp.m	(revision 23475)
@@ -10,4 +10,6 @@
 		p           = NaN;
 		q           = NaN;
+		coupling    = 0;
+                effective_pressure = NaN;
 	end
 	methods
@@ -16,4 +18,15 @@
 			self.p=project3d(md,'vector',self.p,'type','element');
 			self.q=project3d(md,'vector',self.q,'type','element');
+			switch self.coupling
+				case 0
+				case 1
+				case 2
+				case 3
+					self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
+				case 4
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');
+			end
 		end % }}}
 		function self = frictiontemp(varargin) % {{{
@@ -31,5 +44,5 @@
 			%By default gamma = 1;
 			self.gamma = 1;
-
+			self.coupling = 0;
 
 		end % }}}
@@ -53,4 +66,6 @@
 			fielddisplay(self,'p','p exponent');
 			fielddisplay(self,'q','q exponent');
+			fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
+			fielddisplay(self,'coupling','Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: used coupled model (not implemented yet)');
 		end % }}}
 		function marshall(self,prefix,md,fid) % {{{
@@ -61,4 +76,16 @@
 			WriteData(fid,prefix,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2);
 			WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer');
+			switch self.coupling
+				case 0
+				case 1
+				case 2
+				case 3
+					WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				case 4
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');
+			end
 		end % }}}
 	end
