Index: /issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp	(revision 1119)
+++ /issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp	(revision 1120)
@@ -39,5 +39,4 @@
 			CreateConstraintsDiagnosticVert(pconstraints,model,model_handle);
 			CreateLoadsDiagnosticVert(ploads,model,model_handle);
-			CreateParametersControl(pparameters,model,model_handle);
 
 		}
@@ -97,5 +96,4 @@
 		CreateConstraintsSlopeCompute(pconstraints,model,model_handle);
 		CreateLoadsSlopeCompute(ploads,model,model_handle);
-			
 	
 	}
@@ -127,8 +125,3 @@
 	}
 			
-
-
-
-
-
 }
Index: /issm/trunk/src/c/parallel/control.cpp
===================================================================
--- /issm/trunk/src/c/parallel/control.cpp	(revision 1119)
+++ /issm/trunk/src/c/parallel/control.cpp	(revision 1120)
@@ -37,5 +37,4 @@
 	double* u_g_initial=NULL;
 	Param*  param=NULL;
-
 
 	MODULEBOOT();
Index: /issm/trunk/src/c/parallel/control_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/control_core.cpp	(revision 1119)
+++ /issm/trunk/src/c/parallel/control_core.cpp	(revision 1120)
@@ -20,4 +20,5 @@
 
 	/*Intermediary: */
+	DataSet* diagnostic_results=NULL;
 	Vec     u_g=NULL;
 	double  search_scalar;
@@ -138,11 +139,13 @@
 	/*Write results to disk: */
 	_printf_("%s\n","      preparing final velocity solution...");
+
+	/*Launch diagnostic with the last parameter distribution*/
 	inputs->Add(control_type,param_g,1,numberofnodes);
-	inputs->Add("fit",fit[n]);
+	diagnostic_results=new DataSet(ResultsEnum()); 
+	diagnostic_core(diagnostic_results,fems, inputs);
 
-	/*Update parameters: */
-	UpdateFromInputsx(fem_dh->elements,fem_dh->nodes,fem_dh->loads, fem_dh->materials,inputs);
-
-	diagnostic_core_nonlinear(&u_g,NULL,NULL,fem_dh,inputs,analysis_type,sub_analysis_type);
+	//extract u_g from diagnostic_results, and erase diagnostic_results;
+	diagnostic_results->FindResult(&u_g,"u_g");
+	delete diagnostic_results;
 
 	/*Plug results into output dataset: */
Index: /issm/trunk/src/c/shared/Dofs/DistributeNumDofs.cpp
===================================================================
--- /issm/trunk/src/c/shared/Dofs/DistributeNumDofs.cpp	(revision 1119)
+++ /issm/trunk/src/c/shared/Dofs/DistributeNumDofs.cpp	(revision 1120)
@@ -17,5 +17,16 @@
 	/*ok, according to analysis type: */
 	if (analysis_type==ControlAnalysisEnum()){
-		numdofs=2;
+		if (sub_analysis_type==HorizAnalysisEnum()){
+			numdofs=2;
+		}
+		else if (sub_analysis_type==VertAnalysisEnum()){
+			numdofs=1;
+		}
+		else if (sub_analysis_type==StokesAnalysisEnum()){
+			numdofs=4;
+		}
+		else if (sub_analysis_type==HutterAnalysisEnum()){
+			numdofs=2;
+		}
 	}
 	else if (analysis_type==DiagnosticAnalysisEnum()){
