Index: /issm/trunk/src/m/classes/public/LaunchQueueJobGeneric.m
===================================================================
--- /issm/trunk/src/m/classes/public/LaunchQueueJobGeneric.m	(revision 2554)
+++ /issm/trunk/src/m/classes/public/LaunchQueueJobGeneric.m	(revision 2555)
@@ -1,4 +1,4 @@
 function md=LaunchQueueJobGeneric(md,executionpath,options)
-%LAUNCHQUEUEJOBGENERIC - ...
+%LAUNCHQUEUEJOBGENERIC - Generic routine to launch queueing job
 %
 %   Usage:
@@ -28,14 +28,7 @@
 	issmssh(md.cluster,['cd ' executionpath ' && source ' md.name '.queue ']);
 
-	%waitonlock will work if the lock is on the same machine only: 
-	if ~strcmpi(oshostname(),md.cluster),
-		disp('solution launched on remote cluster. log in to detect job completion, then run md=loadresultsfromcluster(md)');
-		md.waitonlock=0;
-	end
-
 else
 	disp('batch mode requested: not launching job interactively');
 	disp(['launch solution sequence by copying files ' md.name '.bin' ',' md.name '.queue and ' md.name '.qmu.in, onto remote cluster ' md.cluster]);
 	disp(['   then log int ' md.cluster ' and source queue file ' md.name '.queue']);
-	md.waitonlock=0;
 end
Index: /issm/trunk/src/m/classes/public/LaunchQueueJobcosmos.m
===================================================================
--- /issm/trunk/src/m/classes/public/LaunchQueueJobcosmos.m	(revision 2554)
+++ /issm/trunk/src/m/classes/public/LaunchQueueJobcosmos.m	(revision 2555)
@@ -18,7 +18,7 @@
 	disp('uploading input file,  queueing script and variables script');
 	if md.qmu_analysis, 
-		eval(['!scp ' md.name '.bin' ' ' md.name '.queue '  md.name '.qmu.in ' md.cluster ':' executionpath]);
+		system(['scp ' md.name '.bin' ' ' md.name '.queue '  md.name '.qmu.in ' md.cluster ':' executionpath]);
 	else
-		eval(['!scp ' md.name '.bin' ' ' md.name '.queue '  md.cluster ':' executionpath]);
+		system(['scp ' md.name '.bin' ' ' md.name '.queue '  md.cluster ':' executionpath]);
 	end
 
@@ -31,3 +31,2 @@
 	disp(['launch solution sequence on remote cluster by logging into it and typing qsub -S/bin/csh ' md.name '.queue']);
 end
-md.waitonlock=0; %cannot wait for lock
Index: /issm/trunk/src/m/classes/public/LaunchQueueJobgemini.m
===================================================================
--- /issm/trunk/src/m/classes/public/LaunchQueueJobgemini.m	(revision 2554)
+++ /issm/trunk/src/m/classes/public/LaunchQueueJobgemini.m	(revision 2555)
@@ -18,7 +18,7 @@
 	disp('uploading input file,  queueing script and variables script');
 	if md.qmu_analysis, 
-		eval(['!scp ' md.name '.bin' ' ' md.name '.queue '  md.name '.qmu.in ' md.cluster ':' executionpath]);
+		system(['scp ' md.name '.bin' ' ' md.name '.queue '  md.name '.qmu.in ' md.cluster ':' executionpath]);
 	else
-		eval(['!scp ' md.name '.bin' ' ' md.name '.queue '  md.cluster ':' executionpath]);
+		system(['scp ' md.name '.bin' ' ' md.name '.queue '  md.cluster ':' executionpath]);
 	end
 	
@@ -31,3 +31,2 @@
 	disp(['launch solution sequence on remote cluster by logging into it and typing qsub < ' md.name '.queue']);
 end
-md.waitonlock=0; %cannot wait for lock
Index: /issm/trunk/src/m/classes/public/LaunchQueueJobgreenplanet.m
===================================================================
--- /issm/trunk/src/m/classes/public/LaunchQueueJobgreenplanet.m	(revision 2554)
+++ /issm/trunk/src/m/classes/public/LaunchQueueJobgreenplanet.m	(revision 2555)
@@ -18,7 +18,7 @@
 	disp('uploading input file,  queueing script and variables script');
 	if md.qmu_analysis, 
