Index: /issm/trunk/src/c/DataSet/DataSet.h
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.h	(revision 3854)
+++ /issm/trunk/src/c/DataSet/DataSet.h	(revision 3855)
@@ -143,6 +143,7 @@
 	
 		void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss,int enum_type);
-		void GetStrainRate2d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum,int formulation_enum=MacAyealFormulationEnum);
-		void GetStrainRate3d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum,int vzenum,int formulation_enum=StokesFormulationEnum);
+		void GetStrainRate2d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum);
+		void GetStrainRate3d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum,int vzenum);
+		void GetStrainRate3dPattyn(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum);
 
 		void ChangeEnum(int enumtype,int new_enumtype);
Index: /issm/trunk/src/c/DataSet/Inputs.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/Inputs.cpp	(revision 3854)
+++ /issm/trunk/src/c/DataSet/Inputs.cpp	(revision 3855)
@@ -306,6 +306,10 @@
 }
 /*}}}*/
-/*FUNCTION Inputs::GetStrainRate2d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum, int formulation_enum){{{1*/
-void Inputs::GetStrainRate2d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum,int formulation_enum){
+/*FUNCTION Inputs::GetStrainRate2d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum){{{1*/
+void Inputs::GetStrainRate2d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum){
+	/*Compute the 2d Strain Rate (3 components):
+	 *
+	 * epsilon=[exx eyy exy]
+	 */
 
 	vector<Object*>::iterator object;
@@ -341,41 +345,120 @@
 
 	/*Get strain rate assuming that epsilon has been allocated*/
-	vxinput->GetVxStrainRate2d(epsilonvx,xyz_list,gauss,formulation_enum);
-	vyinput->GetVyStrainRate2d(epsilonvy,xyz_list,gauss,formulation_enum);
+	vxinput->GetVxStrainRate2d(epsilonvx,xyz_list,gauss);
+	vyinput->GetVyStrainRate2d(epsilonvy,xyz_list,gauss);
+
+	/*Sum all contributions*/
 	for(i=0;i<3;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i];
 
 }
 /*}}}*/
-/*FUNCTION Inputs::GetStrainRate3d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum, int formulation_enum){{{1*/
-void Inputs::GetStrainRate3d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum,int vzenum,int formulation_enum){
-
+/*FUNCTION Inputs::GetStrainRate3d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum, int vzenum){{{1*/
+void Inputs::GetStrainRate3d(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum,int vzenum){
+	/*Compute the 3d Strain Rate (6 components):
+	 *
+	 * epsilon=[exx eyy ezz exy exz euz]
+	 */
+
+	int    i;
 	vector<Object*>::iterator object;
 	Input* vxinput=NULL;
 	Input* vyinput=NULL;
 	Input* vzinput=NULL;
+	bool   foundvx=false;
+	bool   foundvy=false;
+	bool   foundvz=false;
+	double epsilonvx[6];
+	double epsilonvy[6];
+	double epsilonvz[6];
 
 	/*Go through inputs and find data for vxenum: */
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 		vxinput=(Input*)(*object); 
-		if (vxinput->EnumType()==vxenum)break;
+		if (vxinput->EnumType()==vxenum){
+			foundvx=true;
+			break;
+		}
 	}
 	/*Go through inputs and find data for vyenum: */
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 		vyinput=(Input*)(*object); 
-		if (vyinput->EnumType()==vyenum)break;
-	}
-	/*Go through inputs and find data for vzenum: */
+		if (vyinput->EnumType()==vyenum){
+			foundvy=true;
+			break;
+		}
+	}
+	/*Go through inputs and find data for vzenum, not for Pattyn*/
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
 		vzinput=(Input*)(*object); 
