Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 10575)
+++ /issm/trunk/src/c/Makefile.am	(revision 10576)
@@ -361,4 +361,6 @@
 					  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h\
 					  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp\
+					  ./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h\
+					  ./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp\
 					  ./modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp\
 					  ./modules/AverageOntoPartitionx/AverageOntoPartitionx.h\
Index: /issm/trunk/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp	(revision 10576)
+++ /issm/trunk/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp	(revision 10576)
@@ -0,0 +1,41 @@
+/*!\file InputUpdateFromMatrixDakotax
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromMatrixDakotax.h"
+#include "../../shared/shared.h"
+#include "../../include/include.h"
+#include "../../toolkits/toolkits.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+#include "../modules.h"
+
+void InputUpdateFromMatrixDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* matrix,int nrows,int ncols, int name, int type){
+
+	int i;
+	int numberofvertices;
+
+	numberofvertices=vertices->NumberOfVertices();
+
+	if((ncols==1) && (nrows==numberofvertices)) InputUpdateFromVectorDakotax( elements,nodes, vertices,loads, materials,  parameters,matrix, name,type);
+	else{
+
+		/*Update elements, nodes, loads and materials from inputs: */
+		for(i=0;i<elements->Size();i++){
+			Element* element=(Element*)elements->GetObjectByOffset(i);
+			element->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type);
+		}
+		for(i=0;i<nodes->Size();i++){
+			Node* node=(Node*)nodes->GetObjectByOffset(i);
+			node->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type);
+		}
+		for(i=0;i<loads->Size();i++){
+			Load* load=(Load*)loads->GetObjectByOffset(i);
+			load->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type);
+		}
+		for(i=0;i<materials->Size();i++){
+			Material* material=(Material*)materials->GetObjectByOffset(i);
+			material->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type);
+		}
+	}
+
+}
Index: /issm/trunk/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h	(revision 10576)
+++ /issm/trunk/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h	(revision 10576)
@@ -0,0 +1,15 @@
+/*!\file:  InputUpdateFromMatrixDakotax.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMMATRIXDAKOTAXX_H
+#define _UPDATEINPUTSFROMMATRIXDAKOTAXX_H
+
+#include "../../objects/objects.h"
+#include "../../Container/Container.h"
+
+/* local prototypes: */
+void InputUpdateFromMatrixDakotax( Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* matrix,int nrows,int ncols, int name, int type);
+
+#endif  /* _UPDATEINPUTSFROMMATRIXDAKOTAXX_H */
+
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 10575)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 10576)
@@ -110,5 +110,5 @@
 
 	#ifdef _HAVE_DAKOTA_
-	CreateParametersQmu(&parameters,iomodel,solution_type,analysis_type);
+	CreateParametersDakota(&parameters,iomodel,solution_type,analysis_type);
 	#endif
 
Index: /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 10575)
+++ /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 10576)
@@ -20,5 +20,5 @@
 void  CreateParameters(Parameters** pparameters,IoModel* iomodel,const int solution_type,int analysis_type,int analysis_counter);
 void  CreateParametersControl(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
-void  CreateParametersQmu(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
+void  CreateParametersDakota(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
 void  UpdateElementsAndMaterialsControl(Elements* elements,Materials* materials, IoModel* iomodel);
 
Index: /issm/trunk/src/c/modules/modules.h
===================================================================
--- /issm/trunk/src/c/modules/modules.h	(revision 10575)
+++ /issm/trunk/src/c/modules/modules.h	(revision 10576)
@@ -50,4 +50,5 @@
 #include "./InputUpdateFromVectorx/InputUpdateFromVectorx.h"
 #include "./InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h"
+#include "./InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h"
 #include "./InputArtificialNoisex/InputArtificialNoisex.h"
 #include "./IoModelToConstraintsx/IoModelToConstraintsx.h"
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 10575)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 10576)
@@ -5081,8 +5081,13 @@
 }
 /*}}}*/
-/*FUNCTION Penta::InputUpdateFromVectorMatrix(double* matrix, int nrows, int ncols, int name, int type);{{{1*/
-void  Penta::InputUpdateFromVectorMatrix(double* matrix, int nrows, int ncols, int name, int type){
+/*FUNCTION Penta::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, int name, int type);{{{1*/
+void  Penta::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, int name, int type){
 	
 	int i,j,t;
+	TransientInput* transientinput=NULL;
+	double values[6];
+	double time;
+	int row;
+	double yts;
 
 	/*Check that name is an element input*/
@@ -5093,8 +5098,8 @@
 		case VertexEnum:
 			
-			double values[6];
-			double time;
-
-			/*Ok, create transient input: */
+			/*Create transient input: */
+						
+			parameters->FindParam(&yts,ConstantsYtsEnum);
+
 			for(t=0;t<ncols;t++){ //ncols is the number of times
 
@@ -5108,6 +5113,6 @@
 				time=(double)matrix[(nrows-1)*ncols+t]*yts;
 
-				if(t==0) transientinput=new TransientInput(vector_enum);
-				transientinput->AddTimeInput(new PentaVertexInput(vector_enum,nodeinputs),time);
+				if(t==0) transientinput=new TransientInput(name);
+				transientinput->AddTimeInput(new PentaVertexInput(name,values),time);
 			}
 			this->inputs->AddInput(transientinput);
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 10575)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 10576)
@@ -4980,8 +4980,13 @@
 }
 /*}}}*/
