Index: /issm/trunk-jpl/src/m/exp/isoline.m
===================================================================
--- /issm/trunk-jpl/src/m/exp/isoline.m	(revision 28099)
+++ /issm/trunk-jpl/src/m/exp/isoline.m	(revision 28100)
@@ -1,7 +1,7 @@
-function contours=isoline(md,field,varargin)
+function [contours edges_tria]=isoline(md,field,varargin)
 %ISOLINE - construct isovalue lines based on field provided
 %
 %   Usage:
-%      contours=isoline(md,field,varargin)
+%      [contours edges]=isoline(md,field,varargin)
 %
 %   Supported options:
@@ -10,4 +10,7 @@
 %                'matrix' contours are concatenated and separated by NaNs
 %                'filename.exp' saved as exp file
+%      'edges': if edges are returned (as a second output) after a first call
+%               they can be provided again so that isoline does not need to
+%               recreate a set of edges
 %
 %   Example:
@@ -64,14 +67,18 @@
 h=[];
 
-%get unique edges in mesh
-%1: list of edges
-edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
-%2: find unique edges
-[edges,I,J]=unique(sort(edges,2),'rows');
-%3: unique edge numbers
-vec=J;
-%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
-%   the same edge number)
-edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
+if exist(options,'edges')
+	edges_tria = getfieldvalue(options, 'edges');
+else
+	%get unique edges in mesh
+	%1: list of edges
+	edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+	%2: find unique edges
+	[edges,I,J]=unique(sort(edges,2),'rows');
+	%3: unique edge numbers
+	vec=J;
+	%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
+	%   the same edge number)
+	edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
+end
 
 %segments [nodes1 nodes2]
