Index: /issm/trunk-jpl/src/m/classes/frictionjosh.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/frictionjosh.m	(revision 21543)
+++ /issm/trunk-jpl/src/m/classes/frictionjosh.m	(revision 21543)
@@ -0,0 +1,52 @@
+%FRICTIONTEMP class definition
+%
+%   Usage:
+%      frictionjosh=frictionjosh();
+
+classdef frictionjosh
+	properties (SetAccess=public) 
+		coefficient = NaN;
+		temperature = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.temperature=project3d(md,'vector',self.temperature,'type','node','layer',1);
+		end % }}}
+		function self = frictionjosh(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionjosh(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.temperature','timeseries',1,'NaN',1,'Inf',1);
+
+			%Check that temperature is provided
+			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+			fielddisplay(self,'coefficient','friction coefficient [SI]');
+			fielddisplay(self,'temperature','friction temperature [K]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.friction.law','data',9,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','temperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		end % }}}
+	end
+end
