Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9609)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9610)
@@ -18,4 +18,7 @@
 	SurfaceforcingsAblationRateEnum,
 	SurfaceforcingsMassBalanceEnum,
+	FrictionCoefficientEnum,
+	FrictionPEnum,
+	FrictionQEnum,
 	/*}}}*/
 	/*Datasets {{{1*/
@@ -174,7 +177,4 @@
 	ControlTypeEnum,
 	ConvergedEnum,
-	DragCoefficientEnum,
-	DragPEnum,
-	DragQEnum,
 	DtEnum,
 	TimeAdaptEnum,
Index: /issm/trunk/src/c/EnumDefinitions/EnumToModelField.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumToModelField.cpp	(revision 9609)
+++ /issm/trunk/src/c/EnumDefinitions/EnumToModelField.cpp	(revision 9610)
@@ -2,5 +2,5 @@
 * \brief: output string associated with enum, that corresponds  to a model field
 * for example: ThicknessEnum corresponds to model field thickness
-*              DragCoefficientEnum corresponds to model field drag
+*              FrictionCoefficientEnum corresponds to model field drag
 */
 
@@ -14,5 +14,5 @@
 
 		case ThicknessEnum : return "thickness";
-		case DragCoefficientEnum : return "drag_coefficient";
+		case FrictionCoefficientEnum : return "drag_coefficient";
 		case RheologyBEnum : return "rheology_B";
 		case RheologyBbarEnum : return "rheology_B";
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9609)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9610)
@@ -22,4 +22,7 @@
 		case SurfaceforcingsAblationRateEnum : return "SurfaceforcingsAblationRate";
 		case SurfaceforcingsMassBalanceEnum : return "SurfaceforcingsMassBalance";
+		case FrictionCoefficientEnum : return "FrictionCoefficient";
+		case FrictionPEnum : return "FrictionP";
+		case FrictionQEnum : return "FrictionQ";
 		case ConstraintsEnum : return "Constraints";
 		case ElementsEnum : return "Elements";
@@ -141,7 +144,4 @@
 		case ControlTypeEnum : return "ControlType";
 		case ConvergedEnum : return "Converged";
-		case DragCoefficientEnum : return "DragCoefficient";
-		case DragPEnum : return "DragP";
-		case DragQEnum : return "DragQ";
 		case DtEnum : return "Dt";
 		case TimeAdaptEnum : return "TimeAdapt";
Index: /issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 9609)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 9610)
@@ -46,5 +46,5 @@
 			case VxEnum:   iomodel->FetchData(1,VxEnum); break;
 			case VyEnum:   iomodel->FetchData(1,VyEnum); break;
-			case DragCoefficientEnum: iomodel->FetchData(1,DragCoefficientEnum); break;
+			case FrictionCoefficientEnum: iomodel->FetchData(1,FrictionCoefficientEnum); break;
 			case RheologyBbarEnum:    iomodel->FetchData(1,RheologyBEnum); break;
 			default: _error_("Control %s not implemented yet",EnumToStringx((int)iomodel->Data(ControlTypeEnum)[i]));
@@ -66,4 +66,4 @@
 	
 	/*Free data: */
-	iomodel->DeleteData(1+4+5,ElementsEnum,ControlTypeEnum,WeightsEnum,CmMinEnum,CmMaxEnum,DhdtEnum,VxEnum,VyEnum,DragCoefficientEnum,RheologyBEnum);
+	iomodel->DeleteData(1+4+5,ElementsEnum,ControlTypeEnum,WeightsEnum,CmMinEnum,CmMaxEnum,DhdtEnum,VxEnum,VyEnum,FrictionCoefficientEnum,RheologyBEnum);
 }
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 9609)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 9610)
@@ -52,7 +52,7 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BedEnum);
-	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
-	iomodel->FetchDataToInput(elements,DragPEnum);
-	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+	iomodel->FetchDataToInput(elements,FrictionPEnum);
+	iomodel->FetchDataToInput(elements,FrictionQEnum);
 	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
 	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
Index: /issm/trunk/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp	(revision 9609)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp	(revision 9610)
@@ -42,7 +42,7 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BedEnum);
-	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
-	iomodel->FetchDataToInput(elements,DragPEnum);
-	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+	iomodel->FetchDataToInput(elements,FrictionPEnum);
+	iomodel->FetchDataToInput(elements,FrictionQEnum);
 	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
 	iomodel->FetchDataToInput(elements,ElementOnBedEnum);
Index: /issm/trunk/src/c/modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp	(revision 9609)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp	(revision 9610)
@@ -35,7 +35,7 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BedEnum);
-	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
-	iomodel->FetchDataToInput(elements,DragPEnum);
-	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+	iomodel->FetchDataToInput(elements,FrictionPEnum);
+	iomodel->FetchDataToInput(elements,FrictionQEnum);
 	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
 	iomodel->FetchDataToInput(elements,ElementOnBedEnum);
Index: /issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp	(revision 9609)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp	(revision 9610)
@@ -43,7 +43,7 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BedEnum);
-	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
-	iomodel->FetchDataToInput(elements,DragPEnum);
-	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+	iomodel->FetchDataToInput(elements,FrictionPEnum);
+	iomodel->FetchDataToInput(elements,FrictionQEnum);
 	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
 	iomodel->FetchDataToInput(elements,ElementOnBedEnum);
Index: /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 9609)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 9610)
@@ -44,7 +44,7 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BedEnum);
-	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
-	iomodel->FetchDataToInput(elements,DragPEnum);
-	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+	iomodel->FetchDataToInput(elements,FrictionPEnum);
+	iomodel->FetchDataToInput(elements,FrictionQEnum);
 	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
 	iomodel->FetchDataToInput(elements,ElementOnBedEnum);
Index: /issm/trunk/src/c/modules/Responsex/Responsex.cpp
===================================================================
--- /issm/trunk/src/c/modules/Responsex/Responsex.cpp	(revision 9609)
+++ /issm/trunk/src/c/modules/Responsex/Responsex.cpp	(revision 9610)
@@ -42,5 +42,5 @@
 		case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
 		case RheologyBbarEnum:RheologyBbarx(responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
-		case DragCoefficientEnum:NodalValuex(responses, DragCoefficientEnum,elements,nodes, vertices, loads, materials, parameters,process_units); break;
+		case FrictionCoefficientEnum:NodalValuex(responses, FrictionCoefficientEnum,elements,nodes, vertices, loads, materials, parameters,process_units); break;
 		default: _error_(" response descriptor \"%s\" not supported yet!",response_descriptor); break;
 	}
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9609)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9610)
@@ -20,4 +20,7 @@
 	else if (strcmp(name,"SurfaceforcingsAblationRate")==0) return SurfaceforcingsAblationRateEnum;
 	else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
+	else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
+	else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
+	else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
 	else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
 	else if (strcmp(name,"Elements")==0) return ElementsEnum;
@@ -139,7 +142,4 @@
 	else if (strcmp(name,"ControlType")==0) return ControlTypeEnum;
 	else if (strcmp(name,"Converged")==0) return ConvergedEnum;
