Index: /issm/trunk/externalpackages/dakota/configs/linux64/configure.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/linux64/configure.sh	(revision 4490)
+++ /issm/trunk/externalpackages/dakota/configs/linux64/configure.sh	(revision 4491)
@@ -1,2 +1,2 @@
 #!/bin/bash
-./configure --prefix="$ISSM_DIR/externalpackages/dakota/install" --without-graphics  --with-pic --disable-mpi
+./configure --prefix="$ISSM_DIR/externalpackages/dakota/install" --without-graphics  --with-pic --disable-mpi --with-blas=/usr/lib64/libblas.so.3.0.3 --with-lapack=/usr/lib64/liblapack.so.3.0.3
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 4490)
+++ /issm/trunk/src/c/Makefile.am	(revision 4491)
@@ -334,4 +334,5 @@
 					./EnumDefinitions/EnumAsString.cpp\
 					./EnumDefinitions/StringAsEnum.cpp\
+					./EnumDefinitions/EnumAsModelField.cpp\
 					./modules/ModelProcessorx/ModelProcessorx.h\
 					./modules/ModelProcessorx/ModelProcessorx.cpp\
@@ -883,4 +884,5 @@
 					./EnumDefinitions/EnumAsString.cpp\
 					./EnumDefinitions/StringAsEnum.cpp\
+					./EnumDefinitions/EnumAsModelField.cpp\
 					./modules/ModelProcessorx/ModelProcessorx.h\
 					./modules/ModelProcessorx/ModelProcessorx.cpp\
Index: /issm/trunk/src/c/issm.cpp
===================================================================
--- /issm/trunk/src/c/issm.cpp	(revision 4490)
+++ /issm/trunk/src/c/issm.cpp	(revision 4491)
@@ -100,5 +100,5 @@
 		#ifdef _HAVE_DAKOTA_ 
 		MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
-		Qmux(femmodel,DiagnosticAnalysisEnum,NoneAnalysisEnum);
+		Qmux(femmodel,femmodel->parameters);
 		MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
 	 	#else
Index: /issm/trunk/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 4490)
+++ /issm/trunk/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 4491)
@@ -40,5 +40,5 @@
 	qmu_part=(double*)xmalloc(numberofvertices*sizeof(double));
 	for(k=0;k<numberofvertices;k++) qmu_part[(int)(partition[k])]=qmu_part_serial[k];
-	
+
 	/*Go through all dakota descriptors, ex: "rho_ice","thermal_conductivity","thickness1","thickness2", etc ..., and 
 	 * for each descriptor, take the variable value and plug it into the inputs: */
@@ -58,5 +58,5 @@
 		}
 		else{
-			
+
 			/*Ok, variable is distributed. Root name of variable is also known. Now, allocate distributed_values and fill the 
 			 * distributed_values with the next qmu_npart variables: */
@@ -67,11 +67,14 @@
 			}
 
+		
 			/*Now, pick up the parameter corresponding to root: */
-			parameters->FindParam(&parameter_serial,NULL,NULL,StringAsEnum(root));
+			if(!parameters->FindParam(&parameter_serial,NULL,StringAsEnum(root))){
+				ISSMERROR("%s%s"," could not find Qmu parameter: ",root);
+			}
 
 			/*repartition parameter: */
 			parameter=(double*)xmalloc(numberofvertices*sizeof(double));
 			for(k=0;k<numberofvertices;k++) parameter[(int)(partition[k])]=parameter_serial[k];
-
+			
 			/*We've got the parameter, we need to update it using qmu_part (a partitioning vector), and the distributed_values: */
 			for(k=0;k<numberofvertices;k++){
Index: /issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 4490)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 4491)
@@ -142,12 +142,11 @@
 			descriptor=variabledescriptors[i];
 
-			if ((strcmp(descriptor,"thickness")==0) ||
-				(strcmp(descriptor,"drag")     ==0)
+			if ((strcmp(descriptor,"Thickness")==0) ||
+				(strcmp(descriptor,"DragCoefficient")     ==0)
 				){
 
-				IoModelFetchData(&dakota_parameter,NULL,NULL,iomodel_handle,descriptor);
-				parameters->AddObject(new DoubleVecParam(DakotaParameterEnum,dakota_parameter,iomodel->numberofvertices));
+				IoModelFetchData(&dakota_parameter,NULL,NULL,iomodel_handle,EnumAsModelField(StringAsEnum(descriptor)));
+				parameters->AddObject(new DoubleVecParam(StringAsEnum(descriptor),dakota_parameter,iomodel->numberofvertices));
 				xfree((void**)&dakota_parameter);
-
 			}
 		}