-		if (vzinput->EnumType()==vzenum)break;
-	}
-
-	if (!vxinput || !vyinput || !vzinput){
-		/*we could not find one input with the correct enum type. No defaults values were provided, 
-		 * error out: */
-		ISSMERROR("Could not find input with enum %i or enum %i or enum %i",vxenum,vyenum,vzenum);
-	}
-
-	ISSMERROR("STOP, take care of Pattyn + see changes in 2d");
+		if (vzinput->EnumType()==vzenum){
+			foundvz=true;
+			break;
+		}
+	}
+
+	/*Check that all inputs have been found*/
+	if (!foundvx || !foundvy || !foundvz){
+		ISSMERROR("Could not find input with enum %i (%s), enum %i (%s) or  enum %i (%s)",vxenum,EnumAsString(vxenum),vyenum,EnumAsString(vyenum),vzenum,EnumAsString(vzenum));
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vxinput->GetVxStrainRate3d(epsilonvx,xyz_list,gauss);
+	vyinput->GetVyStrainRate3d(epsilonvy,xyz_list,gauss);
+	vzinput->GetVzStrainRate3d(epsilonvz,xyz_list,gauss);
+
+	/*Sum all contributions*/
+	for(i=0;i<6;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i]+epsilonvz[i];
+
+}
+/*}}}*/
+/*FUNCTION Inputs::GetStrainRate3dPattyn(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum){{{1*/
+void Inputs::GetStrainRate3dPattyn(double* epsilon,double* xyz_list, double* gauss, int vxenum, int vyenum){
+	/*Compute the 3d Blatter/PattynStrain Rate (5 components):
+	 *
+	 * epsilon=[exx eyy exy exz euz]
+	 *
+	 * with exz=1/2 du/dz
+	 *      eyz=1/2 dv/dz
+	 *
+	 * the contribution of vz is neglected
+	 */
+
+	int    i;
+	vector<Object*>::iterator object;
+	Input* vxinput=NULL;
+	Input* vyinput=NULL;
+	bool   foundvx=false;
+	bool   foundvy=false;
+	double epsilonvx[5];
+	double epsilonvy[5];
+
+	/*Go through inputs and find data for vxenum: */
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+		vxinput=(Input*)(*object); 
+		if (vxinput->EnumType()==vxenum){
+			foundvx=true;
+			break;
+		}
+	}
+	/*Go through inputs and find data for vyenum: */
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+		vyinput=(Input*)(*object); 
+		if (vyinput->EnumType()==vyenum){
+			foundvy=true;
+			break;
+		}
+	}
+
+	/*Check that all inputs have been found*/
+	if (!foundvx || !foundvy){
+		ISSMERROR("Could not find input with enum %i (%s) or enum %i (%s)",vxenum,EnumAsString(vxenum),vyenum,EnumAsString(vyenum));
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vxinput->GetVxStrainRate3dPattyn(epsilonvx,xyz_list,gauss);
+	vyinput->GetVyStrainRate3dPattyn(epsilonvy,xyz_list,gauss);
+
+	/*Sum all contributions*/
+	for(i=0;i<5;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i];
 
 }
Index: /issm/trunk/src/c/objects/Inputs/BeamVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BeamVertexInput.h	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/BeamVertexInput.h	(revision 3855)
@@ -63,9 +63,11 @@
 	
 		void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
-		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/BoolInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BoolInput.h	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/BoolInput.h	(revision 3855)
@@ -63,9 +63,11 @@
 	
 		void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
-		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/DoubleInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/DoubleInput.h	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/DoubleInput.h	(revision 3855)
@@ -63,9 +63,11 @@
 	
 		void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
-		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/Input.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/Input.h	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/Input.h	(revision 3855)
@@ -36,9 +36,11 @@
 	
 		virtual void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss)=0;
-		virtual void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum)=0;
-		virtual void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum)=0;
-		virtual void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum)=0;
-		virtual void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum)=0;
-		virtual void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum)=0;
+		virtual void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss)=0;
+		virtual void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss)=0;
+		virtual void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss)=0;
+		virtual void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss)=0;
+		virtual void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss)=0;
+		virtual void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss)=0;
+		virtual void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss)=0;
 		virtual void ChangeEnum(int newenumtype)=0;
 		virtual Input* SpawnTriaInput(int* indices)=0;
Index: /issm/trunk/src/c/objects/Inputs/IntInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/IntInput.h	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/IntInput.h	(revision 3855)
@@ -63,9 +63,11 @@
 	
 		void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
-		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp	(revision 3855)
@@ -234,20 +234,6 @@
 }
 /*}}}*/
-/*FUNCTION PentaVertexInput::GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum) {{{1*/
-void PentaVertexInput::GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum){
-
-	if(formulation_enum==StokesAnalysisEnum){
-		GetVxStrainRate3dStokes(epsilonvx,xyz_list,gauss);
-	}
-	else if(formulation_enum==PattynFormulationEnum){
-		GetVxStrainRate3dPattyn(epsilonvx,xyz_list,gauss);
-	}
-	else{
-		ISSMERROR("Formulation enum %i (%s) not supported yet",formulation_enum,EnumAsString(formulation_enum));
-	}
-}
-/*}}}*/
-/*FUNCTION PentaVertexInput::GetVxStrainRate3dStokes(double* epsilonvx,double* xyz_list, double* gauss) {{{1*/
-void PentaVertexInput::GetVxStrainRate3dStokes(double* epsilonvx,double* xyz_list, double* gauss){
+/*FUNCTION PentaVertexInput::GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss) {{{1*/
+void PentaVertexInput::GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){
 	int i,j;
 
@@ -293,45 +279,6 @@
 }
 /*}}}*/