-	else if (strcmp(name,"DragCoefficient")==0) return DragCoefficientEnum;
-	else if (strcmp(name,"DragP")==0) return DragPEnum;
-	else if (strcmp(name,"DragQ")==0) return DragQEnum;
 	else if (strcmp(name,"Dt")==0) return DtEnum;
 	else if (strcmp(name,"TimeAdapt")==0) return TimeAdaptEnum;
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9609)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9610)
@@ -4409,5 +4409,5 @@
 	switch(control_type){
 
-		case DragCoefficientEnum:
+		case FrictionCoefficientEnum:
 			inputs->GetParameterValue(&approximation,ApproximationEnum);
 			switch(approximation){
@@ -4528,5 +4528,5 @@
 	Input* vx_input=inputs->GetInput(VxEnum);                           _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);                           _assert_(vy_input);
-	Input* dragcoefficient_input=inputs->GetInput(DragCoefficientEnum); _assert_(dragcoefficient_input);
+	Input* dragcoefficient_input=inputs->GetInput(FrictionCoefficientEnum); _assert_(dragcoefficient_input);
 
 	/*Build frictoin element, needed later: */
@@ -4597,5 +4597,5 @@
 	for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<2;j++) xyz_list_tria[i][j]=xyz_list[i][j];
 	GetDofList1(&doflist1[0]);
-	Input* drag_input    =inputs->GetInput(DragCoefficientEnum); _assert_(drag_input);
+	Input* drag_input    =inputs->GetInput(FrictionCoefficientEnum); _assert_(drag_input);
 	Input* vx_input      =inputs->GetInput(VxEnum);              _assert_(vx_input);
 	Input* vy_input      =inputs->GetInput(VyEnum);              _assert_(vy_input);
@@ -5196,10 +5196,10 @@
 					}
 					break;
-				case DragCoefficientEnum:
-					if (iomodel->Data(DragCoefficientEnum)){
-						for(j=0;j<6;j++)nodeinputs[j]=iomodel->Data(DragCoefficientEnum)[penta_vertex_ids[j]-1];
+				case FrictionCoefficientEnum:
+					if (iomodel->Data(FrictionCoefficientEnum)){
+						for(j=0;j<6;j++)nodeinputs[j]=iomodel->Data(FrictionCoefficientEnum)[penta_vertex_ids[j]-1];
 						for(j=0;j<6;j++)cmmininputs[j]=iomodel->Data(CmMinEnum)[(penta_vertex_ids[j]-1)*num_control_type+i];
 						for(j=0;j<6;j++)cmmaxinputs[j]=iomodel->Data(CmMaxEnum)[(penta_vertex_ids[j]-1)*num_control_type+i];
-						this->inputs->AddInput(new ControlInput(DragCoefficientEnum,PentaVertexInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+						this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,PentaVertexInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
@@ -6599,5 +6599,5 @@
 				name==VzObsEnum ||
 				name==TemperatureEnum ||
-				name==DragCoefficientEnum ||
+				name==FrictionCoefficientEnum ||
 				name==GradientEnum ||
 				name==OldGradientEnum  ||
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9609)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9610)
@@ -1405,5 +1405,5 @@
 	Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input); 
 	Input* surface_input=inputs->GetInput(SurfaceEnum);     _assert_(surface_input);
-	Input* drag_input=inputs->GetInput(DragCoefficientEnum);_assert_(drag_input);
+	Input* drag_input=inputs->GetInput(FrictionCoefficientEnum);_assert_(drag_input);
 
 	/* Start  looping on the number of gaussian points: */
@@ -2276,5 +2276,5 @@
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
 	Input* weights_input=inputs->GetInput(WeightsEnum);         _assert_(weights_input);
-	Input* drag_input   =inputs->GetInput(DragCoefficientEnum); _assert_(drag_input);
+	Input* drag_input   =inputs->GetInput(FrictionCoefficientEnum); _assert_(drag_input);
 
 	/* Start looping on the number of gaussian points: */
@@ -2694,5 +2694,5 @@
 	/*First deal with ∂/∂alpha(KU-F)*/
 	switch(control_type){
-		case DragCoefficientEnum:
+		case FrictionCoefficientEnum:
 			GradjDragMacAyeal(gradient);
 			break;
@@ -2873,5 +2873,5 @@
 	Input* vx_input=inputs->GetInput(VxEnum);                           _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);                           _assert_(vy_input);
-	Input* dragcoefficient_input=inputs->GetInput(DragCoefficientEnum); _assert_(dragcoefficient_input);
+	Input* dragcoefficient_input=inputs->GetInput(FrictionCoefficientEnum); _assert_(dragcoefficient_input);
 
 	/* Start  looping on the number of gaussian points: */
@@ -2944,5 +2944,5 @@
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
 	GetDofList1(&doflist1[0]);
-	Input* dragcoefficient_input=inputs->GetInput(DragCoefficientEnum); _assert_(dragcoefficient_input);
+	Input* dragcoefficient_input=inputs->GetInput(FrictionCoefficientEnum); _assert_(dragcoefficient_input);
 	Input* weights_input=inputs->GetInput(WeightsEnum);                 _assert_(weights_input);
 
@@ -3313,10 +3313,10 @@
 					}
 					break;
