Index: /issm/trunk/src/m/solutions/adjoint_core.m
===================================================================
--- /issm/trunk/src/m/solutions/adjoint_core.m	(revision 5251)
+++ /issm/trunk/src/m/solutions/adjoint_core.m	(revision 5252)
@@ -1,4 +1,7 @@
 function femmodel=adjoint_core(femmodel),
 %ADJOINT_CORE - compute inverse method adjoint state
+%
+%   Usage:
+%      femmodel=adjoint_core(femmodel)
 
 	%recover parameters common to all solutions
@@ -10,17 +13,22 @@
 
 	%set analysis type to compute velocity:
-	displaystring('\n%s',['      computing velocities']);
-	if(isstokes),
-		femmodel=SetCurrentConfiguration(femmodel,DiagnosticStokesAnalysisEnum);
-	else 
-		femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum);
+	if (solution_type==DiagnosticSolutionEnum | solution_type==SteadystateSolutionEnum)
+		displaystring('\n%s',['      computing velocities']);
+		if(isstokes), femmodel=SetCurrentConfiguration(femmodel,DiagnosticStokesAnalysisEnum);
+		else femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum); end
+		femmodel=solver_diagnostic_nonlinear(femmodel,conserve_loads);
+	elseif (solution_type==BalancedthicknessSolutionEnum)
+		femmodel=SetCurrentConfiguration(femmodel,BalancedthicknessAnalysisEnum);
+		femmodel=solver_linear(femmodel);
+	else
+		error('solution not implemented yet');
 	end
-	femmodel=solver_diagnostic_nonlinear(femmodel,conserve_loads);
 
 	displaystring('\n%s',['      computing adjoint']);
-	if(isstokes),
-		femmodel=SetCurrentConfiguration(femmodel,DiagnosticStokesAnalysisEnum,AdjointStokesAnalysisEnum);
-	else
-		femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum,AdjointHorizAnalysisEnum);
+	if (solution_type==DiagnosticSolutionEnum | solution_type==SteadystateSolutionEnum)
+		if(isstokes), femmodel=SetCurrentConfiguration(femmodel,DiagnosticStokesAnalysisEnum,AdjointStokesAnalysisEnum);
+		else femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum,AdjointHorizAnalysisEnum); end
+	elseif (solution_type==BalancedthicknessSolutionEnum),
+		femmodel=SetCurrentConfiguration(femmodel,BalancedthicknessAnalysisEnum,AdjointBalancedthicknessAnalysisEnum);
 	end
 	femmodel=solver_adjoint_linear(femmodel);
Index: /issm/trunk/src/m/solutions/objectivefunctionC.m
===================================================================
--- /issm/trunk/src/m/solutions/objectivefunctionC.m	(revision 5251)
+++ /issm/trunk/src/m/solutions/objectivefunctionC.m	(revision 5252)
@@ -7,13 +7,16 @@
 fit=femmodel.parameters.Fit(n);
 control_type=femmodel.parameters.ControlType;
-control_steady=femmodel.parameters.ControlSteady;
 analysis_type=femmodel.parameters.AnalysisType;
+solution_type=femmodel.parameters.SolutionType;
 isstokes=femmodel.parameters.IsStokes;
 
 %set current configuration
-if isstokes,
-	femmodel=SetCurrentConfiguration(femmodel,DiagnosticStokesAnalysisEnum);
+if (solution_type==DiagnosticSolutionEnum | solution_type==SteadystateSolutionEnum)
+	if isstokes, femmodel=SetCurrentConfiguration(femmodel,DiagnosticStokesAnalysisEnum);
+	else femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum); end
+elseif (solution_type==BalancedthicknessSolutionEnum)
+	femmodel=SetCurrentConfiguration(femmodel,BalancedthicknessAnalysisEnum);
 else
-	femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum);
+	error('solution not implemented yet');
 end
 
@@ -22,8 +25,12 @@
 
 %Run diagnostic with updated inputs:
-if(control_steady==0),
+if (solution_type==DiagnosticSolutionEnum)
 	femmodel=solver_diagnostic_nonlinear(femmodel,conserve_loads);  %true means we conserve loads at each diagnostic run
+elseif (solution_type==SteadystateSolutionEnum)
+	femmodel=diagnostic_core(femmodel);  %We need a 3D velocity!! (vz is required for the next thermal run)
+elseif (solution_type==BalancedthicknessSolutionEnum)
+	femmodel=solver_linear(femmodel);
 else
-	femmodel=diagnostic_core(femmodel);  %We need a 3D velocity!! (vz is required for the next thermal run)
+	error('solution not implemented yet');
 end
 
