Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 3809)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 3810)
@@ -171,4 +171,52 @@
 /*FUNCTION TriaVertexInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){{{1*/
 void TriaVertexInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){ISSMERROR(" not supported yet!");}
+/*}}}*/
+/*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){
+
+	/*Intermediary*/
+	int       i;
+	const int numgrids=3;
+	const int NDOF2=2;
+	double B[3][NDOF2*numgrids];
+	double velocity[3][NDOF2];
+
+	/*Get B matrix: */
+	GetB(&B[0][0], xyz_list, gauss);
+
+	/*Here, we are computing the strain rate of (vx,0)*/
+	for(i=0;i<3;i++){
+		velocity[i][0]=this->values[i];
+		velocity[i][1]=0.0;
+	}
+	/*Get epsilon(vx) = B*velocity*/
+	MatrixMultiply( &B[0][0],3,NDOF2*numgrids,0,
+				&velocity[0][0],NDOF2*numgrids,1,0,
+				epsilonvx,0);
+}
+/*}}}*/
+/*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){
+
+	/*Intermediary*/
+	int       i;
+	const int numgrids=3;
+	const int NDOF2=2;
+	double B[3][NDOF2*numgrids];
+	double velocity[3][NDOF2];
+
+	/*Get B matrix: */
+	GetB(&B[0][0], xyz_list, gauss);
+
+	/*Here, we are computing the strain rate of (0,vy)*/
+	for(i=0;i<3;i++){
+		velocity[i][0]=0.0;
+		velocity[i][1]=this->values[i];
+	}
+	/*Get epsilon(vy) = B*velocity*/
+	MatrixMultiply( &B[0][0],3,NDOF2*numgrids,0,
+				&velocity[0][0],NDOF2*numgrids,1,0,
+				epsilonvy,0);
+}
 /*}}}*/
 /*FUNCTION TriaVertexInput::ChangeEnum(int newenumtype){{{1*/
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 3809)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 3810)
@@ -60,6 +60,6 @@
 	
 		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 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");};