-				case DragCoefficientEnum:
-					if (iomodel->Data(DragCoefficientEnum)){
-						for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(DragCoefficientEnum)[tria_vertex_ids[j]-1];
+				case FrictionCoefficientEnum:
+					if (iomodel->Data(FrictionCoefficientEnum)){
+						for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(FrictionCoefficientEnum)[tria_vertex_ids[j]-1];
 						for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(CmMinEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];
 						for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(CmMaxEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];
-						this->inputs->AddInput(new ControlInput(DragCoefficientEnum,TriaVertexInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+						this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,TriaVertexInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 					}
 					break;
@@ -3992,5 +3992,5 @@
 				name==VxObsEnum ||
 				name==VyObsEnum ||
-				name==DragCoefficientEnum ||
+				name==FrictionCoefficientEnum ||
 				name==GradientEnum ||
 				name==OldGradientEnum
Index: /issm/trunk/src/c/objects/Loads/Friction.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Friction.cpp	(revision 9609)
+++ /issm/trunk/src/c/objects/Loads/Friction.cpp	(revision 9610)
@@ -73,9 +73,9 @@
 
 	/*Recover parameters: */
-	inputs->GetParameterValue(&drag_p,DragPEnum);
-	inputs->GetParameterValue(&drag_q,DragQEnum);
+	inputs->GetParameterValue(&drag_p,FrictionPEnum);
+	inputs->GetParameterValue(&drag_q,FrictionQEnum);
 	this->GetParameterValue(&thickness, gauss,ThicknessEnum);
 	this->GetParameterValue(&bed, gauss,BedEnum);
-	this->GetParameterValue(&drag_coefficient, gauss,DragCoefficientEnum);
+	this->GetParameterValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
 
 	/*Get material parameters: */
@@ -137,9 +137,9 @@
 
 	/*Recover parameters: */
-	inputs->GetParameterValue(&drag_p,DragPEnum);
-	inputs->GetParameterValue(&drag_q,DragQEnum);
+	inputs->GetParameterValue(&drag_p,FrictionPEnum);
+	inputs->GetParameterValue(&drag_q,FrictionQEnum);
 	this->GetParameterValue(&thickness, gauss,ThicknessEnum);
 	this->GetParameterValue(&bed, gauss,BedEnum);
-	this->GetParameterValue(&drag_coefficient, gauss,DragCoefficientEnum);
+	this->GetParameterValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
 
 	/*Get material parameters: */
@@ -203,9 +203,9 @@
 
 	/*Recover parameters: */
-	inputs->GetParameterValue(&drag_p,DragPEnum);
-	inputs->GetParameterValue(&drag_q,DragQEnum);
+	inputs->GetParameterValue(&drag_p,FrictionPEnum);
+	inputs->GetParameterValue(&drag_q,FrictionQEnum);
 	this->GetParameterValue(&thickness, gauss,ThicknessEnum);
 	this->GetParameterValue(&bed, gauss,BedEnum);
-	this->GetParameterValue(&drag_coefficient, gauss,DragCoefficientEnum);
+	this->GetParameterValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
 
 	/*Get material parameters: */
@@ -269,9 +269,9 @@
 
 	/*Recover parameters: */
-	inputs->GetParameterValue(&drag_p,DragPEnum);
-	inputs->GetParameterValue(&drag_q,DragQEnum);
+	inputs->GetParameterValue(&drag_p,FrictionPEnum);
+	inputs->GetParameterValue(&drag_q,FrictionQEnum);
 	this->GetParameterValue(&thickness, gauss,ThicknessEnum);
 	this->GetParameterValue(&bed, gauss,BedEnum);
-	this->GetParameterValue(&drag_coefficient, gauss,DragCoefficientEnum);
+	this->GetParameterValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
 
 	/*Get material parameters: */
Index: /issm/trunk/src/m/classes/friction.m
===================================================================
--- /issm/trunk/src/m/classes/friction.m	(revision 9610)
+++ /issm/trunk/src/m/classes/friction.m	(revision 9610)
@@ -0,0 +1,46 @@
+%FRICTION class definition
+%
+%   Usage:
+%      friction=friction();
+
+classdef friction
+	properties (SetAccess=public) 
+		coefficient = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
+		p           = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
+		q           = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
+	end
+	methods
+		function obj = friction(varargin) % {{{
+			switch nargin
+				case 0
+					obj=setdefaultparameters(obj);
+				case 1
+					in=varargin{1};
+					if (isa(in,'numeric') & in==0),
+						% requesting templates do nothing
+					else
+						error('constructor not supported');
+					end 
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+
+			%first, use the defaults provided by the properties definition above. 
+			fieldnames=fields(obj);
+			for i=1:length(fieldnames),
+				fieldname=fieldnames{i};
+				obj.(fieldname)=obj.(fieldname).default;
+			end
+
+		end % }}}
+		function disp(obj) % {{{
+
+			disp(sprintf('Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_ice*g*bed, r=q/p and s=1/p'));
+			fielddisplay(obj,'coefficient','friction coefficient [IS]');
+			fielddisplay(obj,'p','p exponent');
+			fielddisplay(obj,'q','q exponent');
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/model/model.m
===================================================================
--- /issm/trunk/src/m/classes/model/model.m	(revision 9609)
+++ /issm/trunk/src/m/classes/model/model.m	(revision 9610)
@@ -16,4 +16,5 @@
 		 flaim     = modelfield('default',0,'marshall',false);
 		 surfaceforcings = modelfield('default',0,'marshall',true);
+		 friction  = modelfield('default',0,'marshall',true);
 
 		 %FIXME: all other fields should belong to other classes
@@ -119,7 +120,4 @@
 		 %Physical parameters
 
-		 drag_coefficient = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
-		 drag_p           = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
-		 drag_q           = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
 		 rheology_B       = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
 		 rheology_n       = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);
@@ -408,7 +406,7 @@
 
 			 %Field name change
-			 if isfield(structmd,'drag'), md.drag_coefficient=structmd.drag; end
-			 if isfield(structmd,'p'), md.drag_p=structmd.p; end
-			 if isfield(structmd,'q'), md.drag_q=structmd.p; end
+			 if isfield(structmd,'drag'), md.friction.coefficient=structmd.drag; end
+			 if isfield(structmd,'p'), md.friction.p=structmd.p; end
+			 if isfield(structmd,'q'), md.friction.q=structmd.p; end
 			 if isfield(structmd,'B'), md.rheology_B=structmd.B; end
 			 if isfield(structmd,'n'), md.rheology_n=structmd.n; end
@@ -438,4 +436,7 @@
 			 if isfield(structmd,'dakota_analysis'), md.dakota_analysis=structmd.dakota_analysis; end
 			 if isfield(structmd,'surface_mass_balance'), md.surfaceforcings.mass_balance=structmd.surface_mass_balance; end
+			 if isfield(structmd,'drag_coefficient'), md.friction.coefficient=structmd.drag_coefficient; end
+			 if isfield(structmd,'drag_p'), md.friction.p=structmd.drag_p; end
+			 if isfield(structmd,'drag_q'), md.friction.q=structmd.drag_q; end
 
 			 %Field changes
@@ -489,5 +490,5 @@
 			 end
 			 if isnumeric(md.control_type),
-				 if (structmd.control_type==143), md.control_type={'DragCoefficient'}; end
+				 if (structmd.control_type==143), md.control_type={'FrictionCoefficient'}; end
 				 if (structmd.control_type==190), md.control_type={'RheologyBbar'}; end
 				 if (structmd.control_type==147), md.control_type={'Dhdt'}; end
@@ -545,4 +546,5 @@
 			 md.flaim=flaim;
 			 md.surfaceforcings=surfaceforcings;
+			 md.friction=friction;
 
 			 %Materials parameters
@@ -674,5 +676,5 @@
 			 %parameter to be inferred by control methods (only
 			 %drag and B are supported yet)
-			 md.control_type={'DragCoefficient'};
+			 md.control_type={'FrictionCoefficient'};
 
 			 %number of steps in the control methods
Index: sm/trunk/src/m/enum/DragCoefficientEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragCoefficientEnum.m	(revision 9609)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DragCoefficientEnum()
-%DRAGCOEFFICIENTENUM - Enum of DragCoefficient
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=DragCoefficientEnum()
-
-macro=StringToEnum('DragCoefficient');
Index: sm/trunk/src/m/enum/DragPEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragPEnum.m	(revision 9609)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DragPEnum()
-%DRAGPENUM - Enum of DragP
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=DragPEnum()
-
-macro=StringToEnum('DragP');
Index: sm/trunk/src/m/enum/DragQEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DragQEnum.m	(revision 9609)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DragQEnum()
-%DRAGQENUM - Enum of DragQ
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=DragQEnum()
-
-macro=StringToEnum('DragQ');
Index: /issm/trunk/src/m/enum/EnumToModelField.m
===================================================================
--- /issm/trunk/src/m/enum/EnumToModelField.m	(revision 9609)
+++ /issm/trunk/src/m/enum/EnumToModelField.m	(revision 9610)
@@ -21,7 +21,7 @@
 		case VyObsEnum(), string='vy_obs'; return
 		case BasalMeltingRateEnum(), string='basal_melting_rate'; return
-      case SurfaceAccumulationRateEnum(), string='surface_accumulation_rate'; return
-		case SurfaceAblationRateEnum(), string='surface_ablation_rate'; return
-		case SurfaceMassBalanceEnum(), string='surface_mass_balance'; return
+      case SurfaceforcingsAccumulationRateEnum(), string='surface_accumulation_rate'; return
+		case SurfaceforcingsAblationRateEnum(), string='surface_ablation_rate'; return
+		case SurfaceforcingsMassBalanceEnum(), string='surface_mass_balance'; return
 		otherwise, error(['Enum ' num2str(enum)  ' not found associated to any model field']);
 
Index: /issm/trunk/src/m/enum/FrictionCoefficientEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FrictionCoefficientEnum.m	(revision 9610)
+++ /issm/trunk/src/m/enum/FrictionCoefficientEnum.m	(revision 9610)
@@ -0,0 +1,11 @@
+function macro=FrictionCoefficientEnum()
+%FRICTIONCOEFFICIENTENUM - Enum of FrictionCoefficient
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=FrictionCoefficientEnum()
+
+macro=StringToEnum('FrictionCoefficient');
Index: /issm/trunk/src/m/enum/FrictionPEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FrictionPEnum.m	(revision 9610)
+++ /issm/trunk/src/m/enum/FrictionPEnum.m	(revision 9610)
@@ -0,0 +1,11 @@
+function macro=FrictionPEnum()
+%FRICTIONPENUM - Enum of FrictionP
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=FrictionPEnum()
+
+macro=StringToEnum('FrictionP');
Index: /issm/trunk/src/m/enum/FrictionQEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FrictionQEnum.m	(revision 9610)
+++ /issm/trunk/src/m/enum/FrictionQEnum.m	(revision 9610)
@@ -0,0 +1,11 @@
+function macro=FrictionQEnum()
+%FRICTIONQENUM - Enum of FrictionQ
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=FrictionQEnum()
+
+macro=StringToEnum('FrictionQ');
Index: sm/trunk/src/m/enum/SurfaceAblationRateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceAblationRateEnum.m	(revision 9609)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceAblationRateEnum()
-%SURFACEABLATIONRATEENUM - Enum of SurfaceAblationRate
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=SurfaceAblationRateEnum()
-
-macro=StringToEnum('SurfaceAblationRate');
Index: sm/trunk/src/m/enum/SurfaceAccumulationRateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceAccumulationRateEnum.m	(revision 9609)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceAccumulationRateEnum()
-%SURFACEACCUMULATIONRATEENUM - Enum of SurfaceAccumulationRate
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=SurfaceAccumulationRateEnum()
-
-macro=StringToEnum('SurfaceAccumulationRate');
Index: sm/trunk/src/m/enum/SurfaceMassBalanceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceMassBalanceEnum.m	(revision 9609)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceMassBalanceEnum()
-%SURFACEMASSBALANCEENUM - Enum of SurfaceMassBalance
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=SurfaceMassBalanceEnum()
-
-macro=StringToEnum('SurfaceMassBalance');
Index: /issm/trunk/src/m/enum/SurfaceforcingsAblationRateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsAblationRateEnum.m	(revision 9610)
+++ /issm/trunk/src/m/enum/SurfaceforcingsAblationRateEnum.m	(revision 9610)
@@ -0,0 +1,11 @@
+function macro=SurfaceforcingsAblationRateEnum()
+%SURFACEFORCINGSABLATIONRATEENUM - Enum of SurfaceforcingsAblationRate
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=SurfaceforcingsAblationRateEnum()
+
+macro=StringToEnum('SurfaceforcingsAblationRate');
Index: /issm/trunk/src/m/enum/SurfaceforcingsAccumulationRateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsAccumulationRateEnum.m	(revision 9610)
+++ /issm/trunk/src/m/enum/SurfaceforcingsAccumulationRateEnum.m	(revision 9610)
@@ -0,0 +1,11 @@
+function macro=SurfaceforcingsAccumulationRateEnum()
+%SURFACEFORCINGSACCUMULATIONRATEENUM - Enum of SurfaceforcingsAccumulationRate
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=SurfaceforcingsAccumulationRateEnum()
+
+macro=StringToEnum('SurfaceforcingsAccumulationRate');
Index: /issm/trunk/src/m/enum/SurfaceforcingsMassBalanceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsMassBalanceEnum.m	(revision 9610)
+++ /issm/trunk/src/m/enum/SurfaceforcingsMassBalanceEnum.m	(revision 9610)
@@ -0,0 +1,11 @@
+function macro=SurfaceforcingsMassBalanceEnum()
+%SURFACEFORCINGSMASSBALANCEENUM - Enum of SurfaceforcingsMassBalance
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=SurfaceforcingsMassBalanceEnum()
+
+macro=StringToEnum('SurfaceforcingsMassBalance');
Index: /issm/trunk/src/m/model/basalstress.m
===================================================================
--- /issm/trunk/src/m/model/basalstress.m	(revision 9609)
+++ /issm/trunk/src/m/model/basalstress.m	(revision 9610)
@@ -9,6 +9,6 @@
 
 %compute exponents
-s=averaging(md,1./md.drag_p,0);
-r=averaging(md,md.drag_q./md.drag_p,0);
+s=averaging(md,1./md.friction.p,0);
+r=averaging(md,md.friction.q./md.friction.p,0);
 
 %compute horizontal velocity
@@ -18,5 +18,5 @@
 
 %compute basal drag
-bx=(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed)).^r.*(md.drag_coefficient).^2.*ubx.^s;
-by=(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed)).^r.*(md.drag_coefficient).^2.*uby.^s;
-b=(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed)).^r.*(md.drag_coefficient).^2.*ub.^s;
+bx=(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed)).^r.*(md.friction.coefficient).^2.*ubx.^s;
+by=(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed)).^r.*(md.friction.coefficient).^2.*uby.^s;
+b=(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed)).^r.*(md.friction.coefficient).^2.*ub.^s;
Index: /issm/trunk/src/m/model/collapse.m
===================================================================
--- /issm/trunk/src/m/model/collapse.m	(revision 9609)
+++ /issm/trunk/src/m/model/collapse.m	(revision 9610)
@@ -19,9 +19,9 @@
 
 %drag is limited to nodes that are on the bedrock.
