Index: /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 771)
+++ /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 772)
@@ -27,8 +27,14 @@
 	double* maxiter=NULL; 
 	double* control_parameter=NULL;
+	double* param_g=NULL;
+
 	double* vx_obs=NULL;
 	double* vy_obs=NULL;
 	double* u_g_obs=NULL;
-	double* p_g=NULL;
+
+	double* vx=NULL;
+	double* vy=NULL;
+	double* vz=NULL;
+	double* u_g=NULL;
 
 	/*Get parameters: */
@@ -41,5 +47,4 @@
 	param->SetString(model->control_type);
 	parameters->AddObject(param);
-
 
 	/*nsteps: */
@@ -103,8 +108,21 @@
 	xfree((void**)&model->maxiter);
 
-	/*Get vx_obs, vy_obs, and the parameter value: */
+	/*Get vx, vx_obs, vy, vy_obs, and the parameter value: */
+	ModelFetchData((void**)&vx,NULL,NULL,model_handle,"vx","Matrix","Mat");
+	ModelFetchData((void**)&vy,NULL,NULL,model_handle,"vy","Matrix","Mat");
+	ModelFetchData((void**)&vz,NULL,NULL,model_handle,"vz","Matrix","Mat");
 	ModelFetchData((void**)&vx_obs,NULL,NULL,model_handle,"vx_obs","Matrix","Mat");
 	ModelFetchData((void**)&vy_obs,NULL,NULL,model_handle,"vy_obs","Matrix","Mat");
 	ModelFetchData((void**)&control_parameter,NULL,NULL,model_handle,model->control_type,"Matrix","Mat");
+
+	u_g=(double*)xcalloc(model->numberofnodes*2,sizeof(double));
+	if(vx)for(i=0;i<model->numberofnodes;i++)u_g[3*i+0]=vx[i]/model->yts;
+	if(vy)for(i=0;i<model->numberofnodes;i++)u_g[3*i+1]=vy[i]/model->yts;
+	if(vz)for(i=0;i<model->numberofnodes;i++)u_g[3*i+2]=vz[i]/model->yts;
+
+	count++;
+	param= new Param(count,"u_g",DOUBLEVEC);
+	param->SetDoubleVec(u_g,3*model->numberofnodes,3);
+	parameters->AddObject(param);
 
 	u_g_obs=(double*)xcalloc(model->numberofnodes*2,sizeof(double));
@@ -117,22 +135,23 @@
 	parameters->AddObject(param);
 	
-	p_g=(double*)xcalloc(model->numberofnodes*2,sizeof(double));
-	for(i=0;i<model->numberofnodes;i++)p_g[2*i+0]=control_parameter[i];
+	param_g=(double*)xcalloc(model->numberofnodes*2,sizeof(double));
+	for(i=0;i<model->numberofnodes;i++)param_g[2*i+0]=control_parameter[i];
 
 	count++;
 	param= new Param(count,"param_g",DOUBLEVEC);
-	param->SetDoubleVec(p_g,model->numberofnodes,1);
+	param->SetDoubleVec(param_g,2*model->numberofnodes,2);
 	parameters->AddObject(param);
 
+	xfree((void**)&vx);
+	xfree((void**)&vy);
+	xfree((void**)&vz);
+	xfree((void**)&u_g);
 	xfree((void**)&vx_obs);
 	xfree((void**)&vy_obs);
 	xfree((void**)&u_g_obs);
-	xfree((void**)&p_g);
+	xfree((void**)&param_g);
 	xfree((void**)&control_parameter);
-
 
 	/*Assign output pointer: */
 	*pparameters=parameters;
 }
-
-	
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateParametersDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateParametersDiagnosticHoriz.cpp	(revision 771)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateParametersDiagnosticHoriz.cpp	(revision 772)
@@ -57,4 +57,2 @@
 	*pparameters=parameters;
 }
-
-	
