Index: /issm/trunk-jpl/src/c/classes/Definition.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Definition.h	(revision 18872)
+++ /issm/trunk-jpl/src/c/classes/Definition.h	(revision 18873)
@@ -13,4 +13,5 @@
 		virtual       ~Definition(){};
 		virtual char*  Name()=0;
+		virtual int    DefinitionEnum()=0;
 		virtual IssmDouble  Response(FemModel*)=0;
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 18872)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 18873)
@@ -30,4 +30,5 @@
 				int          numgates;
 				char       **gatenames               = NULL;
+				int        *gatedefinitionenums      = NULL;
 				IssmDouble **gatesegments            = NULL;
 				int         *gatesegments_M          = NULL;
@@ -36,8 +37,9 @@
 				/*Fetch segments and names: */
 				iomodel->FetchMultipleData(&gatenames,&numgates,MassfluxatgateNameEnum);
+				iomodel->FetchMultipleData(&gatedefinitionenums,&numgates,MassfluxatgateDefinitionenumEnum);
 				iomodel->FetchMultipleData(&gatesegments,&gatesegments_M,NULL,&numgates,MassfluxatgateSegmentsEnum);
 
 				for(j=0;j<numgates;j++){
-					output_definitions->AddObject(new Massfluxatgate<IssmDouble>(gatenames[j],gatesegments_M[j],gatesegments[j]));
+					output_definitions->AddObject(new Massfluxatgate<IssmDouble>(gatenames[j],gatedefinitionenums[j],gatesegments_M[j],gatesegments[j]));
 				}
 				/*Free ressources:*/
@@ -49,4 +51,5 @@
 				xDelete<IssmDouble*>(gatesegments);
 				xDelete<int>(gatesegments_M);
+				xDelete<int>(gatedefinitionenums);
 				/*}}}*/
 			}
@@ -57,4 +60,5 @@
 				int          nummisfits;
 				char**       misfit_name_s             = NULL;    
+				int*         misfit_definitionenums_s             = NULL;    
 				int*         misfit_model_enum_s        = NULL;
 				IssmDouble** misfit_observation_s      = NULL;
@@ -70,4 +74,5 @@
 				/*Fetch name, model_enum, observation, observation_enum, etc ... (see src/m/classes/misfit.m): */
 				iomodel->FetchMultipleData(&misfit_name_s,&nummisfits,MisfitNameEnum);
+				iomodel->FetchMultipleData(&misfit_definitionenums_s,&nummisfits,MisfitDefinitionenumEnum);
 				iomodel->FetchMultipleData(&misfit_model_enum_s,&nummisfits,MisfitModelEnumEnum);
 				iomodel->FetchMultipleData(&misfit_observation_s,&misfit_observation_M_s,&misfit_observation_N_s,&nummisfits,MisfitObservationEnum);
@@ -80,5 +85,5 @@
 
 					/*First create a misfit object for that specific enum (misfit_model_enum_s[j]):*/
-					output_definitions->AddObject(new Misfit(misfit_name_s[j],misfit_model_enum_s[j],misfit_observation_enum_s[j],misfit_timeinterpolation_s[j],misfit_weights_enum_s[j]));
+					output_definitions->AddObject(new Misfit(misfit_name_s[j],misfit_definitionenums_s[j],misfit_model_enum_s[j],misfit_observation_enum_s[j],misfit_timeinterpolation_s[j],misfit_weights_enum_s[j]));
 
 					/*Now, for this particular misfit object, make sure we plug into the elements: the observation, and the weights.*/
@@ -120,4 +125,5 @@
 				int          nummasscons;
 				char**       masscon_name_s             = NULL;    
+				int*         masscon_definitionenum_s   = NULL;    
 				IssmDouble** masscon_levelset_s           = NULL;
 				int*         masscon_levelset_M_s    = NULL;
@@ -126,9 +132,10 @@
 				/*Fetch name and levelset, etc ... (see src/m/classes/masscon.m): */
 				iomodel->FetchMultipleData(&masscon_name_s,&nummasscons,MassconNameEnum);
+				iomodel->FetchMultipleData(&masscon_definitionenum_s,&nummasscons,MassconDefinitionenumEnum);
 				iomodel->FetchMultipleData(&masscon_levelset_s,&masscon_levelset_M_s,&masscon_levelset_N_s,&nummasscons,MassconLevelsetEnum);
 				for(j=0;j<nummasscons;j++){
 
 					/*Create a masscon object: */
-					output_definitions->AddObject(new Masscon(masscon_name_s[j],masscon_levelset_s[j],masscon_levelset_M_s[j]));
+					output_definitions->AddObject(new Masscon(masscon_name_s[j],masscon_definitionenum_s[j],masscon_levelset_s[j],masscon_levelset_M_s[j]));
 
 				}
@@ -146,4 +153,5 @@
 				xDelete<int>(masscon_levelset_M_s);
 				xDelete<int>(masscon_levelset_N_s);
+				xDelete<int>(masscon_definitionenum_s);
 				/*}}}*/
 			}
@@ -153,4 +161,5 @@
 				/*masscon variables: */
 				char**       masscon_name_s             = NULL;    
+				int*         masscon_definitionenum_s             = NULL;    
 				char**       masscon_namex_s             = NULL;    
 				char**       masscon_namey_s             = NULL;    
@@ -161,4 +170,5 @@
 				/*Fetch names and multiplicators, etc ... (see src/m/classes/masscon_axpby.m): */
 				iomodel->FetchMultipleData(&masscon_name_s,&num,MassconaxpbyNameEnum);
+				iomodel->FetchMultipleData(&masscon_definitionenum_s,&num,MassconaxpbyDefinitionenumEnum);
 				iomodel->FetchMultipleData(&masscon_namex_s,&num,MassconaxpbyNamexEnum);
 				iomodel->FetchMultipleData(&masscon_namey_s,&num,MassconaxpbyNameyEnum);
@@ -168,5 +178,5 @@
 
 					/*Create a masscon axpyb object: */
-					output_definitions->AddObject(new Massconaxpby(masscon_name_s[j],masscon_namex_s[j],masscon_namey_s[j],masscon_alpha_s[j],masscon_beta_s[j]));
+					output_definitions->AddObject(new Massconaxpby(masscon_name_s[j],masscon_definitionenum_s[j],masscon_namex_s[j],masscon_namey_s[j],masscon_alpha_s[j],masscon_beta_s[j]));
 
 				}
@@ -182,4 +192,5 @@
 				xDelete<char*>(masscon_namex_s);
 				xDelete<char*>(masscon_namey_s);
+				xDelete<int>(masscon_definitionenum_s);
 				xDelete<IssmDouble>(masscon_alpha_s);
 				xDelete<IssmDouble>(masscon_beta_s);