-md.drag_coefficient=project2d(md,md.drag_coefficient,1);
+md.friction.coefficient=project2d(md,md.friction.coefficient,1);
 
 %p and q (same deal, except for element that are on the bedrock: )
-md.drag_p=project2d(md,md.drag_p,1);
-md.drag_q=project2d(md,md.drag_q,1);
+md.friction.p=project2d(md,md.friction.p,1);
+md.friction.q=project2d(md,md.friction.q,1);
 
 %observations
Index: /issm/trunk/src/m/model/display/displayparameters.m
===================================================================
--- /issm/trunk/src/m/model/display/displayparameters.m	(revision 9609)
+++ /issm/trunk/src/m/model/display/displayparameters.m	(revision 9610)
@@ -25,6 +25,3 @@
 fielddisplay(md,'g','acceleration due to gravity [m/s^2]');
 
-disp(sprintf('\n      Friction parameters (Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_ice*g*bed, r=q/p and s=1/p)'));
-fielddisplay(md,'drag_coefficient','friction coefficient [IS]');
-fielddisplay(md,'drag_p','p exponent');
-fielddisplay(md,'drag_q','q exponent');
+
Index: /issm/trunk/src/m/model/extrude.m
===================================================================
--- /issm/trunk/src/m/model/extrude.m	(revision 9609)
+++ /issm/trunk/src/m/model/extrude.m	(revision 9610)
@@ -123,10 +123,10 @@
 %Ok, now deal with the other fields from the 2d mesh:
 
