Index: /issm/trunk/src/m/classes/public/buildoverlaycolorbar.m
===================================================================
--- /issm/trunk/src/m/classes/public/buildoverlaycolorbar.m	(revision 2757)
+++ /issm/trunk/src/m/classes/public/buildoverlaycolorbar.m	(revision 2758)
@@ -23,5 +23,5 @@
 %cut results under 1.5, and log
 %results(find(results<1.5))=1.5;
-h=bytscl((results))/(255+1); %1 offset on colormap
+h=bytscl(results)/(255+1); %1 offset on colormap
 
 %saturation
Index: /issm/trunk/src/m/classes/public/plot/quiver_colorbar.m
===================================================================
--- /issm/trunk/src/m/classes/public/plot/quiver_colorbar.m	(revision 2758)
+++ /issm/trunk/src/m/classes/public/plot/quiver_colorbar.m	(revision 2758)
@@ -0,0 +1,33 @@
+function quiver_colorbar(quivers,options)
+%QUIVER_COLORBAR - colorbar for quiver plots
+%
+%   Usage:
+%      quiver_colorbar(quivers,options)
+
+if  strcmpi(getfieldvalue(options,'colorbar','on'),'on'),
+
+	%build ticks
+	hcb=colorbar('peer',gca,'location','EastOutside');
+	ticklabel=cell(1,length(quivers.levels));
+	for i=1:length(quivers.levels),
+		ticklabel{i}=num2str(round_ice(quivers.levels(i),3));
+	end
+	tickpos=1:quivers.numcolors+1;
+
+	%remove ticks if to many have been created
+	proportion=round(length(quivers.levels)/10);
+	if proportion>1,
+		ticklabel=ticklabel(1:proportion:end);
+		tickpos=tickpos(1:proportion:end);
+	end
+
+	%draw colorbar
+	set(hcb,'YTickLabel',ticklabel,'YTick',tickpos);
+	%position
+	if exist(options,'colorbarpos'),
+		set(hcb,'Position',getfieldvalue(options,'colorbarpos'));
+	end
+	%fontsize
+	fontsize=getfieldvalue(options,'fontsize',14);
+	set(hcb,'FontSize',fontsize);
+end
Index: /issm/trunk/src/m/classes/public/plot/quiver_process.m
===================================================================
--- /issm/trunk/src/m/classes/public/plot/quiver_process.m	(revision 2758)
+++ /issm/trunk/src/m/classes/public/plot/quiver_process.m	(revision 2758)
@@ -0,0 +1,70 @@
+function [quivers,palette]=quiver_process(x,y,u,v,options)
+%QUIVER_PROCESS - process data for color quiver plot
+%
+%   Usage:
+%      [quivers,palette]=quiver_process(x,y,u,v,options)
+
+%keep only non NaN elements
+pos=find(~isnan(x) & ~isnan(y) & ~isnan(u) & ~isnan(v));
+x=x(pos); y=y(pos);
+u=u(pos); v=v(pos);
+
+%get Norm Min and Max
+Norm=sqrt(u.^2+v.^2);
+Min=min(Norm);
+Max=max(Norm);
+
+%Scale data
+scalingfactor=getfieldvalue(options,'scaling',0.40);
+if strcmpi(getfieldvalue(options,'autoscale','on'),'off'),
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./Norm;
+	v=scalingfactor*sqrt(delta)*v./Norm;
+else
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./max(Norm);
+	v=scalingfactor*sqrt(delta)*v./max(Norm);
+end
+
+%number of colors?
+colorlevels=getfieldvalue(options,'colorlevels',30);
+if isnumeric(colorlevels),
+	if isnan(colorlevels),
+		numcolors=30;
+	else
+		numcolors=colorlevels;
+	end
+	levels=round_ice(linspace(Min,Max,numcolors+1),2);
+else
+	levels=zeros(1,length(colorlevels)+2);
+	levels(1)=Min;
+	for i=1:length(colorlevels)
+		levels(i+1)=colorlevels{i};
+	end
+	levels(end)=Max;
+	levels=sort(unique(levels));
+	numcolors=length(levels)-1;
+end
+
+%create colorind for colors
+colorind=ones(length(u),1);
+for i=1:numcolors
+	pos=find((Norm>=levels(i)) & (Norm<=levels(i+1)) );
+	colorind(pos)=i;
+end
+colorind(find(Norm>levels(end)))=numcolors;
+
+%build output
+quivers=struct('x',x,'y',y,'u',u,'v',v,'levels',levels,'colorind',colorind,'numcolors',numcolors);
+
+%set the colormap 
+if numcolors==2;
+	%blue and red
+	palette=colormap([0 0 1;1 0 0]);
+elseif numcolors==3,
+	%blue yellow and red
+	palette=colormap([0 0 1;1 1 0;1 0 0]);
+else
+	%let jet choose
+	palette=colormap(jet(numcolors));
+end
Index: /issm/trunk/src/m/classes/public/tres.m
===================================================================
--- /issm/trunk/src/m/classes/public/tres.m	(revision 2757)
+++ /issm/trunk/src/m/classes/public/tres.m	(revision 2758)
@@ -1,10 +1,19 @@
-function md=tres(md,string)
+function md=tres(md,varargin)
 %TRES - transfer results results to corresponding model fields. 
 %
-%    Usage: md=tres(md,string)
+%    Usage: md=tres(md,varargin)
 %
 %
 %    Example: md=tres(md,'diagnostic');
-%             md=tres(md,'control');
+%             md=tres(md);
+
+%check number of arguments
+if nargin==1,
+	string=md.analysis_type;
+elseif nargin==2,
+	string=varagin{1};
+else
+	error('tres error message: bad usage');
+end
 
 if strcmpi(string,'diagnostic'),
