Index: /issm/trunk-jpl/src/m/classes/massfluxatgate.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/massfluxatgate.m	(revision 16297)
+++ /issm/trunk-jpl/src/m/classes/massfluxatgate.m	(revision 16297)
@@ -0,0 +1,59 @@
+%MASSFLUXATGATE class definition
+%
+%   Usage:
+%      massfluxatgate=massfluxatgate();
+
+classdef massfluxatgate
+	properties (SetAccess=public)  
+		%massfluxatgate 
+		name                = '';
+		profilename            = ''; 
+	end
+	properties (SetAccess=private)  
+		segments            = NaN;
+	end
+	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');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+		end % }}}
+		function md = checkconsistency(obj,md,solution,analyses) % {{{
+			
+			md = checkfield(md,'massfluxatgate.name','empty',1);
+			md = checkfield(md,'massfluxatgate.profilename','empty',1);
+
+			%check the profilename points to a file!: 
+			if exist(profilename,'file'),
+				error('massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!');
+			end
+		end % }}}
+		function disp(obj) % {{{
+			disp(sprintf('   Massfluxatgate:\n'));
+
+			fielddisplay(obj,'name','identifier for this massfluxatgate response');
+			fielddisplay(obj,'profilename','name of file (shapefile or argus file) defining a profile (or gate)');
+			
+		end % }}}
+		function marshall(obj,md,fid) % {{{
+
+		%before marshalling, we need to create the segments out of the profilename: 
+		obj.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,obj.profilename);
+
+		%ok, marshall name and segments: 
+		WriteData(fid,'object',obj,'fieldname','name','format','String');
+		WriteData(fid,'object',obj,'fieldname','segments','format','DoubleMat','mattype',1);
+
+		end % }}}
+	end
+end
Index: /issm/trunk-jpl/src/m/classes/model.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/model.m	(revision 16296)
+++ /issm/trunk-jpl/src/m/classes/model.m	(revision 16297)
@@ -45,4 +45,5 @@
 
 		results          = 0;
+		outputdefinition = 0;
 		radaroverlay     = 0;
 		miscellaneous    = 0;
@@ -1071,4 +1072,5 @@
 			md.radaroverlay     = radaroverlay();
 			md.results          = struct();
+			md.outputdefinition = outputdefinition();
 			md.miscellaneous    = miscellaneous();
 			md.private          = private();
@@ -1107,4 +1109,5 @@
 			disp(sprintf('%19s: %-22s -- %s','inversion'       ,['[1x1 ' class(obj.inversion) ']'],'parameters for inverse methods'));
 			disp(sprintf('%19s: %-22s -- %s','qmu'             ,['[1x1 ' class(obj.qmu) ']'],'dakota properties'));
+			disp(sprintf('%19s: %-22s -- %s','outputdefinition',['[1x1 ' class(obj.outputdefinition) ']'],'output definition'));
 			disp(sprintf('%19s: %-22s -- %s','results'         ,['[1x1 ' class(obj.results) ']'],'model results'));
 			disp(sprintf('%19s: %-22s -- %s','radaroverlay'    ,['[1x1 ' class(obj.radaroverlay) ']'],'radar image for plot overlay'));
Index: /issm/trunk-jpl/src/m/classes/outputdefinition.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/outputdefinition.m	(revision 16297)
+++ /issm/trunk-jpl/src/m/classes/outputdefinition.m	(revision 16297)
@@ -0,0 +1,45 @@
+%CONSTANTS class definition
+%
+%   Usage:
+%      outputdefinition=outputdefinition();
+
+classdef outputdefinition
+	properties (SetAccess=public) 
+		list                 = {};
+	end
+	methods
+		function obj = outputdefinition(varargin) % {{{
+			switch nargin
+				case 0
+					obj=setdefaultparameters(obj);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+
+			obj.list={};
+
+		end % }}}
+		function md = checkconsistency(obj,md,solution,analyses) % {{{
+
+			md = checkfield(md,'outputdefinition.list','cell',1);
+
+			for i=1:length(obj.list),
+				md=checkconsistency(obj.list{i},md,solution,analyses);
+			end
+
+		end % }}}
+		function disp(obj) % {{{
+			disp(sprintf('   outputdefinition:'));
+			fielddisplay(obj,'list','list of potential outputs that can be requested, but which need additional data to be defined');
+
+		end % }}}
+		function marshall(obj,md,fid) % {{{
+
+		for i=1:length(obj.list),
+			obj.list{i}.marshall(md,fid);
+		end
+		end % }}}
+	end
+end
Index: /issm/trunk-jpl/src/m/classes/qmu.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu.m	(revision 16296)
+++ /issm/trunk-jpl/src/m/classes/qmu.m	(revision 16297)
@@ -17,7 +17,4 @@
 		variabledescriptors         = {};
 		responsedescriptors         = {};