-%drag_coefficient is limited to nodes that are on the bedrock.
-md.drag_coefficient=project3d(md,'vector',md.drag_coefficient,'type','node','layer',1);
+%drag coefficient is limited to nodes that are on the bedrock.
+md.friction.coefficient=project3d(md,'vector',md.friction.coefficient,'type','node','layer',1);
 
 %p and q (same deal, except for element that are on the bedrock: )
-md.drag_p=project3d(md,'vector',md.drag_p,'type','element');
-md.drag_q=project3d(md,'vector',md.drag_q,'type','element');
+md.friction.p=project3d(md,'vector',md.friction.p,'type','element');
+md.friction.q=project3d(md,'vector',md.friction.q,'type','element');
 
 %observations
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9609)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9610)
@@ -82,5 +82,5 @@
 %}}}
 %NO NAN {{{1
-fields={'numberofelements','numberofnodes','x','y','z','drag_coefficient','drag_p','drag_q',...
+fields={'numberofelements','numberofnodes','x','y','z','friction.coefficient','friction.p','friction.q',...
 	'rho_ice','rho_water','rheology_B','elementoniceshelf','surface','thickness','bed','constants.g','lowmem','nsteps','maxiter',...
 	'eps_res','max_nonlinear_iterations','rheology_n','nodeonbed','nodeonsurface','elementonbed','elementonsurface','elementconnectivity'};
@@ -88,5 +88,5 @@
 %}}}}
 %FIELDS >= 0 {{{1
-fields={'numberofelements','numberofnodes','elements','drag_coefficient','drag_p','drag_q',...
+fields={'numberofelements','numberofnodes','elements','friction.coefficient','friction.p','friction.q',...
 	'rho_ice','rho_water','rheology_B','elementoniceshelf','thickness','constants.g','eps_res','max_nonlinear_iterations','eps_rel','eps_abs','nsteps','maxiter',...
 	'lowmem','rheology_n','nodeonbed','nodeonsurface','elementonbed','elementonsurface'};
@@ -94,14 +94,14 @@
 %}}}
 %FIELDS > 0 {{{1
-fields={'numberofelements','numberofnodes','elements','drag_p',...
+fields={'numberofelements','numberofnodes','elements','friction.p',...
 	'rho_ice','rho_water','rheology_B','thickness','constants.g','max_nonlinear_iterations','eps_res','eps_rel','eps_abs','maxiter'};
 checkgreaterstrict(md,fields,0);
 %}}}
 %SIZE NUMBEROFELEMENTS {{{1
-fields={'drag_p','drag_q','elementoniceshelf','rheology_n','elementonbed'};
+fields={'friction.p','friction.q','elementoniceshelf','rheology_n','elementonbed'};
 checksize(md,fields,[md.numberofelements 1]);
 %}}}
 %SIZE NUMBEROFNODES {{{1
-fields={'x','y','z','rheology_B','drag_coefficient','basal_melting_rate','surface','thickness','bed','nodeonbed','nodeonsurface'};
+fields={'x','y','z','rheology_B','friction.coefficient','basal_melting_rate','surface','thickness','bed','nodeonbed','nodeonsurface'};
 checksize(md,fields,[md.numberofnodes 1]);
 %}}}
Index: /issm/trunk/src/m/model/parametercontroloptimization.m
===================================================================
--- /issm/trunk/src/m/model/parametercontroloptimization.m	(revision 9609)
+++ /issm/trunk/src/m/model/parametercontroloptimization.m	(revision 9610)
@@ -30,5 +30,5 @@
 md2.eps_cm=NaN;
 md2.nsteps=getfieldvalue(options,'nsteps',5);
-md2.control_type=getfieldvalue(options,'md2.control_type',{'DragCoefficient'});
+md2.control_type=getfieldvalue(options,'md2.control_type',{'FrictionCoefficient'});
 md2.maxiter=10*ones(md2.nsteps,1);
 md2.cm_jump=0.99*ones(md2.nsteps,1);
Index: /issm/trunk/src/m/model/parameterization/parametercontroldrag.m
===================================================================
--- /issm/trunk/src/m/model/parameterization/parametercontroldrag.m	(revision 9609)
+++ /issm/trunk/src/m/model/parameterization/parametercontroldrag.m	(revision 9610)
@@ -21,5 +21,5 @@
 
 %control type
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 
 %weights
Index: /issm/trunk/src/m/model/plot/plot_basaldrag.m
===================================================================
--- /issm/trunk/src/m/model/plot/plot_basaldrag.m	(revision 9609)
+++ /issm/trunk/src/m/model/plot/plot_basaldrag.m	(revision 9610)
@@ -17,6 +17,6 @@
 
 %compute exponents
-s=averaging(md,1./md.drag_p,0);
-r=averaging(md,md.drag_q./md.drag_p,0);
+s=averaging(md,1./md.friction.p,0);
+r=averaging(md,md.friction.q./md.friction.p,0);
 
 %compute horizontal velocity
@@ -30,5 +30,5 @@
 
 %compute basal drag
-drag=(max(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed),0)).^r.*(md.drag_coefficient).^2.*ub.^s/1000;
+drag=(max(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed),0)).^r.*(md.friction.coefficient).^2.*ub.^s/1000;
 
 %Figure out if this is a Section plot
Index: /issm/trunk/src/m/qmu/qmu_correlation.m
===================================================================
--- /issm/trunk/src/m/qmu/qmu_correlation.m	(revision 9609)
+++ /issm/trunk/src/m/qmu/qmu_correlation.m	(revision 9610)
@@ -6,6 +6,6 @@
 %
 %
-%   Example: mass_flux_drag_correlation=qmu_correlation(md,'drag','mass_flux');
-%
+%   Example:
+%      mass_flux_drag_correlation=qmu_correlation(md,'drag','mass_flux');
 
 if ~isfield(md.dakotaresults,'dresp_dat'),
