Index: /issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 3042)
+++ /issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 3043)
@@ -47,4 +47,10 @@
 	int num_qmu_mass_flux_segments=0;
 	int my_num_qmu_mass_flux_segments=0;
+	
+	/*parameters for misfit: */
+	double* u_g_obs=NULL;
+	double* vx_obs=NULL;
+	double* vy_obs=NULL;
+	double* fit=NULL;
 
 	#ifdef _SERIAL_
@@ -272,4 +278,32 @@
 				xfree((void**)&my_qmu_mass_flux_segments);
 			}
+			if (strcmp(descriptor,"misfit")==0){
+
+				/*We need the observed velocity: */
+				IoModelFetchData(&vx_obs,NULL,NULL,iomodel_handle,"vx_obs");
+				IoModelFetchData(&vy_obs,NULL,NULL,iomodel_handle,"vy_obs");
+
+				/*Now, recover fit: */
+				IoModelFetchData(&iomodel->fit,NULL,NULL,iomodel_handle,"fit");
+
+				u_g_obs=(double*)xcalloc(iomodel->numberofnodes*2,sizeof(double));
+				if(vx_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+0]=vx_obs[i]/iomodel->yts;
+				if(vy_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+1]=vy_obs[i]/iomodel->yts;
+
+				count++;
+				param= new Param(count,"velocity_obs",DOUBLEVEC);
+				param->SetDoubleVec(u_g_obs,2*iomodel->numberofnodes,2);
+				parameters->AddObject(param);
+
+				count++;
+				param= new Param(count,"fit",DOUBLEVEC);
+				param->SetDoubleVec(iomodel->fit,iomodel->nsteps);
+				parameters->AddObject(param);
+
+				xfree((void**)&u_g_obs);
+				xfree((void**)&vx_obs);
+				xfree((void**)&vy_obs);
+				xfree((void**)&fit);
+			}
 		}
 
