Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 5310)
+++ /issm/trunk/src/c/Makefile.am	(revision 5311)
@@ -465,4 +465,6 @@
 					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h\
 					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp\
+					./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h\
+					./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp\
 					./modules/UpdateGeometryx/UpdateGeometryx.h\
 					./modules/UpdateGeometryx/UpdateGeometryx.cpp\
@@ -1010,4 +1012,6 @@
 					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h\
 					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp\
+					./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h\
+					./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp\
 					./modules/UpdateGeometryx/UpdateGeometryx.h\
 					./modules/UpdateGeometryx/UpdateGeometryx.cpp\
Index: /issm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp	(revision 5311)
+++ /issm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp	(revision 5311)
@@ -0,0 +1,91 @@
+/*!\file InputUpdateFromVectorDakotax
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromVectorDakotax.h"
+#include "../../shared/shared.h"
+#include "../../include/include.h"
+#include "../../toolkits/toolkits.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+
+void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Vec vector, int NameEnum, int TypeEnum){
+
+	double* serial_vector=NULL;
+
+	VecToMPISerial(&serial_vector,vector);
+
+	InputUpdateFromVectorDakotax( elements,nodes, vertices, loads, materials, parameters,serial_vector,NameEnum, TypeEnum);
+
+	/*Free ressources:*/
+	xfree((void**)&serial_vector);
+}
+
+	
+void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vector, int NameEnum, int TypeEnum){
+
+	int i;
+
+	/*Update elements, nodes, loads and materials from inputs: */
+	for(i=0;i<elements->Size();i++){
+		Element* element=(Element*)elements->GetObjectByOffset(i);
+		element->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+	for(i=0;i<nodes->Size();i++){
+		Node* node=(Node*)nodes->GetObjectByOffset(i);
+		node->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+	for(i=0;i<loads->Size();i++){
+		Load* load=(Load*)loads->GetObjectByOffset(i);
+		load->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+	for(i=0;i<materials->Size();i++){
+		Material* material=(Material*)materials->GetObjectByOffset(i);
+		material->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+}
+
+void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int* vector, int NameEnum, int TypeEnum){
+	
+	int i;
+
+	/*Update elements, nodes, loads and materials from inputs: */
+	for(i=0;i<elements->Size();i++){
+		Element* element=(Element*)elements->GetObjectByOffset(i);
+		element->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+	for(i=0;i<nodes->Size();i++){
+		Node* node=(Node*)nodes->GetObjectByOffset(i);
+		node->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+	for(i=0;i<loads->Size();i++){
+		Load* load=(Load*)loads->GetObjectByOffset(i);
+		load->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+	for(i=0;i<materials->Size();i++){
+		Material* material=(Material*)materials->GetObjectByOffset(i);
+		material->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+}
+
+void InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool* vector, int NameEnum, int TypeEnum){
+
+	int i;
+
+	/*Update elements, nodes, loads and materials from inputs: */
+	for(i=0;i<elements->Size();i++){
+		Element* element=(Element*)elements->GetObjectByOffset(i);
+		element->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+	for(i=0;i<nodes->Size();i++){
+		Node* node=(Node*)nodes->GetObjectByOffset(i);
+		node->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+	for(i=0;i<loads->Size();i++){
+		Load* load=(Load*)loads->GetObjectByOffset(i);
+		load->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+	for(i=0;i<materials->Size();i++){
+		Material* material=(Material*)materials->GetObjectByOffset(i);
+		material->InputUpdateFromVectorDakota(vector,NameEnum,TypeEnum);
+	}
+}
Index: /issm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h	(revision 5311)
+++ /issm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h	(revision 5311)
@@ -0,0 +1,18 @@
+/*!\file:  InputUpdateFromVectorDakotax.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMVECTORDAKOTAXX_H
+#define _UPDATEINPUTSFROMVECTORDAKOTAXX_H
+
+#include "../../objects/objects.h"
+#include "../../Container/Container.h"
+
+/* local prototypes: */
+void	InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,Vec vector, int NameEnum,int TypeEnum);
+void	InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,double* vector, int NameEnum,int TypeEnum);
+void	InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,int* vector, int NameEnum,int TypeEnum);
+void	InputUpdateFromVectorDakotax( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,bool* vector, int NameEnum,int TypeEnum);
+
+#endif  /* _UPDATEINPUTSFROMVECTORDAKOTAXX_H */
+
Index: sm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorx.cpp
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorx.cpp	(revision 5310)
+++ 	(revision )
@@ -1,91 +1,0 @@
-/*!\file InputUpdateFromVectorx
- * \brief: update datasets using  parameter inputs
- */
-
-#include "./InputUpdateFromVectorx.h"
-#include "../../shared/shared.h"
-#include "../../include/include.h"
-#include "../../toolkits/toolkits.h"
-#include "../../EnumDefinitions/EnumDefinitions.h"
-
-void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Vec vector, int NameEnum, int TypeEnum){
-
-	double* serial_vector=NULL;
-
-	VecToMPISerial(&serial_vector,vector);
-
-	InputUpdateFromVectorx( elements,nodes, vertices, loads, materials, parameters,serial_vector,NameEnum, TypeEnum);
-
-	/*Free ressources:*/
-	xfree((void**)&serial_vector);
-}
-
-	
-void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vector, int NameEnum, int TypeEnum){
-
-	int i;
-
-	/*Update elements, nodes, loads and materials from inputs: */
-	for(i=0;i<elements->Size();i++){
-		Element* element=(Element*)elements->GetObjectByOffset(i);
-		element->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-	for(i=0;i<nodes->Size();i++){
-		Node* node=(Node*)nodes->GetObjectByOffset(i);
-		node->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-	for(i=0;i<loads->Size();i++){
-		Load* load=(Load*)loads->GetObjectByOffset(i);
-		load->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-	for(i=0;i<materials->Size();i++){
-		Material* material=(Material*)materials->GetObjectByOffset(i);
-		material->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-}
-
-void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,int* vector, int NameEnum, int TypeEnum){
-	
-	int i;
-
-	/*Update elements, nodes, loads and materials from inputs: */
-	for(i=0;i<elements->Size();i++){
-		Element* element=(Element*)elements->GetObjectByOffset(i);
-		element->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-	for(i=0;i<nodes->Size();i++){
-		Node* node=(Node*)nodes->GetObjectByOffset(i);
-		node->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-	for(i=0;i<loads->Size();i++){
-		Load* load=(Load*)loads->GetObjectByOffset(i);
-		load->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-	for(i=0;i<materials->Size();i++){
-		Material* material=(Material*)materials->GetObjectByOffset(i);
-		material->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-}
-
-void InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool* vector, int NameEnum, int TypeEnum){
-
-	int i;
-
-	/*Update elements, nodes, loads and materials from inputs: */
-	for(i=0;i<elements->Size();i++){
-		Element* element=(Element*)elements->GetObjectByOffset(i);
-		element->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-	for(i=0;i<nodes->Size();i++){
-		Node* node=(Node*)nodes->GetObjectByOffset(i);
-		node->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-	for(i=0;i<loads->Size();i++){
-		Load* load=(Load*)loads->GetObjectByOffset(i);
-		load->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-	for(i=0;i<materials->Size();i++){
-		Material* material=(Material*)materials->GetObjectByOffset(i);
-		material->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-}
Index: sm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorx.h
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorx.h	(revision 5310)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/*!\file:  InputUpdateFromVectorx.h
- * \brief header file for updating datasets from inputs
- */ 
-
-#ifndef _UPDATEINPUTSFROMVECTORXX_H
-#define _UPDATEINPUTSFROMVECTORXX_H
-
-#include "../../objects/objects.h"
-#include "../../Container/Container.h"
-
-/* local prototypes: */
-void	InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,Vec vector, int NameEnum,int TypeEnum);
-void	InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,double* vector, int NameEnum,int TypeEnum);
-void	InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,int* vector, int NameEnum,int TypeEnum);
-void	InputUpdateFromVectorx( Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,bool* vector, int NameEnum,int TypeEnum);
-
-#endif  /* _UPDATEINPUTSFROMVECTORXX_H */
-
Index: /issm/trunk/src/c/modules/modules.h
===================================================================
--- /issm/trunk/src/c/modules/modules.h	(revision 5310)
+++ /issm/trunk/src/c/modules/modules.h	(revision 5311)
@@ -40,4 +40,5 @@
 #include "./InputUpdateFromDakotax/InputUpdateFromDakotax.h"
 #include "./InputUpdateFromVectorx/InputUpdateFromVectorx.h"
+#include "./InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h"
 #include "./MassFluxx/MassFluxx.h"
 #include "./MaxAbsVxx/MaxAbsVxx.h"
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 5310)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 5311)
@@ -443,4 +443,42 @@
 /*FUNCTION Penta::InputUpdateFromVector(bool* vector, int name, int type);{{{1*/
 void  Penta::InputUpdateFromVector(bool* vector, int name, int type){
+	ISSMERROR(" not supported yet!");
+}
+/*}}}*/
+/*FUNCTION Penta::InputUpdateFromVectorDakota(double* vector, int name, int type);{{{1*/
+void  Penta::InputUpdateFromVectorDakota(double* vector, int name, int type){
+
+	/*Check that name is an element input*/
+	if (!IsInput(name)) return;
+
+	switch(type){
+
+		case VertexEnum:
+
+			/*New PentaVertexInpu*/
+			double values[6];
+
+			/*Get values on the 6 vertices*/
+			for (int i=0;i<6;i++){
+				values[i]=vector[this->nodes[i]->GetVertexDof()];
+			}
+
+			/*update input*/
+			this->inputs->AddInput(new PentaVertexInput(name,values));
+			return;
+
+		default:
+
+			ISSMERROR("type %i (%s) not implemented yet",type,EnumToString(type));
+	}
+}
+/*}}}*/
+/*FUNCTION Penta::InputUpdateFromVectorDakota(int* vector, int name, int type);{{{1*/
+void  Penta::InputUpdateFromVectorDakota(int* vector, int name, int type){
+	ISSMERROR(" not supported yet!");
+}
+/*}}}*/
+/*FUNCTION Penta::InputUpdateFromVectorDakota(bool* vector, int name, int type);{{{1*/
+void  Penta::InputUpdateFromVectorDakota(bool* vector, int name, int type){
 	ISSMERROR(" not supported yet!");
 }
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 5311)
@@ -64,4 +64,7 @@
 		void  InputUpdateFromVector(double* vector, int name, int type);
 		void  InputUpdateFromVector(int* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(bool* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
 		/*}}}*/
 		/*Element virtual functions definitions: {{{1*/
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 5310)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 5311)
@@ -440,4 +440,47 @@
 /*FUNCTION Tria::InputUpdateFromVector(bool* vector, int name, int type);{{{1*/
 void  Tria::InputUpdateFromVector(bool* vector, int name, int type){
+	ISSMERROR(" not supported yet!");
+}
+/*}}}*/
+/*FUNCTION Tria::InputUpdateFromVectorDakota(double* vector, int name, int type);{{{1*/
+void  Tria::InputUpdateFromVectorDakota(double* vector, int name, int type){
+
+	/*Check that name is an element input*/
+	if (!IsInput(name)) return;
+
+	switch(type){
+
+		case VertexEnum:
+
+			/*New TriaVertexInput*/
+			double values[3];
+
+			/*Get values on the 6 vertices*/
+			for (int i=0;i<3;i++){
+				values[i]=vector[this->nodes[i]->GetVertexDof()];
+			}
+
+			/*update input*/
+			if (name==RheologyB2dEnum || name==RheologyBEnum){
+				matice->inputs->AddInput(new TriaVertexInput(name,values));
+			}
+			else{
+				this->inputs->AddInput(new TriaVertexInput(name,values));
+			}
+			return;
+
+		default:
+
+			ISSMERROR("type %i (%s) not implemented yet",type,EnumToString(type));
+	}
+}
+/*}}}*/
+/*FUNCTION Tria::InputUpdateFromVectorDakota(int* vector, int name, int type);{{{1*/
+void  Tria::InputUpdateFromVectorDakota(int* vector, int name, int type){
+	ISSMERROR(" not supported yet!");
+}
+/*}}}*/
+/*FUNCTION Tria::InputUpdateFromVectorDakota(bool* vector, int name, int type);{{{1*/
+void  Tria::InputUpdateFromVectorDakota(bool* vector, int name, int type){
 	ISSMERROR(" not supported yet!");
 }
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 5311)
@@ -58,4 +58,7 @@
 		void  InputUpdateFromVector(int* vector, int name, int type);
 		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(bool* vector, int name, int type);
 		void  InputUpdateFromConstant(double constant, int name);
 		void  InputUpdateFromConstant(int constant, int name);
Index: /issm/trunk/src/c/objects/Loads/Icefront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Icefront.cpp	(revision 5310)
+++ /issm/trunk/src/c/objects/Loads/Icefront.cpp	(revision 5311)
@@ -334,4 +334,19 @@
 /*FUNCTION Icefront::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
 void  Icefront::InputUpdateFromVector(bool* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Icefront::InputUpdateFromVectorDakota(double* vector, int name, int type) {{{1*/
+void  Icefront::InputUpdateFromVectorDakota(double* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Icefront::InputUpdateFromVectorDakota(int* vector, int name, int type) {{{1*/
+void  Icefront::InputUpdateFromVectorDakota(int* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Icefront::InputUpdateFromVectorDakota(bool* vector, int name, int type) {{{1*/
+void  Icefront::InputUpdateFromVectorDakota(bool* vector, int name, int type){
 	/*Nothing updated yet*/
 }
Index: /issm/trunk/src/c/objects/Loads/Icefront.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Icefront.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Loads/Icefront.h	(revision 5311)
@@ -53,4 +53,7 @@
 		void  InputUpdateFromVector(int* vector, int name, int type);
 		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(bool* vector, int name, int type);
 		void  InputUpdateFromConstant(double constant, int name);
 		void  InputUpdateFromConstant(int constant, int name);
Index: /issm/trunk/src/c/objects/Loads/Numericalflux.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Numericalflux.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Loads/Numericalflux.h	(revision 5311)
@@ -48,4 +48,7 @@
 		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    InputUpdateFromVectorDakota(double* vector, int name, int type){/*Do nothing*/}
+		void    InputUpdateFromVectorDakota(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    InputUpdateFromVectorDakota(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
Index: /issm/trunk/src/c/objects/Loads/Pengrid.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Pengrid.cpp	(revision 5310)
+++ /issm/trunk/src/c/objects/Loads/Pengrid.cpp	(revision 5311)
@@ -344,4 +344,19 @@
 /*FUNCTION Pengrid::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
 void  Pengrid::InputUpdateFromVector(bool* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Pengrid::InputUpdateFromVectorDakota(double* vector, int name, int type) {{{1*/
+void  Pengrid::InputUpdateFromVectorDakota(double* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Pengrid::InputUpdateFromVectorDakota(int* vector, int name, int type) {{{1*/
+void  Pengrid::InputUpdateFromVectorDakota(int* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Pengrid::InputUpdateFromVectorDakota(bool* vector, int name, int type) {{{1*/
+void  Pengrid::InputUpdateFromVectorDakota(bool* vector, int name, int type){
 	/*Nothing updated yet*/
 }
Index: /issm/trunk/src/c/objects/Loads/Pengrid.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Pengrid.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Loads/Pengrid.h	(revision 5311)
@@ -54,4 +54,7 @@
 		void  InputUpdateFromVector(int* vector, int name, int type);
 		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(bool* vector, int name, int type);
 		void  InputUpdateFromConstant(double constant, int name);
 		void  InputUpdateFromConstant(int constant, int name);
Index: /issm/trunk/src/c/objects/Loads/Penpair.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Penpair.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Loads/Penpair.h	(revision 5311)
@@ -46,4 +46,7 @@
 		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void  InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void  InputUpdateFromVectorDakota(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void  InputUpdateFromVectorDakota(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void  InputUpdateFromVectorDakota(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void  InputUpdateFromConstant(double constant, int name);
 		void  InputUpdateFromConstant(int constant, int name);
Index: /issm/trunk/src/c/objects/Loads/Riftfront.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Riftfront.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Loads/Riftfront.h	(revision 5311)
@@ -63,4 +63,7 @@
 		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    InputUpdateFromVectorDakota(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    InputUpdateFromVectorDakota(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
+		void    InputUpdateFromVectorDakota(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromConstant(int constant, int name);
Index: /issm/trunk/src/c/objects/Materials/Matice.cpp
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 5310)
+++ /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 5311)
@@ -591,4 +591,44 @@
 }
 /*}}}*/
+/*FUNCTION Matice::InputUpdateFromVectorDakota(double* vector, int name, int type) {{{1*/
+void  Matice::InputUpdateFromVectorDakota(double* vector, int name, int type){
+
+	/*Intermediaries*/
+	Element *element      = NULL;
+
+	/*Recover element*/
+	element=(Element*)helement->delivers();
+
+	/*Check that name is an element input*/
+	if (!IsInput(name)) return;
+
+	switch(type){
+
+		case VertexEnum:
+
+			switch(element->Enum()){
+
+				case TriaEnum:
+					double values[3];
+					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexDof()];
+					this->inputs->AddInput(new TriaVertexInput(name,values));
+					return;
+
+				default: ISSMERROR("element %s not implemented yet",EnumToString(element->Enum()));
+			}
+		default: ISSMERROR("type %i (%s) not implemented yet",type,EnumToString(type));
+	}
+}
+/*}}}*/
+/*FUNCTION Matice::InputUpdateFromVectorDakota(int* vector, int name, int type) {{{1*/
+void  Matice::InputUpdateFromVectorDakota(int* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Matice::InputUpdateFromVectorDakota(bool* vector, int name, int type) {{{1*/
+void  Matice::InputUpdateFromVectorDakota(bool* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
 /*FUNCTION Matice::InputUpdateFromConstant(double constant, int name) {{{1*/
 void  Matice::InputUpdateFromConstant(double constant, int name){
Index: /issm/trunk/src/c/objects/Materials/Matice.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matice.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Materials/Matice.h	(revision 5311)
@@ -45,4 +45,7 @@
 		void  InputUpdateFromVector(int* vector, int name, int type);
 		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(bool* vector, int name, int type);
 		void  InputUpdateFromConstant(double constant, int name);
 		void  InputUpdateFromConstant(int constant, int name);
Index: /issm/trunk/src/c/objects/Materials/Matpar.cpp
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matpar.cpp	(revision 5310)
+++ /issm/trunk/src/c/objects/Materials/Matpar.cpp	(revision 5311)
@@ -219,4 +219,19 @@
 }
 /*}}}*/
+/*FUNCTION Matpar::InputUpdateFromVectorDakota(double* vector, int name, int type) {{{1*/
+void   Matpar::InputUpdateFromVectorDakota(double* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Matpar::InputUpdateFromVectorDakota(int* vector, int name, int type) {{{1*/
+void   Matpar::InputUpdateFromVectorDakota(int* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Matpar::InputUpdateFromVectorDakota(bool* vector, int name, int type) {{{1*/
+void   Matpar::InputUpdateFromVectorDakota(bool* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
 /*FUNCTION Matpar::InputUpdateFromConstant(double constant, int name) {{{1*/
 void   Matpar::InputUpdateFromConstant(double constant, int name){
Index: /issm/trunk/src/c/objects/Materials/Matpar.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matpar.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Materials/Matpar.h	(revision 5311)
@@ -49,4 +49,7 @@
 		void   InputUpdateFromVector(int* vector, int name, int type);
 		void   InputUpdateFromVector(bool* vector, int name, int type);
+		void   InputUpdateFromVectorDakota(double* vector, int name, int type);
+		void   InputUpdateFromVectorDakota(int* vector, int name, int type);
+		void   InputUpdateFromVectorDakota(bool* vector, int name, int type);
 		void   InputUpdateFromConstant(double constant, int name);
 		void   InputUpdateFromConstant(int constant, int name);
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 5310)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 5311)
@@ -587,4 +587,22 @@
 }
 /*}}}*/
+/*FUNCTION Node::InputUpdateFromVectorDakota(double* vector, int name, int type){{{1*/
+void  Node::InputUpdateFromVectorDakota(double* vector, int name, int type){
+
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Node::InputUpdateFromVectorDakota(int* vector, int name, int type){{{1*/
+void  Node::InputUpdateFromVectorDakota(int* vector, int name, int type){
+
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Node::InputUpdateFromVectorDakota(bool* vector, int name, int type){{{1*/
+void  Node::InputUpdateFromVectorDakota(bool* vector, int name, int type){
+
+	/*Nothing updated yet*/
+}
+/*}}}*/
 /*FUNCTION Node::InputUpdateFromConstant(double constant, int name){{{1*/
 void  Node::InputUpdateFromConstant(double constant, int name){
Index: /issm/trunk/src/c/objects/Node.h
===================================================================
--- /issm/trunk/src/c/objects/Node.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Node.h	(revision 5311)
@@ -55,4 +55,7 @@
 		void  InputUpdateFromVector(int* vector, int name, int type);
 		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(bool* vector, int name, int type);
 		void  InputUpdateFromConstant(double constant, int name);
 		void  InputUpdateFromConstant(int constant, int name);
Index: /issm/trunk/src/c/objects/Update.h
===================================================================
--- /issm/trunk/src/c/objects/Update.h	(revision 5310)
+++ /issm/trunk/src/c/objects/Update.h	(revision 5311)
@@ -18,4 +18,7 @@
 		virtual void  InputUpdateFromVector(int* vector, int name, int type)=0;
 		virtual void  InputUpdateFromVector(bool* vector, int name, int type)=0;
+		virtual void  InputUpdateFromVectorDakota(double* vector, int name, int type)=0;
+		virtual void  InputUpdateFromVectorDakota(int* vector, int name, int type)=0;
+		virtual void  InputUpdateFromVectorDakota(bool* vector, int name, int type)=0;
 		virtual void  InputUpdateFromConstant(double constant, int name)=0;
 		virtual void  InputUpdateFromConstant(int constant, int name)=0;
