Index: /issm/trunk-jpl/src/m/classes/masscon.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/masscon.m	(revision 18880)
+++ /issm/trunk-jpl/src/m/classes/masscon.m	(revision 18881)
@@ -14,4 +14,5 @@
 		%masscon
 		name              = '';
+		definitionenum   = NaN; %enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum
 		levelset          = NaN; %levelset vectorial field which identifies the boundaries of the masscon
 	end
@@ -28,4 +29,5 @@
 				obj.name=getfieldvalue(options,'name','');
 				obj.levelset=getfieldvalue(options,'levelset');
+				obj.definitionenum=getfieldvalue(options,'definitionenum');
 
 			end
@@ -38,4 +40,6 @@
 				error('masscon error message: ''name'' field should be a string!');
 			end
+			
+			md = checkfield(md,'fieldname','obj.definitionenum','field',obj.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
 
 			md = checkfield(md,'fieldname','obj.levelset','field',obj.levelset,'forcing',1,'NaN',1);
@@ -47,4 +51,5 @@
 
 			fielddisplay(obj,'name','identifier for this masscon response');
+			fielddisplay(obj,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
 			fielddisplay(obj,'levelset','levelset vectorial field which identifies the boundaries of the masscon');
 
@@ -53,4 +58,5 @@
 
 		WriteData(fid,'object',obj,'fieldname','name','format','String');
+		WriteData(fid,'object',obj,'fieldname','definitionenum','format','Integer');
 		WriteData(fid,'object',obj,'fieldname','levelset','format','DoubleMat','mattype',1);
 
Index: /issm/trunk-jpl/src/m/classes/massconaxpby.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/massconaxpby.m	(revision 18880)
+++ /issm/trunk-jpl/src/m/classes/massconaxpby.m	(revision 18881)
@@ -15,4 +15,5 @@
 		%masscon axpby
 		name              = '';
+		definitionenum   = NaN; %enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum
 		namex              = '';
 		namey              = '';
@@ -31,4 +32,5 @@
 				%get names
 				obj.name=getfieldvalue(options,'name','');
+				obj.definitionenum=getfieldvalue(options,'definitionenum');
 				obj.namex=getfieldvalue(options,'namex');
 				obj.namey=getfieldvalue(options,'namey');
@@ -48,4 +50,6 @@
 			if ~ischar(obj.namex), error('masscon error message: ''namex'' field should be a string!'); end
 			if ~ischar(obj.namey), error('masscon error message: ''namey'' field should be a string!'); end
+			
+			md = checkfield(md,'fieldname','obj.definitionenum','field',obj.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
 
 			md = checkfield(md,'fieldname','obj.alpha','field',obj.alpha,'NaN',1,'size',[1 1]);
@@ -58,4 +62,5 @@
 
 			fielddisplay(obj,'name','name');
+			fielddisplay(obj,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
 			fielddisplay(obj,'namex','identifier for the first masscon');
 			fielddisplay(obj,'alpha','first masscon multiplicator');
@@ -67,4 +72,5 @@
 
 		WriteData(fid,'object',obj,'fieldname','name','format','String');
+		WriteData(fid,'object',obj,'fieldname','definitionenum','format','Integer');
 		WriteData(fid,'object',obj,'fieldname','namex','format','String');
 		WriteData(fid,'object',obj,'fieldname','namey','format','String');
Index: /issm/trunk-jpl/src/m/classes/massfluxatgate.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/massfluxatgate.m	(revision 18880)
+++ /issm/trunk-jpl/src/m/classes/massfluxatgate.m	(revision 18881)
@@ -3,5 +3,5 @@
 %   Usage:
 %      massfluxatgate=massfluxatgate();
-%      massfluxatgate=massfluxatgate('GateName','PathToExpFile');
+%      massfluxatgate=massfluxatgate('name','GateName','definitionname',Outputdefinition1Enum,'profilename','PathToExpFile');
 
 classdef massfluxatgate
@@ -9,4 +9,5 @@
 		%massfluxatgate 
 		name                = '';
+		definitionenum     = NaN; %enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum
 		profilename            = ''; 
 	end
@@ -16,14 +17,14 @@
 	methods
 		function obj = massfluxatgate(varargin) % {{{
-			switch nargin
-				case 0
-					obj=setdefaultparameters(obj);
-				case 1
-					obj.name=varargin{1};
-				case 2
-					obj.name=varargin{1};
-					obj.profilename=varargin{2};
-				otherwise
-					error('constructor not supported');
+			if nargin==0,
+				obj=setdefaultparameters(obj);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				obj.name=getfieldvalue(options,'name','');
+				obj.definitionenum=getfieldvalue(options,'definitionenum');
+				obj.profilename=getfieldvalue(options,'profilename');
 			end
 		end % }}}
@@ -38,4 +39,6 @@
 				error('massfluxatgate error message: ''profilename'' field should be a string!');
 			end
+			
+			md = checkfield(md,'fieldname','obj.definitionenum','field',obj.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
 
 			%check the profilename points to a file!: 
Index: /issm/trunk-jpl/src/m/classes/misfit.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/misfit.m	(revision 18880)
+++ /issm/trunk-jpl/src/m/classes/misfit.m	(revision 18881)
@@ -4,5 +4,5 @@
 %      misfit=misfit();
 %      misfit=misfit('name','SurfaceAltimetry',...
-%                    'model_enum',SurfaceEnum,...
+%                    'definitionenum',Outputdefinition1Enum, 'model_enum',SurfaceEnum,...
 %                    'observation_enum',SurfaceObservationsEnum,...
 %                    'observation',md.geometry.surface,...
@@ -17,4 +17,5 @@
 		%misfit
 		name              = '';
+		definitionenum   = NaN; %enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum
 		model_enum        = NaN; %enum for field that is modeled
 		observation       = NaN; %observed field that we compare the model against
@@ -36,4 +37,5 @@
 				%get name
 				obj.name=getfieldvalue(options,'name','');
+				obj.definitionenum=getfieldvalue(options,'definitionenum');
 				obj.model_enum=getfieldvalue(options,'model_enum');
 				obj.observation=getfieldvalue(options,'observation',NaN);
@@ -53,4 +55,5 @@
 				error('misfit error message: ''name'' field should be a string!');
 			end
+			md = checkfield(md,'fieldname','obj.definitionenum','field',obj.definitionenum,'values',[Outputdefinition1Enum,Outputdefinition2Enum,Outputdefinition3Enum,Outputdefinition4Enum,Outputdefinition5Enum,Outputdefinition6Enum,Outputdefinition7Enum,Outputdefinition8Enum,Outputdefinition9Enum,Outputdefinition10Enum]);
 
 			if ~ischar(obj.timeinterpolation),
@@ -67,4 +70,5 @@
 
 			fielddisplay(obj,'name','identifier for this misfit response');
+			fielddisplay(obj,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
 			fielddisplay(obj,'model_enum','enum for field that is modeled');
 			fielddisplay(obj,'observation','observed field that we compare the model against');
@@ -78,4 +82,5 @@
 
 		WriteData(fid,'object',obj,'fieldname','name','format','String');
+		WriteData(fid,'object',obj,'fieldname','definitionenum','format','Integer');
 		WriteData(fid,'object',obj,'fieldname','model_enum','format','Integer');
 		WriteData(fid,'object',obj,'fieldname','observation','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
