Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 4448)
+++ /issm/trunk/src/c/Makefile.am	(revision 4449)
@@ -458,4 +458,6 @@
 					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h\
 					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp\
+					./modules/DakotaResponsesx/DakotaResponsesx.h\
+					./modules/DakotaResponsesx/DakotaResponsesx.cpp\
 					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h\
 					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\
@@ -1003,4 +1005,6 @@
 					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h\
 					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp\
+					./modules/DakotaResponsesx/DakotaResponsesx.h\
+					./modules/DakotaResponsesx/DakotaResponsesx.cpp\
 					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h\
 					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\
Index: sm/trunk/src/c/modules/DakotaResponsesx/DakotaResponses.cpp
===================================================================
--- /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponses.cpp	(revision 4448)
+++ 	(revision )
@@ -1,97 +1,0 @@
-/*!\file:  DakotaResponses.cpp
- * \brief  compute dakota responses, using a list of response descriptors.
- */ 
-
-#ifdef HAVE_CONFIG_H
-	#include "config.h"
-#else
-#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
-#endif
-
-#include "../../Container/Container.h"    
-#include "../../shared/shared.h"
-#include "../../include/include.h"
-#include "../../EnumDefinitions/EnumDefinitions.h"
-#include "../modules.h"
-
-void DakotaResponses(double* responses,char** responses_descriptors,int numresponses,FemModel* femmodel){
-
-	int i;
-	int dummy;
-	extern int my_rank;
-	
-	/*intermediary: */
-	char* response_descriptor=NULL;
-	double femmodel_response;
-			
-
-	for(i=0;i<numresponses;i++){
-
-		response_descriptor=responses_descriptors[i];
-
-		/*Compute response for this response_descriptor:*/
-
-		if(strcmp(response_descriptor,"min_vel")==0){
-			MinVelx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"max_vel")==0){
-			MaxVelx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"min_vx")==0){
-			MinVxx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"max_vx")==0){
-			MaxVxx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"max_abs_vx")==0){
-			MaxAbsVxx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"min_vy")==0){
-			MinVyx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"max_vy")==0){
-			MaxVyx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"max_abs_vy")==0){
-			MaxAbsVyx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"min_vz")==0){
-			MinVzx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"max_vz")==0){
-			MaxVzx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"max_abs_vz")==0){
-			MaxAbsVzx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"misfit")==0){
-			Misfitx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
-		}
-		else if(strcmp(response_descriptor,"mass_flux")==0){
-
-			double*   segments=NULL;
-			int       num_segments;
-			
-			/*retrieve qmu_mass_flux_segments: */
-			femmodel->parameters->FindParam(&segments,&num_segments,&dummy,QmuMassFluxSegmentsEnum);
-
-			/*call mass flux module: */
-			MassFluxx(&femmodel_response,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,segments,num_segments);
-
-			/*Free ressources:*/
-			xfree((void**)&segments);
-
-		}
-		else{
-			ISSMERROR("%s%s%s"," response descriptor : ",response_descriptor," not supported yet!");
-		}
-			
-		/*send response back to Dakota only on cpu 0: */
-		if(my_rank==0)responses[i]=femmodel_response;
-	}
-
-}
-
-
-
-
Index: /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp	(revision 4449)
+++ /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp	(revision 4449)
@@ -0,0 +1,95 @@
+/*!\file DakotaResponsesx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./DakotaResponsesx.h"
+#include "../../Container/Container.h"    
+#include "../../shared/shared.h"
+#include "../../include/include.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+#include "../../toolkits/toolkits.h"
+#include "../modules.h"
+
+
+void DakotaResponsesx(double* responses,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,char** responses_descriptors,int numresponses){
+
+	int        i;
+	int        dummy;
+	extern int my_rank;
+
+	/*intermediary: */
+	char* response_descriptor=NULL;
+	double femmodel_response;
+			
+	for(i=0;i<numresponses;i++){
+
+		response_descriptor=responses_descriptors[i];
+
+		/*Compute response for this response_descriptor:*/
+
+		if(strcmp(response_descriptor,"min_vel")==0){
+			MinVelx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"max_vel")==0){
+			MaxVelx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"min_vx")==0){
+			MinVxx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"max_vx")==0){
+			MaxVxx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"max_abs_vx")==0){
+			MaxAbsVxx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"min_vy")==0){
+			MinVyx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"max_vy")==0){
+			MaxVyx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"max_abs_vy")==0){
+			MaxAbsVyx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"min_vz")==0){
+			MinVzx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"max_vz")==0){
+			MaxVzx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"max_abs_vz")==0){
+			MaxAbsVzx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"misfit")==0){
+			Misfitx( &femmodel_response, femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
+		}
+		else if(strcmp(response_descriptor,"mass_flux")==0){
+
+			double*   segments=NULL;
+			int       num_segments;
+			
+			/*retrieve qmu_mass_flux_segments: */
+			femmodel->parameters->FindParam(&segments,&num_segments,&dummy,QmuMassFluxSegmentsEnum);
+
+			/*call mass flux module: */
+			MassFluxx(&femmodel_response,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,segments,num_segments);
+
+			/*Free ressources:*/
+			xfree((void**)&segments);
+
+		}
+		else{
+			ISSMERROR("%s%s%s"," response descriptor : ",response_descriptor," not supported yet!");
+		}
+			
+		/*send response back to Dakota only on cpu 0: */
+		if(my_rank==0)responses[i]=femmodel_response;
+	}
+
+}
Index: /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.h
===================================================================
--- /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.h	(revision 4449)
+++ /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.h	(revision 4449)
@@ -0,0 +1,13 @@
+/*!\file:  DakotaResponsesx.h
+ * \brief header file for computing dakota responses
+ */ 
+
+#ifndef _DAKOTARESPONSESXX_H
+#define _DAKOTARESPONSESXX_H
+
+#include "../../objects/objects.h"
+#include "../../Container/Container.h"
+
+void DakotaResponsesx(double* responses,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,char** responses_descriptors,int numresponses);
+
+#endif  /* _DAKOTARESPONSESXX_H */
Index: sm/trunk/src/c/modules/DakotaResponsesx/InputUpdateFromDakotax.cpp
===================================================================
--- /issm/trunk/src/c/modules/DakotaResponsesx/InputUpdateFromDakotax.cpp	(revision 4448)
+++ 	(revision )
@@ -1,24 +1,0 @@
-/*!\file InputUpdateFromDakotax
- * \brief: update datasets using  parameter inputs
- */
-
-#include "./InputUpdateFromDakotax.h"
-#include "../../shared/shared.h"
-#include "../../include/include.h"
-#include "../../toolkits/toolkits.h"
-#include "../../EnumDefinitions/EnumDefinitions.h"
-
-void InputUpdateFromDakotax(FemModel* femmodel, double* variables,char** variables_descriptors,int numvariables){
-
-	int     verbose;
-	int     qmu_npart;
-	double* qmu_part=NULL;
-	int     dummy;
-
-	/*retrieve parameters: */
-	femmodel->parameters->FindParam(&verbose,VerboseEnum);
-	femmodel->parameters->FindParam(&qmu_npart,QmuNPartEnum);
-	femmodel->parameters->FindParam(&qmu_part,&dummy,QmuPartEnum);
-
-	ISSMERROR(" not supported yet!");
-}
Index: sm/trunk/src/c/modules/DakotaResponsesx/InputUpdateFromDakotax.h
===================================================================
--- /issm/trunk/src/c/modules/DakotaResponsesx/InputUpdateFromDakotax.h	(revision 4448)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/*!\file:  InputUpdateFromDakotax.h
- * \brief header file for updating datasets from inputs
- */ 
-
-#ifndef _INPUTUPDATEFROMDAKOTAXX_H
-#define _INPUTUPDATEFROMDAKOTAXX_H
-
-#include "../../objects/objects.h"
-#include "../../Container/Container.h"
-
-void InputUpdateFromDakotax(FemModel* femmodel,double* variables,char** variables_descriptors,int numvariables);
-
-#endif  /* _INPUTUPDATEFROMDAKOTAXX_H */
-
Index: /issm/trunk/src/mex/DakotaResponses/DakotaResponses.cpp
===================================================================
--- /issm/trunk/src/mex/DakotaResponses/DakotaResponses.cpp	(revision 4449)
+++ /issm/trunk/src/mex/DakotaResponses/DakotaResponses.cpp	(revision 4449)
@@ -0,0 +1,82 @@
+/*\file InputUpdateFromDakota.c
+*\brief: update inputs using dakota input variables
+*/
+
+#include "./InputUpdateFromDakota.h"
+
+void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){
+
+	/*diverse: */
+	int   noerr=1;
+
+	/*input datasets: */
+	Elements*   elements=NULL;
+	Nodes*      nodes=NULL;
+	Vertices*   vertices=NULL;
+	Loads*      loads=NULL;
+	Materials*  materials=NULL;
+	Parameters* parameters=NULL;
+	double*     responses=NULL;
+	char**      responses_descriptors=NULL;
+	char*       string=NULL;
+	int         numresponses;
+	mxArray*    pfield=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&InputUpdateFromDakotaUsage);
+
+	/*Input datasets: */
+	FetchData((DataSet**)&elements,ELEMENTSIN);
+	FetchData((DataSet**)&nodes,NODESIN);
+	FetchData((DataSet**)&vertices,VERTICESIN);
+	FetchData((DataSet**)&loads,LOADSIN);
+	FetchData((DataSet**)&materials,MATERIALSIN);
+	FetchParams(&parameters,PARAMETERSIN);
+	
+	/*dakota input: */
+	numresponses=mxGetM(RESPONSESDESCRIPTORS);
+	responses_descriptors=(char**)xmalloc(numresponses*sizeof(char*));
+	for(i=0;i<numresponses;i++){
+		pfield=mxGetCell(RESPONSESDESCRIPTORS,i);
+		stringlength = (mxGetM(pfield) * mxGetN(pfield) * sizeof(mxChar)) + 1 ;
+		mxGetString(pfield,string,stringlength);
+		
+		responses_descriptors[i]=string;
+	}
+
+	/*Allocate responses: */
+	responses=(double*)xmalloc(numresponses*sizeof(double));
+	
+	/*!Generate internal degree of freedom numbers: */
+	DakotaResponsesx(responses,elements,nodes, vertices,loads,materials, parameters,responses_descriptors,numresponses);
+
+	/*write output datasets: */
+	WriteData(RESPONSES,responses,numresponses);
+
+	/*Free ressources: */
+	delete elements;
+	delete nodes;
+	delete vertices;
+	delete loads;
+	delete materials;
+	delete parameters;
+	
+	xfree((void**)&responses);
+	for(i=0;i<numresponses;i++){
+		char* string=responses_descriptors[i]; xfree((void**)&string);
+	}
+	xfree((void**)&responses_descriptors);
+
+	/*end module: */
+	MODULEEND();
+}
+
+void InputUpdateFromDakotaUsage(void)
+{
+	_printf_("\n");
+	_printf_("   usage: [elements loads] = %s(elements,nodes,vertices,loads,materials,parameters,variables,variables_descriptors);\n",__FUNCT__);
+	_printf_("\n");
+}
Index: /issm/trunk/src/mex/DakotaResponses/DakotaResponses.h
===================================================================
--- /issm/trunk/src/mex/DakotaResponses/DakotaResponses.h	(revision 4449)
+++ /issm/trunk/src/mex/DakotaResponses/DakotaResponses.h	(revision 4449)
@@ -0,0 +1,38 @@
+/*
+	DakotaResponses.h
+*/
+
+#ifndef _DAKOTARESPONSES_H
+#define _DAKOTARESPONSES_H
+
+/* local prototypes: */
+void DakotaResponsesUsage(void);
+
+#include "../../c/modules/modules.h"
+#include "../../c/Container/Container.h"
+#include "../../c/shared/shared.h"
+#include "../../c/EnumDefinitions/EnumDefinitions.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "DakotaResponses"
+
+/* serial input macros: */
+#define ELEMENTSIN (mxArray*)prhs[0]
+#define NODESIN (mxArray*)prhs[1]
+#define VERTICESIN (mxArray*)prhs[2]
+#define LOADSIN (mxArray*)prhs[3]
+#define MATERIALSIN (mxArray*)prhs[4]
+#define PARAMETERSIN (mxArray*)prhs[5]
+#define RESPONSESDESCRIPTORS (mxArray*)prhs[6]
+
+/* serial output macros: */
+#define RESPONSES (mxArray**)&plhs[0]
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  7
+
+#endif  /* _DAKOTARESPONSES_H */
+
Index: /issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.cpp
===================================================================
--- /issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.cpp	(revision 4448)
+++ /issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.cpp	(revision 4449)
@@ -19,4 +19,5 @@
 	double*     variables=NULL;
 	char**      variables_descriptors=NULL;
