Index: /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 13485)
+++ /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 13486)
@@ -29,4 +29,5 @@
 	AutodiffFosForwardIndexEnum,
 	AutodiffFovForwardIndicesEnum,
+	AutodiffMassFluxSegmentsPresentEnum,
 	BalancethicknessSpcthicknessEnum,
 	BalancethicknessStabilizationEnum,
@@ -159,4 +160,5 @@
 	MassFluxSegmentsEnum,
 	MassFluxSegmentsPresentEnum,
+	QmuMassFluxSegmentsPresentEnum,
 	QmuNumberofpartitionsEnum,
 	QmuNumberofresponsesEnum,
Index: /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 13485)
+++ /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 13486)
@@ -34,4 +34,5 @@
 		case AutodiffFosForwardIndexEnum : return "AutodiffFosForwardIndex";
 		case AutodiffFovForwardIndicesEnum : return "AutodiffFovForwardIndices";
+		case AutodiffMassFluxSegmentsPresentEnum : return "AutodiffMassFluxSegmentsPresent";
 		case BalancethicknessSpcthicknessEnum : return "BalancethicknessSpcthickness";
 		case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
@@ -164,4 +165,5 @@
 		case MassFluxSegmentsEnum : return "MassFluxSegments";
 		case MassFluxSegmentsPresentEnum : return "MassFluxSegmentsPresent";
+		case QmuMassFluxSegmentsPresentEnum : return "QmuMassFluxSegmentsPresent";
 		case QmuNumberofpartitionsEnum : return "QmuNumberofpartitions";
 		case QmuNumberofresponsesEnum : return "QmuNumberofresponses";
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 13485)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 13486)
@@ -25,8 +25,10 @@
 	Parameters *parameters       = NULL;
 	IssmDouble *requestedoutputs = NULL;
-	bool        isdelta18o,isautodiff;
+	bool        isdelta18o;
 
 	/*parameters for mass flux: {{{*/
 	int      mass_flux_num_profiles=0;
+	bool     qmu_mass_flux_present=false;
+	bool     autodiff_mass_flux_present=false;
 	bool     mass_flux_present=false;
 	IssmDouble** array=NULL;
@@ -156,63 +158,64 @@
 		
 	
-	if(isautodiff){
-		/*Deal with mass flux segments: {{{*/
-		iomodel->Constant(&isautodiff,AutodiffIsautodiffEnum);
-		iomodel->FetchData(&mass_flux_present,MassFluxSegmentsPresentEnum);
-		parameters->AddObject(new BoolParam(MassFluxSegmentsPresentEnum,mass_flux_present));
-
-		if(mass_flux_present){
-
-			/*Fetch the mass flux segments necessary to compute the mass fluxes.  Build a DoubleMatArrayParam object out of them: */ 
-			iomodel->FetchData(&array,&mdims_array,&ndims_array,&mass_flux_num_profiles,MassFluxSegmentsEnum);
-			if(mass_flux_num_profiles==0)_error_("mass_flux_num_profiles is 0, when MassFlux computations were requested!");
-
-			/*Go through segments, and extract those that belong to this cpu: */
-			for(i=0;i<mass_flux_num_profiles;i++){
-				temp_matrix=array[i];
-				temp_m=mdims_array[i];
-				temp_n=ndims_array[i];
-
-				m=0;
+	/*Deal with mass flux segments: {{{*/
+	iomodel->FetchData(&qmu_mass_flux_present,QmuMassFluxSegmentsPresentEnum);
+	iomodel->FetchData(&autodiff_mass_flux_present,AutodiffMassFluxSegmentsPresentEnum);
+
+	if(qmu_mass_flux_present || autodiff_mass_flux_present)mass_flux_present=true;
+	else mass_flux_present=false;
+	parameters->AddObject(new BoolParam(MassFluxSegmentsPresentEnum,mass_flux_present));
+
+	if(mass_flux_present){
+
+		/*Fetch the mass flux segments necessary to compute the mass fluxes.  Build a DoubleMatArrayParam object out of them: */ 
+		iomodel->FetchData(&array,&mdims_array,&ndims_array,&mass_flux_num_profiles,MassFluxSegmentsEnum);
+		if(mass_flux_num_profiles==0)_error_("mass_flux_num_profiles is 0, when MassFlux computations were requested!");
+
+		/*Go through segments, and extract those that belong to this cpu: */
+		for(i=0;i<mass_flux_num_profiles;i++){
+			temp_matrix=array[i];
+			temp_m=mdims_array[i];
+			temp_n=ndims_array[i];
+
+			m=0;
+			for(j=0;j<temp_m;j++){
+				if (  iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1] )m++;
+			}
+			if(m){
+				matrix=xNewZeroInit<IssmDouble>(5*m);
+				count=0;
 				for(j=0;j<temp_m;j++){
-					if (  iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1] )m++;
-				}
-				if(m){
-					matrix=xNewZeroInit<IssmDouble>(5*m);
-					count=0;
-					for(j=0;j<temp_m;j++){
-						if (iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1]){
-							for(k=0;k<5;k++)*(matrix+5*count+k)=*(temp_matrix+5*j+k);
-							count++;
-						}
+					if (iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1]){
+						for(k=0;k<5;k++)*(matrix+5*count+k)=*(temp_matrix+5*j+k);
+						count++;
 					}
 				}
-				else{
-					matrix=NULL;
-				}
-
-				/*Assign: */
-				array[i]=matrix;
-				mdims_array[i]=m;
-				ndims_array[i]=5;
-
-				/*Free temporary matrix: */
-				xDelete<IssmDouble>(temp_matrix);
 			}
-
-			/*Ok, we have an array of segments, different on every cpu. Create a DoubleMatArrayParam object with it: */
-			parameters->AddObject(new DoubleMatArrayParam(MassFluxSegmentsEnum,array,mass_flux_num_profiles,mdims_array,ndims_array));
-
-			/*Free data: */
-			for(i=0;i<mass_flux_num_profiles;i++){
-				IssmDouble* matrix=array[i];
-				xDelete<IssmDouble>(matrix);
+			else{
+				matrix=NULL;
 			}
-			xDelete<int>(mdims_array); 
-			xDelete<int>(ndims_array);
-			xDelete<IssmDouble*>(array);
+
+			/*Assign: */
+			array[i]=matrix;
+			mdims_array[i]=m;
+			ndims_array[i]=5;
+
+			/*Free temporary matrix: */
+			xDelete<IssmDouble>(temp_matrix);
 		}
-		/*}}}*/
+
+		/*Ok, we have an array of segments, different on every cpu. Create a DoubleMatArrayParam object with it: */
+		parameters->AddObject(new DoubleMatArrayParam(MassFluxSegmentsEnum,array,mass_flux_num_profiles,mdims_array,ndims_array));
+
+		/*Free data: */
+		for(i=0;i<mass_flux_num_profiles;i++){
+			IssmDouble* matrix=array[i];
+			xDelete<IssmDouble>(matrix);
+		}
+		xDelete<int>(mdims_array); 
+		xDelete<int>(ndims_array);
+		xDelete<IssmDouble*>(array);
 	}
+	/*}}}*/
 
 	/*Before returning, create parameters in case we are running Qmu or control types runs: */
Index: /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 13485)
+++ /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 13486)
@@ -35,4 +35,5 @@
 	      else if (strcmp(name,"AutodiffFosForwardIndex")==0) return AutodiffFosForwardIndexEnum;
 	      else if (strcmp(name,"AutodiffFovForwardIndices")==0) return AutodiffFovForwardIndicesEnum;
