Index: /issm/trunk/src/m/model/marshall.m
===================================================================
--- /issm/trunk/src/m/model/marshall.m	(revision 6213)
+++ /issm/trunk/src/m/model/marshall.m	(revision 6214)
@@ -100,5 +100,5 @@
 WriteData(fid,md.control_analysis,'Integer','control_analysis');
 WriteData(fid,md.num_control_type,'Integer','num_control_type');
-WriteData(fid,md.control_type,'Integer','control_type');
+WriteData(fid,md.control_type,'Mat','control_type');
 
 %Write solution parameters
Index: /issm/trunk/src/m/solutions/control_core.m
===================================================================
--- /issm/trunk/src/m/solutions/control_core.m	(revision 6213)
+++ /issm/trunk/src/m/solutions/control_core.m	(revision 6214)
@@ -9,4 +9,5 @@
 	verbose=femmodel.parameters.Verbose;
 	nsteps=femmodel.parameters.NSteps;
+	num_controls=femmodel.parameters.NumControls;
 	control_type=femmodel.parameters.ControlType;
 	solution_type=femmodel.parameters.SolutionType;
@@ -83,7 +84,9 @@
 
 	%Some results not computed by diagnostic or steadystate
-	femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,control_type);
+	for i=1:num_controls,
+		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,control_type(i));
+	end
 	femmodel.results=AddExternalResult(femmodel.results,JEnum,J);
-	femmodel.results=AddExternalResult(femmodel.results,ControlTypeEnum,control_type);
+	%femmodel.results=AddExternalResult(femmodel.results,ControlTypeEnum,control_type);
 
 end %end function
Index: /issm/trunk/src/m/solutions/gradient_core.m
===================================================================
--- /issm/trunk/src/m/solutions/gradient_core.m	(revision 6213)
+++ /issm/trunk/src/m/solutions/gradient_core.m	(revision 6214)
@@ -22,25 +22,28 @@
 	%recover parameters common to all solutions
 	verbose=femmodel.parameters.Verbose;
+	num_controls=femmodel.parameters.NumControls;
 	control_type=femmodel.parameters.ControlType;
 	control_steady=femmodel.parameters.ControlSteady;
 
-	displaystring(verbose,'%s\n',['      compute gradient...']);
-	grad=Gradj(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
+	for i=1:num_controls,
+
+		displaystring(verbose,['      compute gradient of J with respect to %s\n'],EnumToString(control_type(i)));
+		grad=Gradj(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
 
 
-	if control_steady;
-		femmodel=diagnostic_core(femmodel);
+		if control_steady;
+			femmodel=diagnostic_core(femmodel);
+		end
+
+		if (step>1 && search_scalar==0),
+			displaystring(verbose,'%s\n',['      orthogonalization...']);
+			old_gradient=ControlInputGetGradient(femmodel.elements,femmodel.nodes, femmodel.vertices,femmodel.loads, femmodel.materials,femmodel.parameters,control_type(i));
+			new_gradient=Orth(grad,old_gradient);
+		else
+			displaystring(verbose,'%s\n',['      normalizing direction...']);
+			new_gradient=Orth(grad,[]);
+		end
+
+		%plug back into inputs:
+		[femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters]=ControlInputSetGradient(femmodel.elements,femmodel.nodes, femmodel.vertices,femmodel.loads, femmodel.materials,  femmodel.parameters,control_type(i),new_gradient);
 	end
-
-	if (step>1 && search_scalar==0),
-		displaystring(verbose,'%s\n',['      orthogonalization...']);
-		displaystring(verbose,'%s\n',['      retrieve old gradient...']);
-		old_gradient=ControlInputGetGradient(femmodel.elements,femmodel.nodes, femmodel.vertices,femmodel.loads, femmodel.materials,femmodel.parameters,control_type);
-		new_gradient=Orth(grad,old_gradient);
-	else
-		displaystring(verbose,'%s\n',['      normalizing direction...']);
-		new_gradient=Orth(grad,[]);
-	end
-
-	%plug back into inputs:
-	[femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters]=ControlInputSetGradient(femmodel.elements,femmodel.nodes, femmodel.vertices,femmodel.loads, femmodel.materials,  femmodel.parameters,control_type,new_gradient);
Index: /issm/trunk/src/m/solutions/objectivefunctionC.m
===================================================================
--- /issm/trunk/src/m/solutions/objectivefunctionC.m	(revision 6213)
+++ /issm/trunk/src/m/solutions/objectivefunctionC.m	(revision 6214)
@@ -6,5 +6,4 @@
 optscal=femmodel.parameters.OptScal(n);
 response=femmodel.parameters.CmResponses(n);
-control_type=femmodel.parameters.ControlType;
 analysis_type=femmodel.parameters.AnalysisType;
 solution_type=femmodel.parameters.SolutionType;