Index: /issm/trunk/src/c/objects/DakotaPlugin.cpp
===================================================================
--- /issm/trunk/src/c/objects/DakotaPlugin.cpp	(revision 4490)
+++ /issm/trunk/src/c/objects/DakotaPlugin.cpp	(revision 4491)
@@ -87,5 +87,5 @@
 
 	/*run core solution: */
-	SpawnCore(responses,numFns, variables,variable_descriptors,numACV,model,counter);
+	SpawnCore(responses,numFns, variables,variable_descriptors,numACV,femmodel,counter);
 
 	/*populate responses: */
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4490)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4491)
@@ -1790,4 +1790,5 @@
 		this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs));
 		this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs));
+		if(iomodel->qmu_analysis)this->inputs->AddInput(new PentaVertexInput(QmuVxEnum,nodeinputs));
 	}
 	if (iomodel->vy) {
@@ -1795,4 +1796,5 @@
 		this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs));
 		this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs));
+		if(iomodel->qmu_analysis)this->inputs->AddInput(new PentaVertexInput(QmuVyEnum,nodeinputs));
 	}
 	if (iomodel->vz) {
@@ -1800,4 +1802,5 @@
 		this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs));
 		this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs));
+		if(iomodel->qmu_analysis)this->inputs->AddInput(new PentaVertexInput(QmuVzEnum,nodeinputs));
 	}
 	if (iomodel->vx_obs) {
@@ -1833,4 +1836,5 @@
 				this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs));
 				this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs));
+				if(iomodel->qmu_analysis) this->inputs->AddInput(new PentaVertexInput(QmuVxEnum,nodeinputs));
 			}
 			if(!iomodel->vy){
@@ -1839,4 +1843,5 @@
 				this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs));
 				this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs));
+				if(iomodel->qmu_analysis) this->inputs->AddInput(new PentaVertexInput(QmuVyEnum,nodeinputs));
 			}
 			if(!iomodel->vz){
@@ -1845,4 +1850,12 @@
 				this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs));
 				this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs));
+				if(iomodel->qmu_analysis) this->inputs->AddInput(new PentaVertexInput(QmuVzEnum,nodeinputs));
+			}
+			if(!iomodel->pressure){
+				for(i=0;i<6;i++)nodeinputs[i]=0;
+				if(iomodel->qmu_analysis){
+					this->inputs->AddInput(new PentaVertexInput(PressureEnum,nodeinputs));
+					this->inputs->AddInput(new PentaVertexInput(QmuPressureEnum,nodeinputs));
+				}
 			}
 			break;
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4490)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4491)
@@ -2295,4 +2295,5 @@
 		this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs));
 		this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs));
+		if(iomodel->qmu_analysis)this->inputs->AddInput(new TriaVertexInput(QmuVxEnum,nodeinputs));
 	}
 	if (iomodel->vy) {
@@ -2300,4 +2301,5 @@
 		this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs));
 		this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs));
+		if(iomodel->qmu_analysis)this->inputs->AddInput(new TriaVertexInput(QmuVyEnum,nodeinputs));
 	}
 	if (iomodel->vz) {
@@ -2305,4 +2307,5 @@
 		this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs));
 		this->inputs->AddInput(new TriaVertexInput(VzOldEnum,nodeinputs));
+		if(iomodel->qmu_analysis)this->inputs->AddInput(new TriaVertexInput(QmuVzEnum,nodeinputs));
 	}
 	if (iomodel->vx_obs) {
@@ -2338,4 +2341,5 @@
 				this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs));
 				this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs));
+				if(iomodel->qmu_analysis) this->inputs->AddInput(new TriaVertexInput(QmuVxEnum,nodeinputs));
 			}
 			if(!iomodel->vy){
@@ -2344,4 +2348,5 @@
 				this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs));
 				this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs));
+				if(iomodel->qmu_analysis) this->inputs->AddInput(new TriaVertexInput(QmuVyEnum,nodeinputs));
 			}
 			if(!iomodel->vz){
@@ -2350,4 +2355,12 @@
 				this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs));
 				this->inputs->AddInput(new TriaVertexInput(VzOldEnum,nodeinputs));