-/*FUNCTION PentaVertexInput::GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss) {{{1*/
-void PentaVertexInput::GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){
-
-	int i;
-	const int numgrids=6;
-	const int NDOF2=2;
-	double B[5][NDOF2*numgrids];
-	double velocity[numgrids][NDOF2];
-
-	/*Get B matrix: */
-	GetBPattyn(&B[0][0], xyz_list, gauss);
-
-	/*Here, we are computing the strain rate of (vx,0)*/
-	for(i=0;i<numgrids;i++){
-		velocity[i][0]=this->values[i];
-		velocity[i][1]=0.0;
-	}
-
-	/*Multiply B by velocity, to get strain rate: */
-	MatrixMultiply( &B[0][0],5,NDOF2*numgrids,0,
-				&velocity[0][0],NDOF2*numgrids,1,0,
-				epsilonvx,0);
-
-}
-/*}}}*/
-/*FUNCTION PentaVertexInput::GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum) {{{1*/
-void PentaVertexInput::GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum){
-
-	if(formulation_enum==StokesAnalysisEnum){
-		GetVyStrainRate3dStokes(epsilonvy,xyz_list,gauss);
-	}
-	else if(formulation_enum==PattynFormulationEnum){
-		GetVyStrainRate3dPattyn(epsilonvy,xyz_list,gauss);
-	}
-	else{
-		ISSMERROR("Formulation enum %i (%s) not supported yet",formulation_enum,EnumAsString(formulation_enum));
-	}
-}
-/*}}}*/
-/*FUNCTION PentaVertexInput::GetVyStrainRate3dStokes(double* epsilonvy,double* xyz_list, double* gauss) {{{1*/
-void PentaVertexInput::GetVyStrainRate3dStokes(double* epsilonvy,double* xyz_list, double* gauss){
+/*FUNCTION PentaVertexInput::GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss) {{{1*/
+void PentaVertexInput::GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){
 	int i,j;
 
@@ -377,45 +324,6 @@
 }
 /*}}}*/
-/*FUNCTION PentaVertexInput::GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss) {{{1*/
-void PentaVertexInput::GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){
-
-	int i;
-	const int numgrids=6;
-	const int NDOF2=2;
-	double B[5][NDOF2*numgrids];
-	double velocity[numgrids][NDOF2];
-
-	/*Get B matrix: */
-	GetBPattyn(&B[0][0], xyz_list, gauss);
-
-	/*Here, we are computing the strain rate of (0,vy)*/
-	for(i=0;i<numgrids;i++){
-		velocity[i][0]=0.0;
-		velocity[i][1]=this->values[i];
-	}
-
-	/*Multiply B by velocity, to get strain rate: */
-	MatrixMultiply( &B[0][0],5,NDOF2*numgrids,0,
-				&velocity[0][0],NDOF2*numgrids,1,0,
-				epsilonvy,0);
-
-}
-/*}}}*/
-/*FUNCTION PentaVertexInput::GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum) {{{1*/
-void PentaVertexInput::GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum){
-
-	if(formulation_enum==StokesAnalysisEnum){
-		GetVzStrainRate3dStokes(epsilonvz,xyz_list,gauss);
-	}
-	else if(formulation_enum==PattynFormulationEnum){
-		GetVzStrainRate3dPattyn(epsilonvz,xyz_list,gauss);
-	}
-	else{
-		ISSMERROR("Formulation enum %i (%s) not supported yet",formulation_enum,EnumAsString(formulation_enum));
-	}
-}
-/*}}}*/
-/*FUNCTION PentaVertexInput::GetVzStrainRate3dStokes(double* epsilonvz,double* xyz_list, double* gauss) {{{1*/
-void PentaVertexInput::GetVzStrainRate3dStokes(double* epsilonvz,double* xyz_list, double* gauss){
+/*FUNCTION PentaVertexInput::GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss) {{{1*/
+void PentaVertexInput::GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){
 	int i,j;
 
@@ -462,11 +370,51 @@
 }
 /*}}}*/