+	      else if (strcmp(name,"AutodiffMassFluxSegmentsPresent")==0) return AutodiffMassFluxSegmentsPresentEnum;
 	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
 	      else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
@@ -137,9 +138,9 @@
 	      else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum;
 	      else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum;
-	      else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum;
          else stage=2;
    }
    if(stage==2){
-	      if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;
+	      if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum;
+	      else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;
 	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
 	      else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;
@@ -168,4 +169,5 @@
 	      else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;
 	      else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
+	      else if (strcmp(name,"QmuMassFluxSegmentsPresent")==0) return QmuMassFluxSegmentsPresentEnum;
 	      else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
 	      else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
@@ -259,10 +261,10 @@
 	      else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
 	      else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
-	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
-	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
+	      if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
+	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
+	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
 	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
 	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
@@ -382,10 +384,10 @@
 	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
-	      else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
-	      else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum;
+	      if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
+	      else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
+	      else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum;
 	      else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
 	      else if (strcmp(name,"TemperatureSurface")==0) return TemperatureSurfaceEnum;
@@ -505,10 +507,10 @@
 	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
 	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
-	      else if (strcmp(name,"XY")==0) return XYEnum;
-	      else if (strcmp(name,"XYZP")==0) return XYZPEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"Option")==0) return OptionEnum;
+	      if (strcmp(name,"XY")==0) return XYEnum;
+	      else if (strcmp(name,"XYZP")==0) return XYZPEnum;
+	      else if (strcmp(name,"Option")==0) return OptionEnum;
 	      else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
 	      else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
Index: /issm/trunk-jpl/src/m/classes/autodiff.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 13485)
+++ /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 13486)
@@ -56,5 +56,8 @@
 			
 			%early return
-			if ~obj.isautodiff, return; end
+			if ~obj.isautodiff, 
+				WriteData(fid,'data',false,'enum',AutodiffMassFluxSegmentsPresentEnum,'format','Boolean');
+				return; 
+			end
 
 			%process dependent variables {{{
@@ -148,9 +151,11 @@
 				end
 			end
-			if ~isempty(mass_flux_segments),
+			if ~isempty(mass_flux_segments), 
 				WriteData(fid,'data',mass_flux_segments,'enum',MassFluxSegmentsEnum,'format','MatArray');
 				flag=true;
-				WriteData(fid,'data',flag,'enum',MassFluxSegmentsPresentEnum,'format','Boolean');
+			else 
+				flag=false; 
 			end
+			WriteData(fid,'data',flag,'enum',AutodiffMassFluxSegmentsPresentEnum,'format','Boolean');
 			%}}}
 
