Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 8385)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 8386)
@@ -3617,19 +3617,20 @@
 /*}}}*/
 /*FUNCTION Penta::GetVectorFromInputs{{{1*/
-void  Penta::GetVectorFromInputs(Vec vector,int NameEnum){
-
-	int i;
+void  Penta::GetVectorFromInputs(Vec vector,int input_enum){
+
 	int doflist1[NUMVERTICES];
 
-	/*Find NameEnum input in the inputs dataset, and get it to fill in the vector: */
-	for(i=0;i<this->inputs->Size();i++){
-		Input* input=(Input*)this->inputs->GetObjectByOffset(i);
-		if(input->EnumType()==NameEnum){
-			/*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
-			this->GetDofList1(&doflist1[0]);
-			input->GetVectorFromInputs(vector,&doflist1[0]);
-			break;
-		}
-	}
+	/*Get out if this is not an element input*/
+	if (!IsInput(input_enum)) return;
+
+	/*Prepare index list*/
+	this->GetDofList1(&doflist1[0]);
+
+	/*Get input (either in element or material)*/
+	Input* input=inputs->GetInput(input_enum);
+	if(!input) _error_("Input %s not found in element",EnumToStringx(input_enum));
+
+	/*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
+	input->GetVectorFromInputs(vector,&doflist1[0]);
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 8385)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 8386)
@@ -3176,18 +3176,20 @@
 /*}}}*/
 /*FUNCTION Tria::GetVectorFromInputs{{{1*/
-void  Tria::GetVectorFromInputs(Vec vector,int NameEnum){
+void  Tria::GetVectorFromInputs(Vec vector,int input_enum){
 
 	int doflist1[NUMVERTICES];
 
-	/*Find NameEnum input in the inputs dataset, and get it to fill in the vector: */
-	for(int i=0;i<this->inputs->Size();i++){
-		Input* input=(Input*)this->inputs->GetObjectByOffset(i);
-		if(input->EnumType()==NameEnum){
-			/*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
-			this->GetDofList1(&doflist1[0]);
-			input->GetVectorFromInputs(vector,&doflist1[0]);
-			break;
-		}
-	}
+	/*Get out if this is not an element input*/
+	if (!IsInput(input_enum)) return;
+
+	/*Prepare index list*/
+	this->GetDofList1(&doflist1[0]);
+
+	/*Get input (either in element or material)*/
+	Input* input=inputs->GetInput(input_enum);
+	if(!input) _error_("Input %s not found in element",EnumToStringx(input_enum));
+
+	/*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
+	input->GetVectorFromInputs(vector,&doflist1[0]);
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/FemModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/FemModel.cpp	(revision 8385)
+++ /issm/trunk/src/c/objects/FemModel.cpp	(revision 8386)
@@ -131,5 +131,4 @@
 	printf("     %i: %s\n",analysis_counter,EnumToStringx(analysis_type_list[analysis_counter]));
 
-
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Inputs/ControlInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/ControlInput.cpp	(revision 8385)
+++ /issm/trunk/src/c/objects/Inputs/ControlInput.cpp	(revision 8386)
@@ -396,4 +396,8 @@
 	return gradient->SpawnResult(step,time);
 }/*}}}*/
+/*FUNCTION ControlInput::GetParameterValue(bool* pvalue){{{1*/
+void ControlInput::GetVectorFromInputs(Vec vector,int* doflist){
+	values->GetVectorFromInputs(vector,doflist);
+}/*}}}*/
 /*FUNCTION ControlInput::GetParameterAverage(double* pvalue){{{1*/
 void ControlInput::GetParameterAverage(double* pvalue){
Index: /issm/trunk/src/c/objects/Inputs/ControlInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/ControlInput.h	(revision 8385)
+++ /issm/trunk/src/c/objects/Inputs/ControlInput.h	(revision 8386)
@@ -82,5 +82,5 @@
 		void Extrude(void);
 		void VerticallyIntegrate(Input* thickness_input);
-		void GetVectorFromInputs(Vec vector,int* doflist){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vec vector,int* doflist);
 		void GetValuesPtr(double** pvalues,int* pnum_values){_error_("not implemented yet");};
 		ElementResult* SpawnGradient(int step, double time);
Index: /issm/trunk/src/c/objects/Materials/Material.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Material.h	(revision 8385)
+++ /issm/trunk/src/c/objects/Materials/Material.h	(revision 8386)
@@ -22,4 +22,5 @@
 		virtual void   InputDuplicate(int original_enum,int new_enum)=0;
 		virtual void   Configure(Elements* elements)=0;
+		virtual void   GetVectorFromInputs(Vec vector,int input_enum)=0;
 
 };
Index: /issm/trunk/src/c/objects/Materials/Matice.cpp
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 8385)
+++ /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 8386)
@@ -224,4 +224,36 @@
 	inputs->GetParameterAverage(&n,RheologyNEnum);
 	return n;
+}
+/*}}}*/
+/*FUNCTION Matice::GetVectorFromInputs{{{1*/
+void  Matice::GetVectorFromInputs(Vec vector,int input_enum){
+
+	/*Intermediaries*/
+	Element *element= NULL;
+
+	/*Recover element*/
+	element=(Element*)helement->delivers();
+
+	/*Check that input_enum is a material input*/
+	if (!IsInput(input_enum)) return;
+
+	switch(element->Enum()){
+
+		case TriaEnum:
+
+			/*Prepare index list*/
+			int doflist1[3];
+			for(int i=0;i<3;i++) doflist1[i]=((Tria*)element)->nodes[i]->GetVertexDof();
+
+			/*Get input (either in element or material)*/
+			Input* input=inputs->GetInput(input_enum);
+			if(!input) _error_("Input %s not found in material",EnumToStringx(input_enum));
+
+			/*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
+			input->GetVectorFromInputs(vector,&doflist1[0]);
+			break;
+
+		default: _error_("element %s not implemented yet",EnumToStringx(element->Enum()));
+	}
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Materials/Matice.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matice.h	(revision 8385)
+++ /issm/trunk/src/c/objects/Materials/Matice.h	(revision 8386)
@@ -57,4 +57,5 @@
 		void   InputDuplicate(int original_enum,int new_enum);
 		void   Configure(Elements* elements);
+		void   GetVectorFromInputs(Vec vector,int input_enum);
 		/*}}}*/
 		/*Matice Numerics: {{{1*/
Index: /issm/trunk/src/c/objects/Materials/Matpar.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matpar.h	(revision 8385)
+++ /issm/trunk/src/c/objects/Materials/Matpar.h	(revision 8386)
@@ -64,4 +64,5 @@
 		void   InputDuplicate(int original_enum,int new_enum){_error_("not implemented yet");};
 		void   Configure(Elements* elements);
+		void   GetVectorFromInputs(Vec vector,int input_enum){return;}
 		/*}}}*/
 		/*Numerics: {{{1*/
