Index: /issm/trunk/src/m/partition/flagedges.m
===================================================================
--- /issm/trunk/src/m/partition/flagedges.m	(revision 3062)
+++ /issm/trunk/src/m/partition/flagedges.m	(revision 3063)
@@ -1,47 +1,46 @@
-function [flags middles]=flagedges(x,y,partition,adjacencymatrix);
-%FLAGEDGES return a vector of boolean flags that indicate whether a node is on the edge of a partition.
-%          needs partition vector and adjacencymatrix in inputs.
+function [xsegments ysegments]=flagedges(elements,x,y,partition);
+%FLAGEDGES return pairs of x,y segments, delimiting partitions.
 %
-%
-%         Usage: [flags middlegrids]=flagedges(x,y,partition,adjacencymatrix);
+%         Usage: [xsegments ysegments]=flagedges(elements,x,y,partition)
 %
 
-%number of grids
-numberofgrids=length(partition);
+xsegments=[];
+ysegments=[];
 
-%initialize flags
-flags=zeros(numberofgrids,1);
+for i=1:size(elements,1),
+	m1=partition(elements(i,1));
+	m2=partition(elements(i,2));
+	m3=partition(elements(i,3));
+	x1=x(elements(i,1));
+	x2=x(elements(i,2));
+	x3=x(elements(i,3));
+	y1=y(elements(i,1));
+	y2=y(elements(i,2));
+	y3=y(elements(i,3));
 
-middles=zeros(0,2);
-
-%go through grids, and figure out which grid is connected to a grid belonging to another partition, flag it.
-for i=1:numberofgrids,
-
-	%some feedback
-	if i==1,
-		fprintf('    flagedges progress report: %5.2f %s',i/numberofgrids*100,'%');
-	elseif mod(i,1000),
-		fprintf('\b\b\b\b\b\b\b');
-		fprintf('%5.2f %s',i/numberofgrids*100,'%');
+	if (m1~=m2) & (m1~=m3) & (m2~=m3),
+		xmiddle=(x1+x2+x3)/3;
+		ymiddle=(y1+y2+y3)/3;
+		xsegments=[xsegments; (x1+x2)/2 xmiddle];
+		xsegments=[xsegments; (x1+x3)/2 xmiddle];
+		xsegments=[xsegments; (x2+x3)/2 xmiddle];
+		ysegments=[ysegments; (y1+y2)/2 ymiddle];
+		ysegments=[ysegments; (y1+y3)/2 ymiddle];
+		ysegments=[ysegments; (y2+y3)/2 ymiddle];
 	end
 
-	%already flag, move on
-	if flags(i),
-		continue;
+	if (m1==m2) & (m1~=m3),
+		xsegments=[xsegments; (x1+x3)/2 (x2+x3)/2];
+		ysegments=[ysegments; (y1+y3)/2 (y2+y3)/2];
 	end
-	
-	grids=adjacencymatrix(:,i); grids=find(grids);
-	
-	part_i=partition(i);
-	part_connected=partition(grids);
+	if (m1==m3) & (m2~=m3),
+		xsegments=[xsegments; (x1+x2)/2 (x2+x3)/2];
+		ysegments=[ysegments; (y1+y2)/2 (y2+y3)/2];
+	end
 
-	index=find(part_i~=part_connected);
-	if ~isempty(index),
-		grids_on_edge=grids(index);
-		flags(grids_on_edge)=1;
-		flags(i)=1; 
-		for j=1:length(grids_on_edge),
-			middles(end+1,:)=[(x(grids_on_edge(j))+x(i))/2 (y(grids_on_edge(j))+y(i))/2];
-		end
+	if (m2==m3) & (m1~=m3),
+		xsegments=[xsegments; (x1+x2)/2 (x1+x3)/2];
+		ysegments=[ysegments; (y1+y2)/2 (y1+y3)/2];
 	end
 end
+