+				if(iomodel->qmu_analysis) this->inputs->AddInput(new TriaVertexInput(QmuVzEnum,nodeinputs));
+			}
+			if(!iomodel->pressure){
+				for(i=0;i<3;i++)nodeinputs[i]=0;
+				if(iomodel->qmu_analysis){
+					this->inputs->AddInput(new TriaVertexInput(PressureEnum,nodeinputs));
+					this->inputs->AddInput(new TriaVertexInput(QmuPressureEnum,nodeinputs));
+				}
 			}
 			break;
Index: /issm/trunk/src/c/objects/Vertex.cpp
===================================================================
--- /issm/trunk/src/c/objects/Vertex.cpp	(revision 4490)
+++ /issm/trunk/src/c/objects/Vertex.cpp	(revision 4491)
@@ -258,12 +258,10 @@
 void  Vertex::CreatePartition(Vec partition){ 
 
-	int      idxm;
 	double   value;
 
-	idxm=(sid-1);
 	value=(double)this->dof;
 	ISSMASSERT(value>=0);
 
-	VecSetValues(partition,1,&idxm,&value,INSERT_VALUES);
+	VecSetValues(partition,1,&sid,&value,INSERT_VALUES);
 
 	return;
Index: /issm/trunk/src/m/dakota/setupdesign/QmuSetupDesign.m
===================================================================
--- /issm/trunk/src/m/dakota/setupdesign/QmuSetupDesign.m	(revision 4490)
+++ /issm/trunk/src/m/dakota/setupdesign/QmuSetupDesign.m	(revision 4491)
@@ -5,41 +5,41 @@
 
 %loop on descriptor
-if strcmpi(descriptor,'rho_ice')
+if strcmpi(descriptor,'RhoIce')
 
 	dvar=setuprhoice(dvar,variables,params,varargin{:});
 
-elseif strcmpi(descriptor,'rho_water')
+elseif strcmpi(descriptor,'RhoWater')
 
 	dvar=setuprhowater(dvar,variables,params,varargin{:});
 
-elseif strcmpi(descriptor,'heatcapacity')
+elseif strcmpi(descriptor,'HeatCapacity')
 
 	dvar=setupheatcapacity(dvar,variables,params,varargin{:});
 
-elseif strcmpi(descriptor,'thermalconductivity')
+elseif strcmpi(descriptor,'ThermalConductivity')
 
 	dvar=setupthermalconductivity(dvar,variables,params,varargin{:});
 
-elseif strcmpi(descriptor,'gravity')
+elseif strcmpi(descriptor,'Gravity')
 
 	dvar=setupgravity(dvar,variables,params,varargin{:});
 
-elseif strcmpi(descriptor,'thickness')
+elseif strcmpi(descriptor,'Thickness')
 
 	dvar=setupthickness(dvar,variables,params,varargin{:});
 
-elseif strcmpi(descriptor,'drag')
+elseif strcmpi(descriptor,'DragCoefficient')
 
 	dvar=setupdrag(dvar,variables,params,varargin{:});
 
-elseif strncmpi(descriptor,'drag_node',9)
+elseif strncmpi(descriptor,'DragCoefficientNode',9)
 
 	dvar=setupdrag_node(dvar,variables,params,varargin{:});
 
-elseif strncmpi(descriptor,'thickness_node',14)
+elseif strncmpi(descriptor,'ThicknessNode',14)
 
 	dvar=setupthickness_node(dvar,variables,params,varargin{:});
 
-elseif strcmpi(descriptor,'riftsfriction')
+elseif strcmpi(descriptor,'RiftsFriction')
 
 	dvar=setupriftsfriction(dvar,variables,params,varargin{:});
Index: /issm/trunk/src/m/solutions/SpawnCore.m
===================================================================
--- /issm/trunk/src/m/solutions/SpawnCore.m	(revision 4490)
+++ /issm/trunk/src/m/solutions/SpawnCore.m	(revision 4491)
@@ -8,5 +8,5 @@
 %retrieve parameters
 verbose=femmodel.parameters.Verbose;
-responsedescriptors=femmodel.parameters.responsedescriptors; 
+responsedescriptors=femmodel.parameters.ResponseDescriptors; 
 solution_type=femmodel.parameters.SolutionType;
 
@@ -14,5 +14,5 @@
 
 %first update the inputs to the femmodel using the variables provided to us by dakota.
-[femmodel.elements femmodel.loads]=InputUpdateFromDakota(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,femmodel.partition,variables,variabledescriptors);
+[femmodel.elements femmodel.loads]=InputUpdateFromDakota(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,femmodel.part,variables,variabledescriptors);
 
 %now run the core solution
Index: /issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.cpp
===================================================================
--- /issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.cpp	(revision 4490)
+++ /issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.cpp	(revision 4491)
@@ -38,5 +38,5 @@
 	FetchParams(&parameters,PARAMETERSIN);
 	FetchData(&partition,PARTITION);
-	
+	VecShift(partition,-1.0); //get partition onto "c" indexing
 	/*dakota input: */
 	FetchData(&variables,&numvariables,VARIABLES);
@@ -44,12 +44,12 @@
 	variables_descriptors=(char**)xmalloc(numvariables*sizeof(char*));
 	for(i=0;i<numvariables;i++){
-		
+
 		pfield=mxGetCell(VARIABLESDESCRIPTORS,i);
 		stringlength = (mxGetM(pfield) * mxGetN(pfield) * sizeof(mxChar)) + 1 ;
 		mxGetString(pfield,string,stringlength);
-		
+
 		variables_descriptors[i]=string;
 	}
-	
+
 	/*!Generate internal degree of freedom numbers: */
 	InputUpdateFromDakotax(elements,nodes,vertices,loads, materials,parameters,partition,variables,variables_descriptors,numvariables);
Index: /issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.h
===================================================================
--- /issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.h	(revision 4490)
+++ /issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.h	(revision 4491)
@@ -39,3 +39,2 @@
 
 #endif  /* _UPDATEINPUTSFROMDAKOTA_H */
-
Index: /issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/Square.par
===================================================================
--- /issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/Square.par	(revision 4490)
+++ /issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/Square.par	(revision 4491)
@@ -2,8 +2,9 @@
 
 %dynamics
-md.verbose=0;
+md.verbose=1;
 md.dt=1; %1 year
 md.ndt=md.dt*10; 
 md.artificial_diffusivity=0;
+md.mem_debug=1;
 
 hmin=300;
@@ -41,6 +42,6 @@
 %Dakota options
 md.variables.nuv=normal_uncertain.empty();
-md.variables.nuv(end+1)=normal_uncertain('rho_ice',1,0.01);
-md.variables.nuv(end+1)=normal_uncertain('drag',1,0.01);
+md.variables.nuv(end+1)=normal_uncertain('RhoIce',1,0.01);
+md.variables.nuv(end+1)=normal_uncertain('DragCoefficient',1,0.01);
 
 md.responses=struct();
@@ -48,16 +49,16 @@
 md.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
 
-md.drag_qmu_method     =dakota_method('nond_l');
+md.qmu_method     =dakota_method('nond_l');
 
-md.drag_qmu_params.direct=true;
-md.drag_qmu_params.analysis_driver='diagnostic';
-md.drag_qmu_params.evaluation_concurrency=1;
-md.drag_qmu_params.interval_type='forward';
-md.drag_qmu_params.tabular_graphics_data=true;
+md.qmu_params.direct=true;
+md.qmu_params.analysis_driver='diagnostic';
+md.qmu_params.evaluation_concurrency=1;
+md.qmu_params.interval_type='forward';
+md.qmu_params.tabular_graphics_data=true;
 
-md.drag_part=0:1:md.numberofgrids-1;
-md.drag_part=md.drag_part';
+md.part=0:1:md.numberofgrids-1;
+md.part=md.part';
 md.npart=md.numberofgrids;
-md.drag_qmu_analysis=1;
+md.qmu_analysis=1;
 
 md.eps_rel=10^-10; %tighten for qmu analysese
Index: /issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/configuration.m
===================================================================
--- /issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/configuration.m	(revision 4490)
+++ /issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/configuration.m	(revision 4491)
@@ -24,4 +24,4 @@
 %sequences     analysis    sub_analysis  qmu   control  control_fit parallel
 sequences={  {DiagnosticSolutionEnum,  NoneAnalysisEnum,      1 ,     0,      'nan'        0    };...
-				 {DiagnosticSolutionEnum,  NoneAnalysisEnum,      1 ,     0,      'nan'        1    };...
+			 {DiagnosticSolutionEnum,  NoneAnalysisEnum,      1 ,     0,      'nan'        1    };...
 	};
