Index: /issm/trunk/src/c/solutions/control_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/control_core.cpp	(revision 5470)
+++ /issm/trunk/src/c/solutions/control_core.cpp	(revision 5471)
@@ -114,5 +114,5 @@
 
 	_printf_("%s\n","      preparing final solution");
-	femmodel->parameters->SetParam(false,ControlAnalysisEnum);
+	femmodel->parameters->SetParam(false,ControlAnalysisEnum); //needed to turn control result output in solutioncore
 	solutioncore(femmodel);
 
@@ -130,3 +130,6 @@
 	xfree((void**)&cm_jump);
 	xfree((void**)&J);
+	
+	/*control_core might be used in Qmu, so leave everything similar to where it started: */
+	femmodel->parameters->SetParam(true,ControlAnalysisEnum);
 }
Index: /issm/trunk/src/c/solutions/issm.cpp
===================================================================
--- /issm/trunk/src/c/solutions/issm.cpp	(revision 5470)
+++ /issm/trunk/src/c/solutions/issm.cpp	(revision 5471)
@@ -79,22 +79,14 @@
 	MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime();
 
+	/*if control is being run on top of a solution, change core: */
+	if(control_analysis)solutioncore=&control_core;
+
 	/*are we running the solution sequence, or a qmu wrapper around it? : */
 	if(!qmu_analysis){
-		if(!control_analysis){
 			
-			_printf_("call computational core:\n");
-			MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
-			solutioncore(femmodel);
-			MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
-
-		}
-		else{
-			/*run control analysis: */
-			_printf_("call computational core:\n");
-			MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
-			control_core(femmodel);
-			MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
-
-		}
+		_printf_("call computational core:\n");
+		MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
+		solutioncore(femmodel);
+		MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
 
 		_printf_("write results to disk:\n");