Index: /issm/trunk/test/NightlyRun/test337.m
===================================================================
--- /issm/trunk/test/NightlyRun/test337.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test337.m	(revision 9610)
@@ -6,5 +6,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -21,10 +21,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test338.m
===================================================================
--- /issm/trunk/test/NightlyRun/test338.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test338.m	(revision 9610)
@@ -6,5 +6,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -21,10 +21,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test339.m
===================================================================
--- /issm/trunk/test/NightlyRun/test339.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test339.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -22,10 +22,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test340.m
===================================================================
--- /issm/trunk/test/NightlyRun/test340.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test340.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -22,10 +22,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test341.m
===================================================================
--- /issm/trunk/test/NightlyRun/test341.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test341.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -22,10 +22,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test342.m
===================================================================
--- /issm/trunk/test/NightlyRun/test342.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test342.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -22,10 +22,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-08,1e-07,1e-10,1e-10,1e-09,1e-09,1e-09};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test343.m
===================================================================
--- /issm/trunk/test/NightlyRun/test343.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test343.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -22,10 +22,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test344.m
===================================================================
--- /issm/trunk/test/NightlyRun/test344.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test344.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -22,10 +22,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-06,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test423.m
===================================================================
--- /issm/trunk/test/NightlyRun/test423.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test423.m	(revision 9610)
@@ -14,6 +14,6 @@
 %variables
 md.variables.rho_ice=normal_uncertain('RhoIce',md.rho_ice,0.01);
-md.variables.drag_coefficient=normal_uncertain('scaled_DragCoefficient',1,.01);
-%md.variables.drag_coefficient=normal_uncertain('scaled_DragCoefficient',1,.01*ones(md.npart,1));
+md.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,.01);
+%md.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,.01*ones(md.npart,1));
 
 %responses
@@ -38,5 +38,5 @@
 %Fields and tolerances to track changes
 md=tres(md,'dakota');
-md.results.dakota.importancefactors=importancefactors(md,'scaled_DragCoefficient','MaxVel')';
+md.results.dakota.importancefactors=importancefactors(md,'scaled_FrictionCoefficient','MaxVel')';
 field_names     ={'importancefactors'};
 field_tolerances={1e-10};
Index: /issm/trunk/test/NightlyRun/test424.m
===================================================================
--- /issm/trunk/test/NightlyRun/test424.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test424.m	(revision 9610)
@@ -15,5 +15,5 @@
 %variables
 md.variables.rho_ice=normal_uncertain('RhoIce',md.rho_ice,0.01);
-md.variables.drag_coefficient=normal_uncertain('scaled_DragCoefficient',1,0.01);
+md.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
 
 %responses
@@ -37,5 +37,5 @@
 %Fields and tolerances to track changes
 md=tres(md,'dakota');
-md.results.dakota.importancefactors=importancefactors(md,'scaled_DragCoefficient','MaxVel')';
+md.results.dakota.importancefactors=importancefactors(md,'scaled_FrictionCoefficient','MaxVel')';
 field_names     ={'importancefactors'};
 field_tolerances={1e-10};
Index: /issm/trunk/test/NightlyRun/test425.m
===================================================================
--- /issm/trunk/test/NightlyRun/test425.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test425.m	(revision 9610)
@@ -14,5 +14,5 @@
 %variables
 md.variables.rho_ice=normal_uncertain('RhoIce',md.rho_ice,0.01);
-md.variables.drag_coefficient=normal_uncertain('scaled_DragCoefficient',1,0.01);
+md.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
 
 %responses
@@ -38,5 +38,5 @@
 %Fields and tolerances to track changes
 md=tres(md,'dakota');
-md.results.dakota.importancefactors=importancefactors(md,'scaled_DragCoefficient','MaxVel')';
+md.results.dakota.importancefactors=importancefactors(md,'scaled_FrictionCoefficient','MaxVel')';
 field_names     ={'importancefactors'};
 field_tolerances={1e-10};
Index: /issm/trunk/test/NightlyRun/test426.m
===================================================================
--- /issm/trunk/test/NightlyRun/test426.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test426.m	(revision 9610)
@@ -14,5 +14,5 @@
 %variables
 md.variables.rho_ice=normal_uncertain('RhoIce',md.rho_ice,0.01);
-md.variables.drag_coefficient=normal_uncertain('scaled_DragCoefficient',1,0.01);
+md.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
 
 %responses
@@ -38,5 +38,5 @@
 %Fields and tolerances to track changes
 md=tres(md,'dakota');
-md.results.dakota.importancefactors=importancefactors(md,'scaled_DragCoefficient','MaxVel')';
+md.results.dakota.importancefactors=importancefactors(md,'scaled_FrictionCoefficient','MaxVel')';
 field_names     ={'importancefactors'};
 field_tolerances={1e-10};
Index: /issm/trunk/test/NightlyRun/test427.m
===================================================================
--- /issm/trunk/test/NightlyRun/test427.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test427.m	(revision 9610)
@@ -20,5 +20,5 @@
 
 %variables
-md.variables.drag_coefficient=normal_uncertain('scaled_DragCoefficient',1,0.01);
+md.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
 
 %responses
Index: /issm/trunk/test/NightlyRun/test428.m
===================================================================
--- /issm/trunk/test/NightlyRun/test428.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test428.m	(revision 9610)
@@ -20,5 +20,5 @@
 
 %variables
-md.variables.drag_coefficient=normal_uncertain('scaled_DragCoefficient',1,0.01);
+md.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
 
 %responses