-/*FUNCTION Tria::InputUpdateFromVectorMatrix(double* matrix, int nrows, int ncols, int name, int type);{{{1*/
-void  Tria::InputUpdateFromVectorMatrix(double* matrix, int nrows, int ncols, int name, int type){
+/*FUNCTION Tria::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, int name, int type);{{{1*/
+void  Tria::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, int name, int type){
 	
 	int i,j,t;
+	TransientInput* transientinput=NULL;
+	double values[3];
+	double time;
+	int row;
+	double yts;
 
 	/*Check that name is an element input*/
@@ -4992,8 +4997,8 @@
 		case VertexEnum:
 			
-			double values[3];
-			double time;
-
-			/*Ok, create transient input: */
+			/*Create transient input: */
+						
+			parameters->FindParam(&yts,ConstantsYtsEnum);
+
 			for(t=0;t<ncols;t++){ //ncols is the number of times
 
@@ -5007,6 +5012,6 @@
 				time=(double)matrix[(nrows-1)*ncols+t]*yts;
 
-				if(t==0) transientinput=new TransientInput(vector_enum);
-				transientinput->AddTimeInput(new TriaVertexInput(vector_enum,nodeinputs),time);
+				if(t==0) transientinput=new TransientInput(name);
+				transientinput->AddTimeInput(new TriaVertexInput(name,values),time);
 			}
 			this->inputs->AddInput(transientinput);
Index: /issm/trunk/src/c/objects/Loads/Icefront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Icefront.cpp	(revision 10575)
+++ /issm/trunk/src/c/objects/Loads/Icefront.cpp	(revision 10576)
@@ -393,4 +393,9 @@
 /*FUNCTION Icefront::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
 void  Icefront::InputUpdateFromVector(bool* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Icefront::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, int name, int type) {{{1*/
+void  Icefront::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, 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 10575)
+++ /issm/trunk/src/c/objects/Loads/Icefront.h	(revision 10576)
@@ -61,4 +61,5 @@
 		void  InputUpdateFromVector(int* vector, int name, int type);
 		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromMatrixDakota(double* matrix,int ncols,int nrows, int name, int type);
 		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
 		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
Index: /issm/trunk/src/c/objects/Loads/Numericalflux.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Numericalflux.h	(revision 10575)
+++ /issm/trunk/src/c/objects/Loads/Numericalflux.h	(revision 10576)
@@ -57,4 +57,5 @@
 		void    InputUpdateFromVector(int* vector, int name, int type){_error_("Not implemented yet!");}
 		void    InputUpdateFromVector(bool* vector, int name, int type){_error_("Not implemented yet!");}
+		void    InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
 		void    InputUpdateFromVectorDakota(double* vector, int name, int type){/*Do nothing*/}
 		void    InputUpdateFromVectorDakota(int* vector, int name, int type){_error_("Not implemented yet!");}
Index: /issm/trunk/src/c/objects/Loads/Pengrid.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Pengrid.cpp	(revision 10575)
+++ /issm/trunk/src/c/objects/Loads/Pengrid.cpp	(revision 10576)
@@ -390,4 +390,9 @@
 }
 /*}}}*/
