Index: /issm/trunk-jpl/src/m/classes/clusters/generic.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/clusters/generic.m	(revision 22665)
+++ /issm/trunk-jpl/src/m/classes/clusters/generic.m	(revision 22666)
@@ -11,4 +11,5 @@
 		login         = '';
 		np            = 1;
+		npocean       = 1;
 		port          = 0;
 		interactive   = 1;
@@ -52,4 +53,5 @@
 			disp(sprintf('    login: %s',cluster.login));
 			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    npocean: %i',cluster.npocean));
 			disp(sprintf('    port: %i',cluster.port));
 			disp(sprintf('    codepath: %s',cluster.codepath));
@@ -209,4 +211,22 @@
 		end
 		%}}}
+		function BuildQueueScriptIceOcean(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			%write queuing script 
+			%what is the executable being called? 
+			executable='issm_ocean.exe';
+
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!%s\n',cluster.shell);
+			fprintf(fid,'mpiexec -np %i %s/%s %s %s %s : -np %i ./mitgcmuv\n',cluster.np,cluster.codepath,executable,solution,cluster.executionpath,modelname,cluster.npocean);
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
 		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
 
@@ -295,4 +315,33 @@
 					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
 						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && source  ' modelname '.queue '];
+					else
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
+					end
+				end
+				issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+			else
+				system([modelname '.bat']);
+			end
+
+		end %}}}
+		function LaunchQueueJobIceOcean(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			if ~ispc,
+
+				%figure out what shell extension we will use:
+				if isempty(strfind(cluster.shell,'csh')),
+					shellext='sh';
+				else
+					shellext='csh';
+				end
+
+				if cluster.verbose, disp('launching solution sequence on remote cluster'); end
+
+				if ~isempty(restart)
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && cd ' dirname ' && source ' modelname '.queue '];
+				else
+					if ~batch,
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && tar -zxf ' dirname '.tar.gz  && source  ' modelname '.queue '];
 					else
 					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
