Index: /issm/trunk/src/c/parallel/steadystate.cpp
===================================================================
--- /issm/trunk/src/c/parallel/steadystate.cpp	(revision 1996)
+++ /issm/trunk/src/c/parallel/steadystate.cpp	(revision 1997)
@@ -25,4 +25,6 @@
 	int   numberofnodes;
 	int   qmu_analysis=0;
+	int   control_analysis=0;
+	char* control_type=NULL;
 
 	/*Model: */
@@ -38,4 +40,5 @@
 	double* u_g_initial=NULL;
 	double* p_g_initial=NULL;
+	double* u_g_obs=NULL;
 	double  dt;
 	Param*  param=NULL;
@@ -91,4 +94,5 @@
 	/*recover parameters: */
 	model->FindParam(&waitonlock,"waitonlock");
+	model->FindParam(&control_analysis,"control_analysis");
 	model->FindParam(&qmu_analysis,"qmu_analysis");
 
@@ -104,4 +108,7 @@
 	inputs->Add("pressure",p_g_initial,1,numberofnodes);
 	inputs->Add("dt",dt);
+	if(control_analysis){
+		inputs->Add("velocity_obs",u_g_obs,2,numberofnodes);
+	}
 	
 	_printf_("initialize results:\n");
@@ -111,8 +118,14 @@
 	if(!qmu_analysis){
 
-		/*run diagnostic analysis: */
-		_printf_("call computational core:\n");
-		steadystate_core(results,model,inputs);
-
+		if(!control_analysis){
+			/*run diagnostic analysis: */
+			_printf_("call computational core:\n");
+			steadystate_core(results,model,inputs);
+		}
+		else{
+			/*run control analysis: */
+			_printf_("call computational core:\n");
+			control_core(results,model,inputs);
+		}
 	}
 	else{
@@ -127,10 +140,24 @@
 	}
 
-	/*Add analysis_type to results: */
-	result=new Result(results->Size()+1,0,1,"analysis_type","steadystate");
-	results->AddObject(result);
+	if(!control_analysis){
+		/*Add analysis_type to results: */
+		result=new Result(results->Size()+1,0,1,"analysis_type","steadystate");
+		results->AddObject(result);
 
-	_printf_("process results:\n");
-	ProcessResults(&results,model,SteadystateAnalysisEnum());
+		_printf_("process results:\n");
+		ProcessResults(&results,model,SteadystateAnalysisEnum());
+	}
+	else{
+		/*Add analysis_type and control_type to results: */
+		result=new Result(results->Size()+1,0,1,"analysis_type","steadystate");
+		results->AddObject(result);
+
+		model->FindParam(&control_type,"control_type");
+		result=new Result(results->Size()+1,0,1,"control_type",control_type);
+		results->AddObject(result);
+
+		_printf_("process results:\n");
+		ProcessResults(&results,model,ControlAnalysisEnum());
+	}
 
 	_printf_("write results to disk:\n");
