Index: /issm/trunk/src/c/solutions/adjoint_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/adjoint_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/adjoint_core.cpp	(revision 5318)
@@ -15,7 +15,8 @@
 	
 	/*parameters: */
-	int  verbose        = 0;
 	bool isstokes;
-	bool conserve_loads = true;
+	bool control_analysis;
+	bool conserve_loads   = true;
+	int  verbose          = 0;
 	int  solution_type;
 
@@ -23,4 +24,5 @@
 	femmodel->parameters->FindParam(&verbose,VerboseEnum);
 	femmodel->parameters->FindParam(&isstokes,IsStokesEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -51,6 +53,6 @@
 	solver_adjoint_linear(femmodel);
 	
-	if(verbose)_printf_("saving results:\n");
-	if(solution_type==AdjointSolutionEnum){
+	if(solution_type==AdjointSolutionEnum && !control_analysis){
+		if(verbose)_printf_("saving results:\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointxEnum);
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointyEnum);
Index: /issm/trunk/src/c/solutions/balancedthickness_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/balancedthickness_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/balancedthickness_core.cpp	(revision 5318)
@@ -15,7 +15,8 @@
 
 	/*parameters: */
-	int verbose=0;
-	int dim;
-	int solution_type;
+	int  verbose = 0;
+	int  dim;
+	int  solution_type;
+	bool control_analysis;
 
 	/*activate formulation: */
@@ -25,4 +26,5 @@
 	femmodel->parameters->FindParam(&verbose,VerboseEnum);
 	femmodel->parameters->FindParam(&dim,DimEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -30,6 +32,6 @@
 	solver_linear(femmodel);
 
-	if(verbose)_printf_("saving results:\n");
-	if(solution_type==BalancedthicknessSolutionEnum){
+	if(solution_type==BalancedthicknessSolutionEnum && !control_analysis){
+		if(verbose)_printf_("saving results:\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ThicknessEnum);
 	}
Index: /issm/trunk/src/c/solutions/balancedvelocities_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/balancedvelocities_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/balancedvelocities_core.cpp	(revision 5318)
@@ -14,7 +14,8 @@
 
 	/*flags: */
-	int verbose=0;
-	int dim;
-	int solution_type;
+	int  verbose          = 0;
+	int  dim;
+	bool control_analysis;
+	int  solution_type;
 
 	/*activate formulation: */
@@ -24,4 +25,5 @@
 	femmodel->parameters->FindParam(&verbose,VerboseEnum);
 	femmodel->parameters->FindParam(&dim,DimEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -29,6 +31,6 @@
 	solver_linear(femmodel);
 
-	if(verbose)_printf_("saving results:\n");
-	if(solution_type==BalancedvelocitiesSolutionEnum){
+	if(solution_type==BalancedvelocitiesSolutionEnum && !control_analysis){
+		if(verbose)_printf_("saving results:\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VelEnum);
 	}
Index: /issm/trunk/src/c/solutions/bedslope_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/bedslope_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/bedslope_core.cpp	(revision 5318)
@@ -17,4 +17,5 @@
 	bool isstokes;
 	bool ishutter;
+	bool control_analysis;
 	int  solution_type;
 
@@ -22,4 +23,5 @@
 	femmodel->parameters->FindParam(&verbose,VerboseEnum);
 	femmodel->parameters->FindParam(&dim,DimEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -32,6 +34,6 @@
 	solver_linear(femmodel);
 	
-	if(verbose)_printf_("saving results:\n");
-	if(solution_type==BedSlopeSolutionEnum){
+	if(solution_type==BedSlopeSolutionEnum && !control_analysis){
+		if(verbose)_printf_("saving results:\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedSlopeXEnum);
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedSlopeYEnum);
Index: /issm/trunk/src/c/solutions/control_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/control_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/control_core.cpp	(revision 5318)
@@ -107,5 +107,6 @@
 	}
 
-	_printf_("%s\n","      preparing final velocity solution");
+	_printf_("%s\n","      preparing final solution");
+	femmodel->parameters->SetParam(false,ControlAnalysisEnum);
 	solutioncore(femmodel);
 
Index: /issm/trunk/src/c/solutions/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 5318)
@@ -24,4 +24,5 @@
 	bool   conserve_loads       = true;
 	bool   modify_loads         = true;
+	bool   control_analysis;
 	int    solution_type;
 
@@ -34,4 +35,5 @@
 	femmodel->parameters->FindParam(&stokesreconditioning,StokesReconditioningEnum);
 	femmodel->parameters->FindParam(&qmu_analysis,QmuAnalysisEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -86,6 +88,6 @@
 	}
 
-	if(verbose)_printf_("saving results:\n");
-	if(solution_type==DiagnosticSolutionEnum){
+	if(solution_type==DiagnosticSolutionEnum && !control_analysis){
+		if(verbose)_printf_("saving results:\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum);
Index: /issm/trunk/src/c/solutions/prognostic_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/prognostic_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/prognostic_core.cpp	(revision 5318)
@@ -16,4 +16,5 @@
 	int verbose=0;
 	int solution_type;
+	bool control_analysis;
 
 	/*activate formulation: */
@@ -22,4 +23,5 @@
 	/*recover parameters: */
 	femmodel->parameters->FindParam(&verbose,VerboseEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -27,6 +29,6 @@
 	solver_linear(femmodel);
 		
-	if(verbose)_printf_("saving results:\n");
-	if(solution_type==PrognosticSolutionEnum){
+	if(solution_type==PrognosticSolutionEnum && !control_analysis){
+		if(verbose)_printf_("saving results:\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ThicknessEnum);
 	}
Index: /issm/trunk/src/c/solutions/steadystate_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/steadystate_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/steadystate_core.cpp	(revision 5318)
@@ -21,8 +21,10 @@
 	int dim;
 	int solution_type;
+	bool control_analysis;
 	
 	/* recover parameters:*/
 	femmodel->parameters->FindParam(&verbose,VerboseEnum); 
 	femmodel->parameters->FindParam(&dim,DimEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -54,6 +56,6 @@
 	}
 	
-	if(verbose)_printf_("saving results:\n");
-	if(solution_type==SteadystateSolutionEnum){
+	if(solution_type==SteadystateSolutionEnum && !control_analysis){
+		if(verbose)_printf_("saving results:\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum);
Index: /issm/trunk/src/c/solutions/surfaceslope_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/surfaceslope_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/surfaceslope_core.cpp	(revision 5318)
@@ -17,4 +17,5 @@
 	bool isstokes;
 	bool ishutter;
+	bool control_analysis;
 	int solution_type;
 
@@ -22,4 +23,5 @@
 	femmodel->parameters->FindParam(&verbose,VerboseEnum);
 	femmodel->parameters->FindParam(&dim,DimEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -32,6 +34,6 @@
 	solver_linear(femmodel);
 	
-	if(verbose)_printf_("saving results:\n");
-	if(solution_type==SurfaceSlopeSolutionEnum){
+	if(solution_type==SurfaceSlopeSolutionEnum && !control_analysis){
+		if(verbose)_printf_("saving results:\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceSlopeXEnum);
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceSlopeYEnum);
Index: /issm/trunk/src/c/solutions/thermal_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/thermal_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/thermal_core.cpp	(revision 5318)
@@ -23,4 +23,5 @@
 	double dt;
 	double melting_offset;
+	bool control_analysis;
 	int solution_type;
 
@@ -29,4 +30,5 @@
 	femmodel->parameters->FindParam(&ndt,NdtEnum);
 	femmodel->parameters->FindParam(&dt,DtEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -47,6 +49,6 @@
 		thermal_core_step(femmodel,i,time);
 
-		if(verbose)_printf_("saving results:\n");
-		if(solution_type==ThermalSolutionEnum){
+		if(solution_type==ThermalSolutionEnum && !control_analysis){
+			if(verbose)_printf_("saving results:\n");
 			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum,i+1,time);
 			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,MeltingRateEnum,i+1,time);
Index: /issm/trunk/src/c/solutions/transient2d_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/transient2d_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/transient2d_core.cpp	(revision 5318)
@@ -16,10 +16,11 @@
 
 	/*parameters: */
-	int    verbose       = 0;
+	int    verbose          = 0;
 	double finaltime;
-	double dt,yts;
+	double dt                 ,yts;
 	int    solution_type;
+	bool   control_analysis;
 	int    output_frequency;
-	
+
 	/*intermediary: */
 	int    step;
@@ -31,4 +32,5 @@
 	femmodel->parameters->FindParam(&dt,DtEnum);
 	femmodel->parameters->FindParam(&yts,YtsEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 	femmodel->parameters->FindParam(&output_frequency,OutputFrequencyEnum);
@@ -55,6 +57,6 @@
 		UpdateGeometryx(femmodel->elements, femmodel->nodes,femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters); 
 
-		if(verbose)_printf_("%s\n","saving results:\n");
-		if(solution_type==Transient2DSolutionEnum && step%output_frequency==0){
+		if(solution_type==Transient2DSolutionEnum && !control_analysis && (step%output_frequency==0)){
+			if(verbose)_printf_("%s\n","saving results:\n");
 			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum,step,time); 
 			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum,step,time);
Index: /issm/trunk/src/c/solutions/transient3d_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/transient3d_core.cpp	(revision 5317)
+++ /issm/trunk/src/c/solutions/transient3d_core.cpp	(revision 5318)
@@ -19,4 +19,5 @@
 	double finaltime;
 	double dt,yts;
+	bool control_analysis;
 	int    solution_type;
 	int    output_frequency;
@@ -31,4 +32,5 @@
 	femmodel->parameters->FindParam(&dt,DtEnum);
 	femmodel->parameters->FindParam(&yts,YtsEnum);
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 	femmodel->parameters->FindParam(&output_frequency,OutputFrequencyEnum);
@@ -61,6 +63,6 @@
 		UpdateVertexPositionsx(femmodel->elements, femmodel->nodes,femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters); 
 
-		if(verbose)_printf_("%s\n","saving results:\n");
-		if(solution_type==Transient3DSolutionEnum && step%output_frequency==0){
+		if(solution_type==Transient3DSolutionEnum && !control_analysis && (step%output_frequency==0)){
+			if(verbose)_printf_("%s\n","saving results:\n");
 			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum,step,time);
 			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum,step,time);
