Index: /issm/trunk/src/m/solutions/flaim_sol.m
===================================================================
--- /issm/trunk/src/m/solutions/flaim_sol.m	(revision 9894)
+++ /issm/trunk/src/m/solutions/flaim_sol.m	(revision 9895)
@@ -34,6 +34,5 @@
 [pathstr,name,ext,versn] = fileparts(md.flaim.tracks);
 fm_tracks=fullfile('',[name ext versn]);
-%system(['cp -p ' md.flaim.tracks ' ' options.fmdir]);
-system(['ln -s ' md.flaim.tracks ' ' [options.fmdir filesep fm_tracks]]);
+system(['cp -p ' md.flaim.tracks ' ' options.fmdir]);
 
 if ~isempty(md.flaim.targets)
@@ -42,7 +41,7 @@
         ext='.kml';
     end
-    fm_targets=fullfile(pathstr,[name ext versn]);
+    fm_targets=fullfile('',[name ext versn]);
     ext='.log';
-    filelog=fullfile(pathstr,[name ext versn]);
+    filelog=fullfile('',[name ext versn]);
 else
     fm_targets='fm_targets.kml';
@@ -50,4 +49,5 @@
 end
 md.flaim.targets=fm_targets;
+
 if ~isempty(md.flaim.solution)
 	[pathstr,name,ext,versn] = fileparts(md.flaim.solution);
@@ -57,40 +57,49 @@
 end
 
+%  copy target file if it exists
+
+if any(isnan(md.flaim.criterion)) || isempty(md.flaim.criterion)
+	display('Copying existing target file.');
+	system(['cp -p ' md.flaim.targets ' ' options.fmdir]);
+	cd(options.fmdir)
+
 %  calculate latitude and longitude, if necessary 
 
-if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
-   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
-	if     ~isfield(options,'latsgn')
-		error(['Missing ''latsgn'' parameter to calculate missing lat/long values.']);
-	elseif (abs(options.latsgn) ~= 1)
-		error(['Incorrect latsgn=' num2str(options.latsgn) ' parameter to calculate missing lat/long values.']);
-	else
-		display('Converting x/y values to lat/long values.');
-		[md.mesh.lat,md.mesh.long]=xy2ll(md.mesh.x,md.mesh.y,options.latsgn);
+else
+	if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+	   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+		if     ~isfield(options,'latsgn')
+			error(['Missing ''latsgn'' parameter to calculate missing lat/long values.']);
+		elseif (abs(options.latsgn) ~= 1)
+			error(['Incorrect latsgn=' num2str(options.latsgn) ' parameter to calculate missing lat/long values.']);
+		else
+			display('Converting x/y values to lat/long values.');
+			[md.mesh.lat,md.mesh.long]=xy2ll(md.mesh.x,md.mesh.y,options.latsgn);
+		end
 	end
-end
 
 %  colormap command operates on a figure, so create an invisible one
 %  (could also directly call colormaps, e.g. jet(64), but risky)
 
-if ~isempty(md.flaim.criterion)
-	hfig=figure('Visible','off');
-	if isfield(options,'cmap') && ~isempty(options.cmap)
-		colormap(options.cmap)
+	if ~isempty(md.flaim.criterion)
+		hfig=figure('Visible','off');
+		if isfield(options,'cmap') && ~isempty(options.cmap)
+			colormap(options.cmap)
+		end
+		options.cmap=colormap;
+		close(hfig)
 	end
-	options.cmap=colormap;
-	close(hfig)
-end
-if ~isfield(options,'cmap')
-	options.cmap=[];
-end
+	if ~isfield(options,'cmap')
+		options.cmap=[];
+	end
 
 %  write the target kml file
 
-cd(options.fmdir)
-display('Calling KMLMeshWrite.');
-KMLMeshWrite(md.miscellaneous.name,md.miscellaneous.notes,md.mesh.elements,md.mesh.vertexconnectivity,md.mesh.lat,md.mesh.long,md.qmu.partition,md.flaim.criterion,options.cmap,fm_targets);
+	cd(options.fmdir)
+	display('Calling KMLMeshWrite.');
+	KMLMeshWrite(md.miscellaneous.name,md.miscellaneous.notes,md.mesh.elements,md.mesh.vertexconnectivity,md.mesh.lat,md.mesh.long,md.qmu.partition,md.flaim.criterion,options.cmap,fm_targets);
 %  for testing
-%fm_targets='issm-split-geikie1-targets.kml';
+%	fm_targets='issm-split-geikie1-targets.kml';
+end
 
 %  call flaim
@@ -112,4 +121,5 @@
 
 display(['Post-processing the flaim output in the ''' options.fmdir ''' sub-directory.']);
+
 if exist('solution_best.kml','file')
 	if ~strcmp(filesol,'solution_best')
@@ -119,9 +129,10 @@
 		md.results.FlaimSolution.solution=[filesol];
 	else
-		md.results.FlaimSolution.solution=[options.fmdir '/' filesol];
+		md.results.FlaimSolution.solution=[options.fmdir filesep filesol];
 	end
 else
 	md.results.FlaimSolution.solution='';
 end
+
 if exist(filelog,'file')
 	[status,fline]=system(['grep -i quality ' filelog]);
@@ -155,6 +166,7 @@
 cd ..
 if ~strncmpi(options.keep,'y',1)
-	system(['mv ' options.fmdir '/' filesol '.kml .']);
-	system(['mv ' options.fmdir '/' filesol '.log .']);
+	system(['mv ' options.fmdir filesep fm_targets ' .']);
+	system(['mv ' options.fmdir filesep filesol '.kml .']);
+	system(['mv ' options.fmdir filesep filesol '.log .']);
 	system(['rm -rf ' options.fmdir]);
 end