+/*FUNCTION Pengrid::InputUpdateFromMatrixDakota(double* vector, int nrows, int ncols, int name, int type) {{{1*/
+void  Pengrid::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, 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){
Index: /issm/trunk/src/c/objects/Loads/Pengrid.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Pengrid.h	(revision 10575)
+++ /issm/trunk/src/c/objects/Loads/Pengrid.h	(revision 10576)
@@ -62,4 +62,5 @@
 		void  InputUpdateFromVector(int* vector, int name, int type);
 		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromMatrixDakota(double* matrix ,int nrows, int ncols, int name, int type);
 		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
 		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
Index: /issm/trunk/src/c/objects/Loads/Penpair.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Penpair.h	(revision 10575)
+++ /issm/trunk/src/c/objects/Loads/Penpair.h	(revision 10576)
@@ -49,4 +49,5 @@
 		void  InputUpdateFromVector(int* vector, int name, int type){_error_("Not implemented yet!");}
 		void  InputUpdateFromVector(bool* vector, int name, int type){_error_("Not implemented yet!");}
+		void  InputUpdateFromMatrixDakota(double* matrix, int nrow, int ncols,int name, int type){_error_("Not implemented yet!");}
 		void  InputUpdateFromVectorDakota(double* vector, int name, int type){_error_("Not implemented yet!");}
 		void  InputUpdateFromVectorDakota(int* vector, int name, int type){_error_("Not implemented yet!");}
Index: /issm/trunk/src/c/objects/Loads/Riftfront.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Riftfront.h	(revision 10575)
+++ /issm/trunk/src/c/objects/Loads/Riftfront.h	(revision 10576)
@@ -69,4 +69,5 @@
 		void    InputUpdateFromVector(int* vector, int name, int type){_error_("Not implemented yet!");}
 		void    InputUpdateFromVector(bool* vector, int name, int type){_error_("Not implemented yet!");}
+		void    InputUpdateFromMatrixDakota(double* matrix, int nrows,int ncols, int name, int type){_error_("Not implemented yet!");}
 		void    InputUpdateFromVectorDakota(double* vector, int name, int type){_error_("Not implemented yet!");}
 		void    InputUpdateFromVectorDakota(int* vector, int name, int type){_error_("Not implemented yet!");}
Index: /issm/trunk/src/c/objects/Materials/Matice.cpp
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 10575)
+++ /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 10576)
@@ -622,4 +622,9 @@
 }
 /*}}}*/
+/*FUNCTION Matice::InputUpdateFromMatrixDakota(int* vector, int name, int type) {{{1*/
+void  Matice::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols,int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
 /*FUNCTION Matice::InputUpdateFromVectorDakota(int* vector, int name, int type) {{{1*/
 void  Matice::InputUpdateFromVectorDakota(int* vector, int name, int type){
Index: /issm/trunk/src/c/objects/Materials/Matice.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matice.h	(revision 10575)
+++ /issm/trunk/src/c/objects/Materials/Matice.h	(revision 10576)
@@ -47,4 +47,5 @@
 		void  InputUpdateFromVector(int* vector, int name, int type);
 		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromMatrixDakota(double* matrix, int nrow, int ncols, int name, int type);
 		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
 		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
Index: /issm/trunk/src/c/objects/Materials/Matpar.cpp
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matpar.cpp	(revision 10575)
+++ /issm/trunk/src/c/objects/Materials/Matpar.cpp	(revision 10576)
@@ -228,4 +228,9 @@
 /*FUNCTION Matpar::InputUpdateFromVectorDakota(bool* vector, int name, int type) {{{1*/
 void   Matpar::InputUpdateFromVectorDakota(bool* vector, int name, int type){
+	/*Nothing updated yet*/
+}
+/*}}}*/
+/*FUNCTION Matpar::InputUpdateFromMatrixDakota(int* vector, int name, int type) {{{1*/
+void  Matpar::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols,int name, int type){
 	/*Nothing updated yet*/
 }
Index: /issm/trunk/src/c/objects/Materials/Matpar.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matpar.h	(revision 10575)
+++ /issm/trunk/src/c/objects/Materials/Matpar.h	(revision 10576)
@@ -58,4 +58,5 @@
 		void   InputUpdateFromVector(int* vector, int name, int type);
 		void   InputUpdateFromVector(bool* vector, int name, int type);
+		void   InputUpdateFromMatrixDakota(double* matrix,int nrows,int ncols, int name, int type);
 		void   InputUpdateFromVectorDakota(double* vector, int name, int type);
 		void   InputUpdateFromVectorDakota(int* vector, int name, int type);
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 10575)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 10576)
@@ -827,4 +827,10 @@
 }
 /*}}}*/
+/*FUNCTION Node::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, int name, int type){{{1*/
+void  Node::InputUpdateFromMatrixDakota(double* matrix, int nrows, int ncols, 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){
Index: /issm/trunk/src/c/objects/Node.h
===================================================================
--- /issm/trunk/src/c/objects/Node.h	(revision 10575)
+++ /issm/trunk/src/c/objects/Node.h	(revision 10576)
@@ -55,4 +55,5 @@
 		void  InputUpdateFromVector(int* vector, int name, int type);
 		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromMatrixDakota(double* matrix,int nrows, int ncols, int name, int type);
 		void  InputUpdateFromVectorDakota(double* vector, int name, int type);
 		void  InputUpdateFromVectorDakota(int* vector, int name, int type);
Index: /issm/trunk/src/c/objects/Update.h
===================================================================
--- /issm/trunk/src/c/objects/Update.h	(revision 10575)
+++ /issm/trunk/src/c/objects/Update.h	(revision 10576)
@@ -19,4 +19,5 @@
 		virtual void  InputUpdateFromVector(bool* vector, int name, int type)=0; 
 		#ifdef _HAVE_DAKOTA_
+		virtual void  InputUpdateFromMatrixDakota(double* matrix, int rows, int ncols, 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;