Index: /issm/trunk/test/NightlyRun/test429.m
===================================================================
--- /issm/trunk/test/NightlyRun/test429.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test429.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -23,10 +23,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
 field_values={...
 	PatchToVec(md.results.SteadystateSolution.Gradient1),...
 	md.results.SteadystateSolution.J,...
-	PatchToVec(md.results.SteadystateSolution.DragCoefficient),...
+	PatchToVec(md.results.SteadystateSolution.FrictionCoefficient),...
 	PatchToVec(md.results.SteadystateSolution.Pressure),...
 	PatchToVec(md.results.SteadystateSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test430.m
===================================================================
--- /issm/trunk/test/NightlyRun/test430.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test430.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -23,10 +23,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-9,1e-13,1e-6};
 field_values={...
 	PatchToVec(md.results.SteadystateSolution.Gradient1),...
 	md.results.SteadystateSolution.J,...
-	PatchToVec(md.results.SteadystateSolution.DragCoefficient),...
+	PatchToVec(md.results.SteadystateSolution.FrictionCoefficient),...
 	PatchToVec(md.results.SteadystateSolution.Pressure),...
 	PatchToVec(md.results.SteadystateSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test431.m
===================================================================
--- /issm/trunk/test/NightlyRun/test431.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test431.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -23,10 +23,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
 field_tolerances={1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-06};
 field_values={...
 	PatchToVec(md.results.SteadystateSolution.Gradient1),...
 	md.results.SteadystateSolution.J,...
-	PatchToVec(md.results.SteadystateSolution.DragCoefficient),...
+	PatchToVec(md.results.SteadystateSolution.FrictionCoefficient),...
 	PatchToVec(md.results.SteadystateSolution.Pressure),...
 	PatchToVec(md.results.SteadystateSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test432.m
===================================================================
--- /issm/trunk/test/NightlyRun/test432.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test432.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -23,10 +23,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
 field_tolerances={1e-08,1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-07,1e-08,1e-05};
 field_values={...
 	PatchToVec(md.results.SteadystateSolution.Gradient1),...
 	md.results.SteadystateSolution.J,...
-	PatchToVec(md.results.SteadystateSolution.DragCoefficient),...
+	PatchToVec(md.results.SteadystateSolution.FrictionCoefficient),...
 	PatchToVec(md.results.SteadystateSolution.Pressure),...
 	PatchToVec(md.results.SteadystateSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test434.m
===================================================================
--- /issm/trunk/test/NightlyRun/test434.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test434.m	(revision 9610)
@@ -13,5 +13,5 @@
 
 %Dakota options
-md.variables.drag_coefficient=normal_uncertain('scaled_DragCoefficient',1,0.01);
+md.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
 
 md.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
Index: /issm/trunk/test/NightlyRun/test523.m
===================================================================
--- /issm/trunk/test/NightlyRun/test523.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test523.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -22,10 +22,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test524.m
===================================================================
--- /issm/trunk/test/NightlyRun/test524.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test524.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -22,10 +22,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
 field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
 field_values={...
 	PatchToVec(md.results.DiagnosticSolution.Gradient1),...
 	md.results.DiagnosticSolution.J,...
-	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.FrictionCoefficient),...
 	PatchToVec(md.results.DiagnosticSolution.Pressure),...
 	PatchToVec(md.results.DiagnosticSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test525.m
===================================================================
--- /issm/trunk/test/NightlyRun/test525.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test525.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -23,10 +23,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
 field_values={...
 	PatchToVec(md.results.SteadystateSolution.Gradient1),...
 	md.results.SteadystateSolution.J,...
-	PatchToVec(md.results.SteadystateSolution.DragCoefficient),...
+	PatchToVec(md.results.SteadystateSolution.FrictionCoefficient),...
 	PatchToVec(md.results.SteadystateSolution.Pressure),...
 	PatchToVec(md.results.SteadystateSolution.Vel),...
Index: /issm/trunk/test/NightlyRun/test526.m
===================================================================
--- /issm/trunk/test/NightlyRun/test526.m	(revision 9609)
+++ /issm/trunk/test/NightlyRun/test526.m	(revision 9610)
@@ -7,5 +7,5 @@
 %control parameters
 md.control_analysis=1;
-md.control_type={'DragCoefficient'};
+md.control_type={'FrictionCoefficient'};
 md.cm_min=1*ones(md.numberofnodes,1);
 md.cm_max=200*ones(md.numberofnodes,1);
@@ -23,10 +23,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
+field_names     ={'Gradient' 'Misfits' 'FrictionCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'BasalMeltingRate'};
 field_tolerances={1e-10,1e-10,1e-10,1e-10,1e-6,1e-6,1e-6,1e-6,1e-6,1e-06};
 field_values={...
 	PatchToVec(md.results.SteadystateSolution.Gradient1),...
 	md.results.SteadystateSolution.J,...
-	PatchToVec(md.results.SteadystateSolution.DragCoefficient),...
+	PatchToVec(md.results.SteadystateSolution.FrictionCoefficient),...
 	PatchToVec(md.results.SteadystateSolution.Pressure),...
 	PatchToVec(md.results.SteadystateSolution.Vel),...
Index: /issm/trunk/test/Par/79North.par
===================================================================
--- /issm/trunk/test/Par/79North.par	(revision 9609)
+++ /issm/trunk/test/Par/79North.par	(revision 9610)
@@ -17,8 +17,8 @@
 %Friction
 pos=find(md.elementoniceshelf);
-md.drag_coefficient=50*ones(md.numberofnodes,1);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient=50*ones(md.numberofnodes,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 %Ice shelf melting and surface mass balance 
Index: /issm/trunk/test/Par/ISMIPA.par
===================================================================
--- /issm/trunk/test/Par/ISMIPA.par	(revision 9609)
+++ /issm/trunk/test/Par/ISMIPA.par	(revision 9610)
@@ -7,10 +7,10 @@
 
 disp('      creating drag');
-md.drag_coefficient=200*ones(md.numberofnodes,1); %q=1.
+md.friction.coefficient=200*ones(md.numberofnodes,1); %q=1.
 %Take care of iceshelves: no basal drag
 pos=find(md.elementoniceshelf);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 disp('      creating flow law paramter');
Index: /issm/trunk/test/Par/ISMIPB.par
===================================================================
--- /issm/trunk/test/Par/ISMIPB.par	(revision 9609)
+++ /issm/trunk/test/Par/ISMIPB.par	(revision 9610)
@@ -7,10 +7,10 @@
 
 disp('      creating drag');
-md.drag_coefficient=200*ones(md.numberofnodes,1); %q=1.
+md.friction.coefficient=200*ones(md.numberofnodes,1); %q=1.
 %Take care of iceshelves: no basal drag
 pos=find(md.elementoniceshelf);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 disp('      creating flow law paramter');
Index: /issm/trunk/test/Par/ISMIPC.par
===================================================================
--- /issm/trunk/test/Par/ISMIPC.par	(revision 9609)
+++ /issm/trunk/test/Par/ISMIPC.par	(revision 9610)
@@ -7,11 +7,11 @@
 
 disp('      creating drag');
-%md.drag_coefficient=sqrt(md.constants.yts.*(1000+1000*sin(md.x*2*pi/max(md.x/2)).*sin(md.y*2*pi/max(md.x/2)))./(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed)));
-md.drag_coefficient=sqrt(md.constants.yts.*(1000+1000*sin(md.x*2*pi/max(md.x)).*sin(md.y*2*pi/max(md.x))));
+%md.friction.coefficient=sqrt(md.constants.yts.*(1000+1000*sin(md.x*2*pi/max(md.x/2)).*sin(md.y*2*pi/max(md.x/2)))./(md.constants.g*(md.rho_ice*md.thickness+md.rho_water*md.bed)));
+md.friction.coefficient=sqrt(md.constants.yts.*(1000+1000*sin(md.x*2*pi/max(md.x)).*sin(md.y*2*pi/max(md.x))));
 %Take care of iceshelves: no basal drag
 pos=find(md.elementoniceshelf);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=zeros(md.numberofelements,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=zeros(md.numberofelements,1);
 
 disp('      creating flow law paramter');
Index: /issm/trunk/test/Par/ISMIPD.par
===================================================================
--- /issm/trunk/test/Par/ISMIPD.par	(revision 9609)
+++ /issm/trunk/test/Par/ISMIPD.par	(revision 9610)
@@ -7,10 +7,10 @@
 
 disp('      creating drag');
-md.drag_coefficient=sqrt(md.constants.yts.*(1000+1000*sin(md.x*2*pi/max(md.x))));
+md.friction.coefficient=sqrt(md.constants.yts.*(1000+1000*sin(md.x*2*pi/max(md.x))));
 %Take care of iceshelves: no basal drag
 pos=find(md.elementoniceshelf);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=zeros(md.numberofelements,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=zeros(md.numberofelements,1);
 
 disp('      creating flow law paramter');
Index: /issm/trunk/test/Par/ISMIPE.par
===================================================================
--- /issm/trunk/test/Par/ISMIPE.par	(revision 9609)
+++ /issm/trunk/test/Par/ISMIPE.par	(revision 9610)
@@ -19,7 +19,7 @@
 
 disp('      creating drag');
-md.drag_coefficient=zeros(md.numberofnodes,1);
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient=zeros(md.numberofnodes,1);
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 disp('      creating flow law paramter');
Index: /issm/trunk/test/Par/ISMIPF.par
===================================================================
--- /issm/trunk/test/Par/ISMIPF.par	(revision 9609)
+++ /issm/trunk/test/Par/ISMIPF.par	(revision 9610)
@@ -9,7 +9,7 @@
 
 disp('      creating drag');
-md.drag_coefficient=sqrt(md.constants.yts/(2.140373*10^-7*1000))*ones(md.numberofnodes,1);
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=zeros(md.numberofelements,1);
+md.friction.coefficient=sqrt(md.constants.yts/(2.140373*10^-7*1000))*ones(md.numberofnodes,1);
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=zeros(md.numberofelements,1);
 
 disp('      creating flow law paramter');
Index: /issm/trunk/test/Par/Pig.par
===================================================================
--- /issm/trunk/test/Par/Pig.par	(revision 9609)
+++ /issm/trunk/test/Par/Pig.par	(revision 9610)
@@ -22,8 +22,8 @@
 %Friction
 pos=find(md.elementoniceshelf);
-md.drag_coefficient=50*ones(md.numberofnodes,1);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient=50*ones(md.numberofnodes,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 %Numerical parameters
Index: /issm/trunk/test/Par/RoundSheetEISMINT.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetEISMINT.par	(revision 9609)
+++ /issm/trunk/test/Par/RoundSheetEISMINT.par	(revision 9610)
@@ -6,7 +6,7 @@
 
 disp('      creating drag');
-md.drag_coefficient=20*ones(md.numberofnodes,1); %q=1. %no drag is specified in the analytical solution
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient=20*ones(md.numberofnodes,1); %q=1. %no drag is specified in the analytical solution
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 disp('      creating temperatures');
Index: /issm/trunk/test/Par/RoundSheetShelf.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetShelf.par	(revision 9609)
+++ /issm/trunk/test/Par/RoundSheetShelf.par	(revision 9610)
@@ -51,8 +51,8 @@
 %Friction
 pos=find(md.elementoniceshelf);
-md.drag_coefficient=20*ones(md.numberofnodes,1);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient=20*ones(md.numberofnodes,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 %Numerical parameters
Index: /issm/trunk/test/Par/RoundSheetStaticEISMINT.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetStaticEISMINT.par	(revision 9609)
+++ /issm/trunk/test/Par/RoundSheetStaticEISMINT.par	(revision 9610)
@@ -9,10 +9,10 @@
 
 disp('      creating drag');
-md.drag_coefficient=20*ones(md.numberofnodes,1); %q=1. %no drag is specified in the analytical solution
+md.friction.coefficient=20*ones(md.numberofnodes,1); %q=1. %no drag is specified in the analytical solution
 %Take care of iceshelves: no basal drag
 pos=find(md.elementoniceshelf);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 disp('      creating temperatures');
Index: /issm/trunk/test/Par/SquareEISMINT.par
===================================================================
--- /issm/trunk/test/Par/SquareEISMINT.par	(revision 9609)
+++ /issm/trunk/test/Par/SquareEISMINT.par	(revision 9610)
@@ -9,10 +9,10 @@
 
 disp('      creating drag');
-md.drag_coefficient=200*ones(md.numberofnodes,1); %q=1.
+md.friction.coefficient=200*ones(md.numberofnodes,1); %q=1.
 %Take care of iceshelves: no basal drag
 pos=find(md.elementoniceshelf);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 disp('      creating temperature');
Index: /issm/trunk/test/Par/SquareSheetConstrained.par
===================================================================
--- /issm/trunk/test/Par/SquareSheetConstrained.par	(revision 9609)
+++ /issm/trunk/test/Par/SquareSheetConstrained.par	(revision 9610)
@@ -25,8 +25,8 @@
 %Friction
 pos=find(md.elementoniceshelf);
-md.drag_coefficient=20*ones(md.numberofnodes,1);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient=20*ones(md.numberofnodes,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 %Numerical parameters
Index: /issm/trunk/test/Par/SquareSheetShelf.par
===================================================================
--- /issm/trunk/test/Par/SquareSheetShelf.par	(revision 9609)
+++ /issm/trunk/test/Par/SquareSheetShelf.par	(revision 9610)
@@ -32,8 +32,8 @@
 %Friction
 pos=find(md.elementoniceshelf);
-md.drag_coefficient=20*ones(md.numberofnodes,1);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient=20*ones(md.numberofnodes,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 %Numerical parameters
Index: /issm/trunk/test/Par/SquareShelf.par
===================================================================
--- /issm/trunk/test/Par/SquareShelf.par	(revision 9609)
+++ /issm/trunk/test/Par/SquareShelf.par	(revision 9610)
@@ -25,8 +25,8 @@
 %Friction
 pos=find(md.elementoniceshelf);
-md.drag_coefficient=20*ones(md.numberofnodes,1);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient=20*ones(md.numberofnodes,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 %Numerical parameters
Index: /issm/trunk/test/Par/SquareShelfConstrained.par
===================================================================
--- /issm/trunk/test/Par/SquareShelfConstrained.par	(revision 9609)
+++ /issm/trunk/test/Par/SquareShelfConstrained.par	(revision 9610)
@@ -29,8 +29,8 @@
 %Friction
 pos=find(md.elementoniceshelf);
-md.drag_coefficient=20*ones(md.numberofnodes,1);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient=20*ones(md.numberofnodes,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 %Numerical parameters
Index: /issm/trunk/test/Par/SquareThermal.par
===================================================================
--- /issm/trunk/test/Par/SquareThermal.par	(revision 9609)
+++ /issm/trunk/test/Par/SquareThermal.par	(revision 9610)
@@ -15,10 +15,10 @@
 
 disp('      creating drag');
-md.drag_coefficient=200*ones(md.numberofnodes,1); %q=1.
+md.friction.coefficient=200*ones(md.numberofnodes,1); %q=1.
 %Take care of iceshelves: no basal drag
 pos=find(md.elementoniceshelf);
-md.drag_coefficient(md.elements(pos,:))=0;
-md.drag_p=ones(md.numberofelements,1);
-md.drag_q=ones(md.numberofelements,1);
+md.friction.coefficient(md.elements(pos,:))=0;
+md.friction.p=ones(md.numberofelements,1);
+md.friction.q=ones(md.numberofelements,1);
 
 disp('      creating temperatures');