+	char*       string=NULL;
 	int         numvariables;
 	mxArray*    pfield=NULL;
@@ -41,6 +42,10 @@
 	variables_descriptors=(char**)xmalloc(numvariables*sizeof(char*));
 	for(i=0;i<numvariables;i++){
+		
 		pfield=mxGetCell(VARIABLESDESCRIPTORS,i);
-		variables_descriptors[i]=mxGetString(pfield);
+		stringlength = (mxGetM(pfield) * mxGetN(pfield) * sizeof(mxChar)) + 1 ;
+		mxGetString(pfield,string,stringlength);
+		
+		variables_descriptors[i]=string;
 	}
 	
Index: /issm/trunk/src/mex/Makefile.am
===================================================================
--- /issm/trunk/src/mex/Makefile.am	(revision 4448)
+++ /issm/trunk/src/mex/Makefile.am	(revision 4449)
@@ -15,11 +15,11 @@
 				ContourToMesh \
 				ContourToNodes \
-				InputControlConstrain \
 				CostFunction \
-				InputDepthAverage\
-				NodesDof\
+				DakotaResponses\
 				Du\
 				Echo\
 				ElementConnectivity\
+				InputControlConstrain \
+				InputDepthAverage\
 				InputExtrude\
 				FieldAverageOntoVertices\
@@ -42,4 +42,5 @@
 				MpcNodes\
 				NodeConnectivity\
+				NodesDof\
 				NormalizeConstraints\
 				Orth\
@@ -135,4 +136,7 @@
 			  NodesDof/NodesDof.h
 
+DakotaResponses_SOURCES = DakotaResponses/DakotaResponses.cpp\
+			  DakotaResponses/DakotaResponses.h
+
 Du_SOURCES = Du/Du.cpp\
 			  Du/Du.h
