Index: /issm/trunk/src/c/objects/Elements/Beam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 3927)
+++ /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 3928)
@@ -247,4 +247,13 @@
 }
 /*}}}*/
+/*FUNCTION Beam::IsInput{{{1*/
+bool Beam::IsInput(int name){
+	if (name==SurfaceSlopexEnum ||
+				name==SurfaceSlopeyEnum){
+		return true;
+	}
+	else return false;
+}
+/*}}}*/
 /*FUNCTION Beam::Marshall{{{1*/
 void  Beam::Marshall(char** pmarshalled_dataset){
@@ -761,5 +770,30 @@
 /*FUNCTION Beam::UpdateInputsFromVector(double* vector, int name, int type);{{{1*/
 void  Beam::UpdateInputsFromVector(double* vector, int name, int type){
-	ISSMERROR(" not supported yet!");
+
+	/*Check that name is an element input*/
+	if (!IsInput(name)) return;
+	Node**  nodes=NULL;
+
+	switch(type){
+
+		case VertexEnum:
+
+			/*New PentaVertexInpu*/
+			double values[2];
+
+			/*Get values on the 6 vertices*/
+			nodes=(Node**)hnodes.deliverp();
+			for (int i=0;i<2;i++){
+				values[i]=vector[nodes[i]->GetVertexDof()];
+			}
+
+			/*update input*/
+			this->inputs->AddInput(new BeamVertexInput(name,values));
+			return;
+
+		default:
+
+			ISSMERROR("type %i (%s) not implemented yet",type,EnumAsString(type));
+	}
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Beam.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.h	(revision 3927)
+++ /issm/trunk/src/c/objects/Elements/Beam.h	(revision 3928)
@@ -48,4 +48,5 @@
 		int   Enum();
 		int   Id(); 
+		bool  IsInput(int name);
 		int   MyRank();
 		void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
Index: /issm/trunk/src/c/objects/Elements/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 3927)
+++ /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 3928)
@@ -561,7 +561,7 @@
 void  Sing::UpdateInputsFromVector(double* vector, int name, int type){
 
-	Node*  node=NULL;
 	/*Check that name is an element input*/
 	if (!IsInput(name)) return;
+	Node*  node=NULL;
 
 	switch(type){
Index: /issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp	(revision 3927)
+++ /issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp	(revision 3928)
@@ -155,5 +155,7 @@
 /*}}}*/
 /*FUNCTION BeamVertexInput::GetParameterValue(double* pvalue,double* gauss){{{1*/
-void BeamVertexInput::GetParameterValue(double* pvalue,double* gauss){ISSMERROR(" not supported yet!");}
+void BeamVertexInput::GetParameterValue(double* pvalue,double* gauss){
+	*pvalue=gauss[0]*values[0]+gauss[1]*values[1];
+}
 /*}}}*/
 /*FUNCTION BeamVertexInput::GetParameterValue(double* pvalue,double* gauss,double defaultvalue){{{1*/
@@ -161,5 +163,18 @@
 /*}}}*/
 /*FUNCTION BeamVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){{{1*/
-void BeamVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){ISSMERROR(" not supported yet!");}
+void BeamVertexInput::GetParameterValues(double* pvalues,double* gauss_pointers, int numgauss){
+	/*It is assumed that output has been correctly allocated*/
+
+	int i,j;
+	double gauss[2];
+
+	for(i=0;i<numgauss;i++){
+		/*Get current Gauss point coordinates*/
+		for (j=0;j<2;j++) gauss[j]=gauss_pointers[i*2+j];
+
+		/*Assign parameter value*/
+		GetParameterValue(&values[i],&gauss[0]);
+	}
+}
 /*}}}*/
 /*FUNCTION BeamVertexInput::GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, double* gauss){{{1*/
