Index: /issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 4427)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 4428)
@@ -39,6 +39,10 @@
 	double* qmu_mass_flux_segments=NULL;
 	double* my_qmu_mass_flux_segments=NULL;
-	int num_qmu_mass_flux_segments=0;
-	int my_num_qmu_mass_flux_segments=0;
+	double* qmu_mass_flux_num_segments=NULL;
+	double* my_qmu_mass_flux_num_segments=NULL;
+	int tot_qmu_mass_flux_segments=0;
+	int my_tot_qmu_mass_flux_segments=0;
+	int tot_qmu_mass_flux_num_segments=0;
+	int my_tot_qmu_mass_flux_num_segments=0;
 
 	#ifdef _SERIAL_
@@ -155,5 +159,6 @@
 
 				/*We need the qmu_mass_flux_segments to be able to compute the mass flux: */
-				IoModelFetchData(&qmu_mass_flux_segments,&num_qmu_mass_flux_segments,NULL,iomodel_handle,"qmu_mass_flux_segments");
+				IoModelFetchData(&qmu_mass_flux_segments,&tot_qmu_mass_flux_segments,NULL,iomodel_handle,"qmu_mass_flux_segments");
+				IoModelFetchData(&qmu_mass_flux_num_segments,&tot_qmu_mass_flux_num_segments,NULL,iomodel_handle,"qmu_mass_flux_num_segments");
 
 				#ifdef _PARALLEL_
@@ -164,14 +169,14 @@
 						/*Use the element partitioning vector from the iomodel to down select qmu_mass_flux_segments to only segments that are relevant 
 						 * to this cpu: */
-						my_num_qmu_mass_flux_segments=0;
-						for(j=0;j<num_qmu_mass_flux_segments;j++){
-							if (  iomodel->my_elements[(int)(*(qmu_mass_flux_segments+5*j+4))-1])my_num_qmu_mass_flux_segments++;
+						my_tot_qmu_mass_flux_segments=0;
+						for(j=0;j<tot_qmu_mass_flux_segments;j++){
+							if (  iomodel->my_elements[(int)(*(qmu_mass_flux_segments+5*j+4))-1])my_tot_qmu_mass_flux_segments++;
 						}
 
 					
-						if(my_num_qmu_mass_flux_segments){
-							my_qmu_mass_flux_segments=(double*)xcalloc(5*my_num_qmu_mass_flux_segments,sizeof(double));
+						if(my_tot_qmu_mass_flux_segments){
+							my_qmu_mass_flux_segments=(double*)xcalloc(5*my_tot_qmu_mass_flux_segments,sizeof(double));
 							second_count=0;
-							for(j=0;j<num_qmu_mass_flux_segments;j++){
+							for(j=0;j<tot_qmu_mass_flux_segments;j++){
 								if (iomodel->my_elements[(int)*(qmu_mass_flux_segments+5*j+4)-1]){
 									for(k=0;k<5;k++)*(my_qmu_mass_flux_segments+5*second_count+k)=*(qmu_mass_flux_segments+5*j+k);
@@ -181,5 +186,5 @@
 						}
 
-						parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,my_qmu_mass_flux_segments,my_num_qmu_mass_flux_segments,5));
+						parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,my_qmu_mass_flux_segments,my_tot_qmu_mass_flux_segments,5));
 
 					}
@@ -187,5 +192,6 @@
 				#else
 
-					parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,qmu_mass_flux_segments,num_qmu_mass_flux_segments,5));
+					parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,qmu_mass_flux_segments,tot_qmu_mass_flux_segments,5));
+					parameters->AddObject(new DoubleVecParam(QmuMassFluxNumSegmentsEnum,qmu_mass_flux_num_segments,tot_qmu_mass_flux_num_segments));
 
 				#endif
@@ -193,4 +199,6 @@
 				xfree((void**)&qmu_mass_flux_segments);
 				xfree((void**)&my_qmu_mass_flux_segments);
+				xfree((void**)&qmu_mass_flux_num_segments);
+				xfree((void**)&my_qmu_mass_flux_num_segments);
 			}
 			if (strcmp(descriptor,"misfit")==0){
