Index: /issm/trunk/src/m/solutions/cielo/control_core.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/control_core.m	(revision 1844)
+++ /issm/trunk/src/m/solutions/cielo/control_core.m	(revision 1845)
@@ -7,8 +7,13 @@
 
 %Preprocess models
-[inputs model]=ControlInitialization(models,inputs);
+[inputs models]=ControlInitialization(models,inputs);
+
+%recover active model.
+model=models.active;
 
 %recover parameters common to all solutions
 debug=model.parameters.debug;
+dim=model.parameters.dim;
+isstokes=model.parameters.isstokes;
 
 %initialize control parameters
@@ -33,6 +38,15 @@
 
 	displaystring(debug,'\n%s',['      computing gradJ...']);
-	[u_g c(n).grad_g]=GradJCompute(model,inputs,model.parameters.analysis_type,model.parameters.sub_analysis_type);
-	inputs=add(inputs,'velocity',u_g,'doublevec',2,model.parameters.numberofnodes);
+	results_grad=gradjcompute_core(models,inputs);
+	u_g=results_grad.u_g; c(n).grad_g=results_grad.grad_g;
+	if dim==3,
+		if isstokes,
+			inputs=add(inputs,'velocity',u_g,'doublevec',3,model.parameters.numberofnodes);
+		else
+			inputs=add(inputs,'velocity',u_g,'doublevec',3,model.parameters.numberofnodes);
+		end
+	else
+		inputs=add(inputs,'velocity',u_g,'doublevec',2,model.parameters.numberofnodes);
+	end
 
 	displaystring(debug,'\n%s',['      normalizing directions...']);
@@ -49,5 +63,5 @@
 
 	displaystring(debug,'\n%s',['      optimizing along gradient direction...']);
-	[search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,model,inputs,param_g,c(n).grad_g,n,model.parameters.analysis_type,model.parameters.sub_analysis_type);
+	[search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,models,inputs,param_g,c(n).grad_g,n,model.parameters.analysis_type,model.parameters.sub_analysis_type);
 
 	displaystring(debug,'\n%s',['      updating parameter using optimized search scalar...']);