-		mass_flux_profile_directory = NaN;
-		mass_flux_profiles          = NaN;
-		mass_flux_segments          = {};
 		adjacency                   = NaN;
 		vertex_weight               = NaN;
@@ -133,7 +130,4 @@
 			fielddisplay(obj,'responsedescriptors','');
 			fielddisplay(obj,'method','array of dakota_method class');
-			fielddisplay(obj,'mass_flux_profile_directory','directory for mass flux profiles');
-			fielddisplay(obj,'mass_flux_profiles','list of mass_flux profiles');
-			fielddisplay(obj,'mass_flux_segments','');
 			fielddisplay(obj,'adjacency','');
 			fielddisplay(obj,'vertex_weight','weight applied to each mesh vertex');
@@ -151,11 +145,4 @@
 			WriteData(fid,'object',obj,'fieldname','variabledescriptors','format','StringArray');
 			WriteData(fid,'object',obj,'fieldname','responsedescriptors','format','StringArray');
-			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/classes/qmu.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu.py	(revision 16296)
+++ /issm/trunk-jpl/src/m/classes/qmu.py	(revision 16297)
@@ -27,7 +27,4 @@
 		self.variabledescriptors         = []
 		self.responsedescriptors         = []
-		self.mass_flux_profile_directory = float('NaN')
-		self.mass_flux_profiles          = float('NaN')
-		self.mass_flux_segments          = []
 		self.adjacency                   = float('NaN')
 		self.vertex_weight               = float('NaN')
@@ -126,7 +123,4 @@
 		s+="%s\n" % fielddisplay(self,'responsedescriptors','')
 		s+="%s\n" % fielddisplay(self,'method','array of dakota_method class')
-		s+="%s\n" % fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles')
-		s+="%s\n" % fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles')
-		s+="%s\n" % fielddisplay(self,'mass_flux_segments','')
 		s+="%s\n" % fielddisplay(self,'adjacency','')
 		s+="%s\n" % fielddisplay(self,'vertex_weight','weight applied to each mesh vertex')
@@ -144,9 +138,3 @@
 		WriteData(fid,'object',self,'fieldname','variabledescriptors','format','StringArray')
 		WriteData(fid,'object',self,'fieldname','responsedescriptors','format','StringArray')
-		if not self.mass_flux_segments:
-			WriteData(fid,'data',self.mass_flux_segments,'enum',MassFluxSegmentsEnum(),'format','MatArray');
-			flag=True; 
-		else:
-			flag=False; 
-		WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum(),'format','Boolean');
 	# }}}
Index: /issm/trunk-jpl/test/NightlyRun/test234.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test234.m	(revision 16296)
+++ /issm/trunk-jpl/test/NightlyRun/test234.m	(revision 16297)
@@ -28,14 +28,20 @@
 md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
 md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
-md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
-md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
-md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
-md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
-md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
-md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux1=response_function('MassFlux1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux2=response_function('MassFlux2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux3=response_function('MassFlux3',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux4=response_function('MassFlux4',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.MassFlux5=response_function('MassFlux5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.massFlux6=response_function('MassFlux6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
 
-%mass flux profiles
-md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'};
-md.qmu.mass_flux_profile_directory=pwd;
+md.outputdefinition.list={...
+		massfluxatgate('MassFlux1','../Exp/MassFlux1.exp'),...
+		massfluxatgate('MassFlux2','../Exp/MassFlux2.exp'),...
+		massfluxatgate('MassFlux3','../Exp/MassFlux3.exp'),...
+		massfluxatgate('MassFlux4','../Exp/MassFlux4.exp'),...
+		massfluxatgate('MassFlux5','../Exp/MassFlux5.exp'),...
+		massfluxatgate('MassFlux6','../Exp/MassFlux6.exp')...
+	};
+
 
 %%  nond_sampling study