Index: /issm/trunk-jpl/src/m/classes/qmu.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu.m	(revision 13485)
+++ /issm/trunk-jpl/src/m/classes/qmu.m	(revision 13486)
@@ -142,5 +142,8 @@
 		function marshall(obj,fid) % {{{
 			WriteData(fid,'object',obj,'fieldname','isdakota','format','Boolean');
-			if ~obj.isdakota, return; end
+			if ~obj.isdakota, 
+				WriteData(fid,'data',false,'enum',QmuMassFluxSegmentsPresentEnum,'format','Boolean');
+				return; 
+			end
 			WriteData(fid,'object',obj,'fieldname','partition','format','DoubleMat','mattype',2);
 			WriteData(fid,'object',obj,'fieldname','numberofpartitions','format','Integer');
@@ -148,9 +151,11 @@
 			WriteData(fid,'object',obj,'fieldname','variabledescriptors','format','StringArray');
 			WriteData(fid,'object',obj,'fieldname','responsedescriptors','format','StringArray');
-			WriteData(fid,'data',obj.mass_flux_segments,'enum',MassFluxSegmentsEnum,'format','MatArray');
-			if ~isempty(mass_flux_segments),
-				flag=true;
-				WriteData(fid,'data',flag,'enum',MassFluxSegmentsPrsentEnum,'format','Boolean');
+			if ~isempty(obj.mass_flux_segments), 
+				WriteData(fid,'data',obj.mass_flux_segments,'enum',MassFluxSegmentsEnum,'format','MatArray');
+				flag=true; 
+			else 
+				flag=false; 
 			end
+			WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum,'format','Boolean');
 		end % }}}
 	end
Index: /issm/trunk-jpl/src/m/enum/AutodiffMassFluxSegmentsPresentEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/AutodiffMassFluxSegmentsPresentEnum.m	(revision 13486)
+++ /issm/trunk-jpl/src/m/enum/AutodiffMassFluxSegmentsPresentEnum.m	(revision 13486)
@@ -0,0 +1,11 @@
+function macro=AutodiffMassFluxSegmentsPresentEnum()
+%AUTODIFFMASSFLUXSEGMENTSPRESENTENUM - Enum of AutodiffMassFluxSegmentsPresent
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=AutodiffMassFluxSegmentsPresentEnum()
+
+macro=StringToEnum('AutodiffMassFluxSegmentsPresent');
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 13485)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 13486)
@@ -179,4 +179,14 @@
 	return StringToEnum('AutodiffFovForwardIndices')[0]
 
+def AutodiffMassFluxSegmentsPresentEnum():
+	"""
+	AUTODIFFMASSFLUXSEGMENTSPRESENTENUM - Enum of AutodiffMassFluxSegmentsPresent
+
+	   Usage:
+	      macro=AutodiffMassFluxSegmentsPresentEnum()
+	"""
+
+	return StringToEnum('AutodiffMassFluxSegmentsPresent')[0]
+
 def BalancethicknessSpcthicknessEnum():
 	"""
@@ -1479,4 +1489,14 @@
 	return StringToEnum('MassFluxSegmentsPresent')[0]
 
+def QmuMassFluxSegmentsPresentEnum():
+	"""
+	QMUMASSFLUXSEGMENTSPRESENTENUM - Enum of QmuMassFluxSegmentsPresent
+
+	   Usage:
+	      macro=QmuMassFluxSegmentsPresentEnum()
+	"""
+
+	return StringToEnum('QmuMassFluxSegmentsPresent')[0]
+
 def QmuNumberofpartitionsEnum():
 	"""
@@ -4907,4 +4927,4 @@
 	"""
 
-	return 489
-
+	return 491
+
Index: /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 13485)
+++ /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 13486)
@@ -9,3 +9,3 @@
 %      macro=MaximumNumberOfEnums()
 
-macro=489;
+macro=491;
Index: /issm/trunk-jpl/src/m/enum/QmuMassFluxSegmentsPresentEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/QmuMassFluxSegmentsPresentEnum.m	(revision 13486)
+++ /issm/trunk-jpl/src/m/enum/QmuMassFluxSegmentsPresentEnum.m	(revision 13486)
@@ -0,0 +1,11 @@
+function macro=QmuMassFluxSegmentsPresentEnum()
+%QMUMASSFLUXSEGMENTSPRESENTENUM - Enum of QmuMassFluxSegmentsPresent
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=QmuMassFluxSegmentsPresentEnum()
+
+macro=StringToEnum('QmuMassFluxSegmentsPresent');
Index: /issm/trunk-jpl/test/NightlyRun/test223.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test223.m	(revision 13485)
+++ /issm/trunk-jpl/test/NightlyRun/test223.m	(revision 13486)
@@ -4,5 +4,5 @@
 md=setflowequation(md,'macayeal','all');
 md.geometry.bed=md.geometry.bed+50; md.geometry.surface=md.geometry.surface+50;
-md.cluster=generic('name',oshostname(),'np',3);
+md.cluster=generic('name',oshostname(),'np',1);
 md.prognostic.hydrostatic_adjustment='Incremental';
 md=solve(md,TransientSolutionEnum);
