Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 21743)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 21744)
@@ -53,7 +53,6 @@
 				/*Free ressources:*/
 				for(j=0;j<numgates;j++){
-					char*       string  = gatenames[j];             xDelete<char>(string);
-					char*       string2 = gatedefinitionstrings[j]; xDelete<char>(string2);
-					IssmDouble* gate    = gatesegments[j];          xDelete<IssmDouble>(gate);
+					char*       string = gatenames[j];    xDelete<char>(string);
+					IssmDouble* gate   = gatesegments[j]; xDelete<IssmDouble>(gate);
 				}
 				xDelete<char*>(gatenames);
@@ -95,4 +94,12 @@
 				for(j=0;j<nummisfits;j++){
 
+					int obs_vector_type=0;
+					if ((misfit_observation_M_s[j]==iomodel->numberofvertices) || (misfit_observation_M_s[j]==iomodel->numberofvertices+1))obs_vector_type=1;
+					if ((misfit_observation_M_s[j]==iomodel->numberofelements) || (misfit_observation_M_s[j]==iomodel->numberofelements+1))obs_vector_type=2;
+					int weight_vector_type=0;
+					if ((misfit_weights_M_s[j]==iomodel->numberofvertices) || (misfit_weights_M_s[j]==iomodel->numberofvertices+1))weight_vector_type=1;
+					if ((misfit_weights_M_s[j]==iomodel->numberofelements) || (misfit_weights_M_s[j]==iomodel->numberofelements+1))weight_vector_type=2;
+
+
 					/*First create a misfit object for that specific string (misfit_model_string_s[j]):*/
 					output_definitions->AddObject(new Misfit(misfit_name_s[j],StringToEnumx(misfit_definitionstring_s[j]),StringToEnumx(misfit_model_string_s[j]),StringToEnumx(misfit_observation_string_s[j]),misfit_timeinterpolation_s[j],misfit_local_s[j],StringToEnumx(misfit_weights_string_s[j])));
@@ -101,6 +108,6 @@
 					for(int k=0;k<elements->Size();k++){
 						Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(k));
-						element->InputCreate(misfit_observation_s[j], iomodel,misfit_observation_M_s[j],misfit_observation_N_s[j],1,StringToEnumx(misfit_observation_string_s[j]),7);
-						element->InputCreate(misfit_weights_s[j], iomodel,misfit_weights_M_s[j],misfit_weights_N_s[j],1,StringToEnumx(misfit_weights_string_s[j]),7);
+						element->InputCreate(misfit_observation_s[j], iomodel,misfit_observation_M_s[j],misfit_observation_N_s[j],obs_vector_type,StringToEnumx(misfit_observation_string_s[j]),7);
+						element->InputCreate(misfit_weights_s[j], iomodel,misfit_weights_M_s[j],misfit_weights_N_s[j],weight_vector_type,StringToEnumx(misfit_weights_string_s[j]),7);
 					}
 
@@ -212,5 +219,5 @@
 				/*masscon variables: */
 				char**       masscon_name_s             = NULL;    
-				int*         masscon_definitionenum_s             = NULL;    
+				char**		 masscon_definitionstring_s		= NULL;    
 				char**       masscon_namex_s             = NULL;    
 				char**       masscon_namey_s             = NULL;    
@@ -221,5 +228,5 @@
 				/*Fetch names and multiplicators, etc ... (see src/m/classes/masscon_axpby.m): */
 				iomodel->FetchMultipleData(&masscon_name_s,&num,          "md.massconaxpby.name");
-				iomodel->FetchMultipleData(&masscon_definitionenum_s,&num,"md.massconaxpby.definitionenum");
+				iomodel->FetchMultipleData(&masscon_definitionstring_s,&num,"md.massconaxpby.definitionstring");
 				iomodel->FetchMultipleData(&masscon_namex_s,&num,         "md.massconaxpby.namex");
 				iomodel->FetchMultipleData(&masscon_namey_s,&num,         "md.massconaxpby.namey");
@@ -229,5 +236,5 @@
 
 					/*Create a masscon axpyb object: */
-					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]));
+					output_definitions->AddObject(new Massconaxpby(masscon_name_s[j],StringToEnumx(masscon_definitionstring_s[j]),masscon_namex_s[j],masscon_namey_s[j],masscon_alpha_s[j],masscon_beta_s[j]));
 
 				}
@@ -236,12 +243,13 @@
 				for(j=0;j<num;j++){
 					char* string=NULL;
+					string = masscon_definitionstring_s[j];    xDelete<char>(string);
 					string = masscon_name_s[j];    xDelete<char>(string);
 					string = masscon_namex_s[j];    xDelete<char>(string);
 					string = masscon_namey_s[j];    xDelete<char>(string);
 				}
+				xDelete<char*>(masscon_definitionstring_s);
 				xDelete<char*>(masscon_name_s);
 				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);
