Index: /issm/trunk-jpl/src/c/solutions/control_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/control_core.cpp	(revision 11305)
+++ /issm/trunk-jpl/src/c/solutions/control_core.cpp	(revision 11306)
@@ -34,5 +34,5 @@
 		
 	/*intermediary: */
-	double  search_scalar=0;
+	double  search_scalar=1;
 	OptArgs optargs;
 	OptPars optpars;
@@ -84,10 +84,10 @@
 		femmodel->parameters->SetParam(step_responses,1,num_responses,StepResponsesEnum);
 		
-		/*In case we are running a steady state control method, compute new temperature field using new parameter distribution: */
+		/*In steady state inversion, compute new temperature field now*/
 		if(solution_type==SteadystateSolutionEnum) solutioncore(femmodel);
 
 		_printf_(VerboseControl(),"%s\n","   compute adjoint state:");
 		adjointcore(femmodel);
-		gradient_core(femmodel,n,search_scalar);
+		gradient_core(femmodel,n,search_scalar==0);
 
 		/*Return gradient if asked: */
@@ -100,5 +100,4 @@
 		optpars.maxiter=(int)maxiter[n]; optpars.cm_jump=cm_jump[n];
 		BrentSearch(&search_scalar,J+n,&optpars,&objectivefunctionC,&optargs);
-		//OptimalSearch(&search_scalar,J+n,&optpars,&objectivefunctionC,&optargs);
 
 		_printf_(VerboseControl(),"%s\n","   updating parameter using optimized search scalar"); //true means update save controls
@@ -116,5 +115,4 @@
 		for(i=0;i<num_controls;i++) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,control_type[i]);
 		femmodel->results->AddObject(new DoubleVecExternalResult(femmodel->results->Size()+1,JEnum,J,nsteps,1,0));
-		//femmodel->results->AddObject(new StringExternalResult(femmodel->results->Size()+1,InversionControlParametersEnum,EnumToStringx(control_type),1,0));
 	}
 
Index: /issm/trunk-jpl/src/c/solutions/gradient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/gradient_core.cpp	(revision 11305)
+++ /issm/trunk-jpl/src/c/solutions/gradient_core.cpp	(revision 11306)
@@ -13,6 +13,5 @@
 #include "../solvers/solvers.h"
 
-
-void gradient_core(FemModel* femmodel,int step, double search_scalar){ //step defaults to 0, search_scalar defaults to 0
+void gradient_core(FemModel* femmodel,int step,bool orthogonalize){ 
 	
 	/*parameters: */
@@ -40,5 +39,5 @@
 		Gradjx(&gradient, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters, control_type[i]);
 
-		if (step>0 && search_scalar==0){
+		if (orthogonalize){
 			_printf_(VerboseControl(),"   orthogonalization\n");
 			ControlInputGetGradientx(&old_gradient,femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,control_type[i]);
@@ -53,5 +52,5 @@
 		if(norm_grad<=0)    _error_("||∂J/∂α||∞ = 0    gradient norm of J with respect to %s is zero",EnumToStringx(control_type[i]));
 		if(isnan(norm_grad))_error_("||∂J/∂α||∞ = NaN  gradient norm of J with respect to %s is NaN" ,EnumToStringx(control_type[i]));
-		if(i==0 || (optscal_list[num_controls*step+i]/norm_grad)<optscal) optscal=optscal_list[num_controls*step+i]/norm_grad;
+		optscal=optscal_list[num_controls*step+i]/norm_grad;
 
 		/*plug back into inputs: */
Index: /issm/trunk-jpl/src/c/solutions/solutions.h
===================================================================
--- /issm/trunk-jpl/src/c/solutions/solutions.h	(revision 11305)
+++ /issm/trunk-jpl/src/c/solutions/solutions.h	(revision 11306)
@@ -15,5 +15,5 @@
 void adjointdiagnostic_core(FemModel* femmodel);
 void adjointbalancethickness_core(FemModel* femmodel);
-void gradient_core(FemModel* femmodel,int step=0, double search_scalar=0);
+void gradient_core(FemModel* femmodel,int n=0,bool orthogonalize=false);
 void diagnostic_core(FemModel* femmodel);
 void hydrology_core(FemModel* femmodel);
Index: /issm/trunk-jpl/src/m/solutions/control_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/control_core.m	(revision 11305)
+++ /issm/trunk-jpl/src/m/solutions/control_core.m	(revision 11306)
@@ -25,5 +25,5 @@
 	%Initialize misfits with a vector of zeros
 	J=zeros(nsteps,1);
-	search_scalar=0;
+	search_scalar=1;
 
 	%Get core from solution type
@@ -42,5 +42,5 @@
 		femmodel.parameters.StepResponses=responses(n,:);
 
-		%In case we are running a steady state control method, compute new temperature field using new parameter distribution: 
+		%In steady state inversion, compute new temperature field now
 		if (solution_type==SteadystateSolutionEnum)
 			femmodel=steadystate_core(femmodel);
@@ -50,5 +50,5 @@
 		eval(['femmodel=' adjointcore '(femmodel);']);
 
-		femmodel=gradient_core(femmodel,n,search_scalar);
+		femmodel=gradient_core(femmodel,n,search_scalar==0);
 
 		%Return gradient if asked
Index: /issm/trunk-jpl/src/m/solutions/gradient_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/gradient_core.m	(revision 11305)
+++ /issm/trunk-jpl/src/m/solutions/gradient_core.m	(revision 11306)
@@ -11,8 +11,8 @@
 if nargin==3,
 	step=varargin{1};
-	search_scalar=varargin{2};
+	orthogonalize=varargin{2};
 elseif nargin==1
 	step=0;
-	search_scalar=0;;
+	orthogonalize=false;
 else
 	help gradient_core
@@ -31,5 +31,5 @@
 		grad=Gradj(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,control_type(i));
 
-		if (step>1 && search_scalar==0),
+		if orthogonalize,
 			issmprintf(VerboseControl,'%s',['   orthogonalization']);
 			old_gradient=ControlInputGetGradient(femmodel.elements,femmodel.nodes, femmodel.vertices,femmodel.loads, femmodel.materials,femmodel.parameters,control_type(i));
@@ -43,5 +43,5 @@
 		 if(norm_grad<=0),     error(['||∂J/∂α||∞ = 0   gradient norm of J with respect to ' EnumToString(control_type(i))  ' is zero']); end
 		 if(isnan(norm_grad)), error(['||∂J/∂α||∞ = NaN gradient norm of J with respect to ' EnumToString(control_type(i))  ' is NaN' ]); end
-		 if(i==1 | (gradient_scaling_list(step,i)/norm_grad)<gradient_scaling) gradient_scaling=gradient_scaling_list(step,i)/norm_grad; end
+		 gradient_scaling=gradient_scaling_list(step,i)/norm_grad;
 
 		%plug back into inputs:
