Index: /issm/trunk/src/c/objects/FemModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/FemModel.cpp	(revision 3815)
+++ /issm/trunk/src/c/objects/FemModel.cpp	(revision 3816)
@@ -418,11 +418,5 @@
 
 	VecToMPISerial(&serial_vector,vector);
-
 	elements->UpdateInputsFromSolution(serial_vector,name,type);
-	nodes->UpdateInputsFromSolution(serial_vector,name,type);
-	vertices->UpdateInputsFromSolution(serial_vector,name,type);
-	loads->UpdateInputsFromSolution(serial_vector,name,type);
-	materials->UpdateInputsFromSolution(serial_vector,name,type);
-	parameters->UpdateInputsFromSolution(serial_vector,name,type);
 
 	/*Free ressources:*/
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 3815)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 3816)
@@ -167,8 +167,42 @@
 /*}}}*/
 /*FUNCTION TriaVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){{{1*/
-void TriaVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){ISSMERROR(" not supported yet!");}
+void TriaVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){
+	/*It is assume that output values has been correctly allocated*/
+
+	int i,j;
+	double gauss[3];
+
+	for (i=0;i<numgauss;i++){
+
+		/*Get current Gauss point coordinates*/
+		for (j=0;j<3;j++) gauss[j]=gauss_pointers[i*3+j];
+
+		/*Assign parameter value*/
+		GetParameterValue(&values[i],&gauss[0]);
+	}
+
+}
 /*}}}*/
 /*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!");}
+void TriaVertexInput::GetParameterDerivativeValue(double* p, double* xyz_list, double* gauss){
+	/*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter derivative value at gaussian 
+	 * point specified by gauss_l1l2l3:
+	 *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
+	 *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
+	 *
+	 * p is a vector of size 2x1 already allocated.
+	 */
+
+	const int NDOF2=2;
+	const int numgrids=3;
+	double dh1dh3[NDOF2][numgrids]; //nodal derivative functions in actual coordinate system.
+
+	/*Get nodal funnctions derivatives in actual coordinate system: */
+	GetNodalFunctionsDerivatives(&dh1dh3[0][0],xyz_list,gauss);
+
+	p[0]=this->values[0]*dh1dh3[0][0]+this->values[1]*dh1dh3[0][1]+this->values[2]*dh1dh3[0][2];
+	p[1]=this->values[0]*dh1dh3[1][0]+this->values[1]*dh1dh3[1][1]+this->values[2]*dh1dh3[1][2];
+
+}
 /*}}}*/
 /*FUNCTION TriaVertexInput::GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss,int formulation_enum) {{{1*/
@@ -282,12 +316,9 @@
 	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
 	 * actual coordinate system: */
-
 	int i;
 	const int NDOF2=2;
 	const int numgrids=3;
-
 	double dh1dh3_ref[NDOF2][numgrids];
 	double Jinv[NDOF2][NDOF2];
-
 
 	/*Get derivative values with respect to parametric coordinate system: */
@@ -302,8 +333,7 @@
 	 * [dhi/dy]       [dhi/ds]
 	 */
-
 	for (i=0;i<numgrids;i++){
-		*(dh1dh3+numgrids*0+i)=Jinv[0][0]*dh1dh3_ref[0][i]+Jinv[0][1]*dh1dh3_ref[1][i];
-		*(dh1dh3+numgrids*1+i)=Jinv[1][0]*dh1dh3_ref[0][i]+Jinv[1][1]*dh1dh3_ref[1][i];
+		dh1dh3[numgrids*0+i]=Jinv[0][0]*dh1dh3_ref[0][i]+Jinv[0][1]*dh1dh3_ref[1][i];
+		dh1dh3[numgrids*1+i]=Jinv[1][0]*dh1dh3_ref[0][i]+Jinv[1][1]*dh1dh3_ref[1][i];
 	}
 