-		eval(['!scp -P 1025 -o HostKeyAlias=huey.jpl.nasa.gov ' md.name '.bin' ' ' md.name '.queue '  md.name '.qmu.in elarour@localhost:' executionpath]);
+		system(['scp -P 1025 -o HostKeyAlias=huey.jpl.nasa.gov ' md.name '.bin' ' ' md.name '.queue '  md.name '.qmu.in elarour@localhost:' executionpath]);
 	else
-		eval(['!scp -P 1025 -o HostKeyAlias=huey.jpl.nasa.gov ' md.name '.bin' ' ' md.name '.queue elarour@localhost:' executionpath ]);
+		system(['scp -P 1025 -o HostKeyAlias=huey.jpl.nasa.gov ' md.name '.bin' ' ' md.name '.queue elarour@localhost:' executionpath ]);
 	end
 else
@@ -28,3 +28,2 @@
 %new greenplanet cannot launch across cluster using ssh
 disp(['launch solution sequence on remote cluster by logging into it and typing qsub < ' md.name '.queue']);
-md.waitonlock=0;
Index: /issm/trunk/src/m/classes/public/solveparallel.m
===================================================================
--- /issm/trunk/src/m/classes/public/solveparallel.m	(revision 2554)
+++ /issm/trunk/src/m/classes/public/solveparallel.m	(revision 2555)
@@ -25,21 +25,13 @@
 md=LaunchQueueJob(md,executionpath,options);
 
-%timing 
-t1=clock;
-
 %Do we return, or just wait for results?
 if md.waitonlock~=0,
 	%we wait for the done file
-	islock=waitonlock([executionpath '/' md.name '.lock'],md.waitonlock);
+	islock=waitonlock(md,executionpath);
 	if islock==0,
 		%no results to be loaded
-		disp('The results must be loaded manually with loadmodelfromcluster.');
-		error(['solveparallel info message: time limit exceeded'])
+		disp('The results must be loaded manually with md=loadmodelfromcluster(md).');
 	else
 		%load results
-		%stop timing
-		t2=clock;
-		displaystring(md.verbose,'\n%s\n',['solution converged in ' num2str(etime(t2,t1)) ' seconds']);
-
 		displaystring(md.verbose,'loading results from cluster');
 		md=loadresultsfromcluster(md);
Index: /issm/trunk/src/m/classes/public/waitonlock.m
===================================================================
--- /issm/trunk/src/m/classes/public/waitonlock.m	(revision 2554)
+++ /issm/trunk/src/m/classes/public/waitonlock.m	(revision 2555)
@@ -1,3 +1,3 @@
-function flag=waitonlock(filename,timelimit)
+function flag=waitonlock(md,executionpath)
 %WAITONLOCK - wait for a file
 %
@@ -6,22 +6,42 @@
 %
 %   Usage:
-%      flag=waitonlock(filename,timelimit)
+%      flag=waitonlock(md,executionpath)
 
-%initialize time and file presence test flag
-time=0;
-ispresent=0;
-disp(['waiting for ' filename ' hold on... (Ctrl+C to exit)'])
+%Get filename (lock file) and options
+filename=[executionpath '/' md.name '.lock'];
+cluster=md.cluster;
+timelinit=md.waitonlock;
 
-%loop till file .lock exist or time is up
-while (ispresent==0 & time<timelimit)
-	ispresent=exist(filename,'file');
-	pause(1);
-	time=time+1/60;
+%waitonlock will work if the lock is on the same machine only: 
+if ~strcmpi(oshostname(),cluster),
+	disp('solution launched on remote cluster. log in to detect job completion.');
+	choice=input('Is the job successfully completed? (y/n)','s');
+	if ~strcmp(choice,'y'), 
+		disp('Results not loaded... exiting'); 
+		flag=0;
+	else
+		flag=1;
+	end
+
+%job is running on the same machine
+else
+
+	%initialize time and file presence test flag
+	time=0; ispresent=0;
+	disp(['waiting for ' filename ' hold on... (Ctrl+C to exit)'])
+
+	%loop till file .lock exist or time is up
+	while (ispresent==0 & time<timelimit)
+		ispresent=exist(filename,'file');
+		pause(1);
+		time=time+1/60;
+	end
+
+	%build output
+	if (time>timelimit),
+		disp(['waitonlock info message: time limit exceeded']);
+		flag=0;
+	else
+		flag=1;
+	end
 end
-
-%build output
-if (time>timelimit),
-	flag=0;
-else
-	flag=1;
-end