-/*FUNCTION PentaVertexInput::GetVzStrainRate3dPattyn(double* epsilonvz,double* xyz_list, double* gauss) {{{1*/
-void PentaVertexInput::GetVzStrainRate3dPattyn(double* epsilonvz,double* xyz_list, double* gauss){
-
-	/*vz does not contribute to the strain rate in Pattyn/Blatter's model*/
-	for (int i=0;i<5;i++){
-		epsilonvz[i]=0.0;
-	}
+/*FUNCTION PentaVertexInput::GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss) {{{1*/
+void PentaVertexInput::GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){
+
+	int i;
+	const int numgrids=6;
+	const int NDOF2=2;
+	double B[5][NDOF2*numgrids];
+	double velocity[numgrids][NDOF2];
+
+	/*Get B matrix: */
+	GetBPattyn(&B[0][0], xyz_list, gauss);
+
+	/*Here, we are computing the strain rate of (vx,0)*/
+	for(i=0;i<numgrids;i++){
+		velocity[i][0]=this->values[i];
+		velocity[i][1]=0.0;
+	}
+
+	/*Multiply B by velocity, to get strain rate: */
+	MatrixMultiply( &B[0][0],5,NDOF2*numgrids,0,
+				&velocity[0][0],NDOF2*numgrids,1,0,
+				epsilonvx,0);
+
+}
+/*}}}*/
+/*FUNCTION PentaVertexInput::GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss) {{{1*/
+void PentaVertexInput::GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){
+
+	int i;
+	const int numgrids=6;
+	const int NDOF2=2;
+	double B[5][NDOF2*numgrids];
+	double velocity[numgrids][NDOF2];
+
+	/*Get B matrix: */
+	GetBPattyn(&B[0][0], xyz_list, gauss);
+
+	/*Here, we are computing the strain rate of (0,vy)*/
+	for(i=0;i<numgrids;i++){
+		velocity[i][0]=0.0;
+		velocity[i][1]=this->values[i];
+	}
+
+	/*Multiply B by velocity, to get strain rate: */
+	MatrixMultiply( &B[0][0],5,NDOF2*numgrids,0,
+				&velocity[0][0],NDOF2*numgrids,1,0,
+				epsilonvy,0);
 
 }
Index: /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h	(revision 3855)
@@ -62,15 +62,11 @@
 	
 		void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
-		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum);
-		void GetVxStrainRate3dStokes(double* epsilonvx,double* xyz_list, double* gauss);
+		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss);
+		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss);
+		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss);
 		void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss);
-		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum);
-		void GetVyStrainRate3dStokes(double* epsilonvy,double* xyz_list, double* gauss);
 		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss);
-		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum);
-		void GetVzStrainRate3dStokes(double* epsilonvz,double* xyz_list, double* gauss);
-		void GetVzStrainRate3dPattyn(double* epsilonvz,double* xyz_list, double* gauss);
 		void ChangeEnum(int newenumtype);
 		void GetNodalFunctionsP1(double* l1l6, double* gauss_coord);
Index: /issm/trunk/src/c/objects/Inputs/SingVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/SingVertexInput.h	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/SingVertexInput.h	(revision 3855)
@@ -62,9 +62,11 @@
 	
 		void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
-		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 3855)
@@ -203,6 +203,6 @@
 }
 /*}}}*/
-/*FUNCTION TriaVertexInput::GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum) {{{1*/
-void TriaVertexInput::GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum){
+/*FUNCTION TriaVertexInput::GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss) {{{1*/
+void TriaVertexInput::GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){
 
 	/*Intermediary*/
@@ -227,6 +227,6 @@
 }
 /*}}}*/
-/*FUNCTION TriaVertexInput::GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum) {{{1*/
-void TriaVertexInput::GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum){
+/*FUNCTION TriaVertexInput::GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss) {{{1*/
+void TriaVertexInput::GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){
 
 	/*Intermediary*/
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 3854)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 3855)
@@ -63,9 +63,11 @@
 	
 		void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss);
-		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum);
-		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=MacAyealFormulationEnum);
-		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
-		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss,int formulation_enum=StokesFormulationEnum){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss);
+		void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss);
+		void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
+		void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
 		void ChangeEnum(int newenumtype);
 
Index: /issm/trunk/src/c/parallel/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic_core.cpp	(revision 3854)
+++ /issm/trunk/src/c/parallel/diagnostic_core.cpp	(revision 3855)
@@ -140,7 +140,5 @@
 
 		if(verbose)_printf_("%s\n"," extruding horizontal velocities...");
-		
-		FieldExtrudex( ug,fem_dh->elements,fem_dh->nodes, fem_dh->vertices,fem_dh->loads,fem_dh->materials,fem_dh->parameters,"velocity",1);
-
+		FieldExtrudex(ug,fem_dh->elements,fem_dh->nodes, fem_dh->vertices,fem_dh->loads,fem_dh->materials,fem_dh->parameters,"velocity",1);
 		SplitSolutionVectorx(ug,numberofnodes,numberofdofspernode_dh,&vx,&vy);
 		model->UpdateInputsFromVector(vx,VxEnum,VertexEnum);
