Index: /issm/trunk/src/m/solutions/cielo/control.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/control.m	(revision 378)
+++ /issm/trunk/src/m/solutions/cielo/control.m	(revision 379)
@@ -13,4 +13,5 @@
 	%initialize control parameters, gradients and observations
 	u_g_obs=m.parameters.u_g_obs;
+	u_g=m.parameters.u_g;
 	p_g=m.parameters.p_g;
 	grad_g=zeros(m.nodesets.gsize,1);
@@ -21,5 +22,6 @@
 	%initialize inputs, ie m.nparameters on which we invert.
 	inputs=inputlist;
-	inputs=add(inputs,'velocity',m.parameters.u_g,'doublevec',3,m.parameters.numberofnodes);
+	inputs=add(inputs,m.parameters.control_type,p_g,'doublevec',2,m.parameters.numberofnodes);
+	inputs=add(inputs,'velocity',u_g,'doublevec',3,m.parameters.numberofnodes);
 
 	for n=1:m.parameters.nsteps,
@@ -30,6 +32,5 @@
 		disp(sprintf('\n%s%s%s%s\n',['   control method step ' num2str(n) '/' num2str(m.parameters.nsteps)]));
 
-		%update inputs with new parameter and fit
-		inputs=add(inputs,m.parameters.control_type,p_g,'doublevec',2,m.parameters.numberofnodes);
+		%update inputs with new fit
 		inputs=add(inputs,'fit',m.parameters.fit(n),'double');
 
@@ -72,4 +73,10 @@
 		end
 
+		disp('      update velocity...');    
+		inputs=add(inputs,m.parameters.control_type,p_g,'doublevec',2,m.parameters.numberofnodes);
+		u_g=diagnostic_core_nonlinear(m,inputs,md.analysis_type);
+		inputs=add(inputs,'velocity',u_g,'doublevec',2,m.parameters.numberofnodes);
+		disp('      done.');
+
 		%some temporary saving 
 		if(mod(n,5)==0),
