Index: /issm/trunk/src/c/DataSet/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 803)
+++ /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 804)
@@ -66,4 +66,25 @@
 		/*Call echo on object: */
 		(*object)->Echo();
+
+	}
+	return;
+}
+
+#undef __FUNCT__
+#define  __FUNCT__ "DataSet::DeepEcho"
+
+void DataSet::DeepEcho(){
+
+	
+	vector<Object*>::iterator object;
+
+	if(this==NULL)throw ErrorException(__FUNCT__," trying to echo a NULL dataset");
+
+	_printf_("DataSet echo: %i objects\n",objects.size());
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		/*Call deep echo on object: */
+		(*object)->DeepEcho();
 
 	}
Index: /issm/trunk/src/c/DataSet/DataSet.h
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.h	(revision 803)
+++ /issm/trunk/src/c/DataSet/DataSet.h	(revision 804)
@@ -37,4 +37,5 @@
 		int   GetEnum();
 		void  Echo();
+		void  DeepEcho();
 		char* Marshall();
 		int   MarshallSize();
Index: /issm/trunk/src/c/parallel/DakotaResponses.cpp
===================================================================
--- /issm/trunk/src/c/parallel/DakotaResponses.cpp	(revision 803)
+++ /issm/trunk/src/c/parallel/DakotaResponses.cpp	(revision 804)
@@ -182,5 +182,8 @@
 			if(my_rank==0)responses[i]=max_abs_vz;
 		}
-		else throw ErrorException(__FUNCT__,exprintf("%s%s%s"," response descriptor : ",response_descriptor," not supported yet!"));
+		else{
+			if(my_rank==0)printf("%s%s%s"," response descriptor : ",response_descriptor," not supported yet!");
+			throw ErrorException(__FUNCT__,exprintf("%s%s%s"," response descriptor : ",response_descriptor," not supported yet!"));
+		}
 	}
 
Index: /issm/trunk/src/c/parallel/SpawnCore.cpp
===================================================================
--- /issm/trunk/src/c/parallel/SpawnCore.cpp	(revision 803)
+++ /issm/trunk/src/c/parallel/SpawnCore.cpp	(revision 804)
@@ -19,5 +19,5 @@
 #include "../include/macros.h"
 
-void SpawnCore(double* responses, double* variables, char** variables_descriptors,int numvariables, FemModel* femmodels,ParameterInputs* inputs,int analysis_type,int sub_analysis_type){
+void SpawnCore(double* responses, double* variables, char** variables_descriptors,int numvariables, FemModel* femmodels,ParameterInputs* inputs,int analysis_type,int sub_analysis_type,int counter){
 
 	int i;
@@ -33,4 +33,5 @@
 	double* qmu_part=NULL;
 	int     qmu_npart;
+	int     debug=0;
 
 	extern int my_rank;
@@ -39,5 +40,8 @@
 	/*synchronize all cpus, as CPU 0 is probably late (it is starting the entire dakota strategy!) : */
 	MPI_Barrier(MPI_COMM_WORLD);
-
+	
+	/*some parameters needed: */
+	femmodels[0].parameters->FindParam((void*)&debug,"debug");
+		
 	/*First off, recover the response descriptors for the response functions: */
 	param=(Param*)femmodels[0].parameters->FindParamObject("responsedescriptors");
@@ -92,15 +96,18 @@
 
 
-	_printf_("initialize results:\n");
+
+	if(debug)_printf_("Iteration: %i\n",counter);
+
+	//initialize results:
 	results=new DataSet(ResultsEnum());
 
 	/*Modify core inputs to reflect the dakota variables inputs: */
 	inputs->UpdateFromDakota(variables,variables_descriptors,numvariables,femmodels[0].parameters,qmu_part,qmu_npart); //femmodel #0 is the one holding the parameters for Dakota.
-	
 
 	/*Run the analysis core solution sequence, with the updated inputs: */
 	if(analysis_type==DiagnosticAnalysisEnum()){
 			
-		_printf_("Starting diagnostic core\n");
+		if(debug)_printf_("Starting diagnostic core\n");
+
 		diagnostic_core(results,femmodels,inputs);
 
@@ -108,5 +115,5 @@
 	else if(analysis_type==ThermalAnalysisEnum()){
 		
-		_printf_("Starting thermal core\n");
+		if(debug)_printf_("Starting thermal core\n");
 		thermal_core(results,femmodels,inputs);
 
@@ -114,5 +121,5 @@
 	else if(analysis_type==PrognosticAnalysisEnum()){
 
-		_printf_("Starting prognostic core\n");
+		if(debug)_printf_("Starting prognostic core\n");
 		prognostic_core(results,femmodels,inputs);
 
@@ -120,5 +127,5 @@
 	else if(analysis_type==TransientAnalysisEnum()){
 
-		_printf_("Starting transient core\n");
+		if(debug)_printf_("Starting transient core\n");
 		throw ErrorException(__FUNCT__,"not supported yet!");
 
@@ -129,10 +136,10 @@
 
 	/*Now process the outputs, before computing the dakota responses: */
-	_printf_("process results:\n");
+	if(debug)_printf_("process results:\n");
 	ProcessResults(&results,femmodels,analysis_type); 
 	
 
 	/*compute responses on cpu 0: dummy for now! */
-	_printf_("compute dakota responses:\n");
+	if(debug)_printf_("compute dakota responses:\n");
 	DakotaResponses(responses,responses_descriptors,numresponses,femmodels,results,analysis_type,sub_analysis_type);
 
Index: /issm/trunk/src/c/parallel/diagnostic.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 803)
+++ /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 804)
@@ -103,5 +103,5 @@
 		/*run qmu analysis: */
 		_printf_("calling qmu analysis on diagnostic core:\n");
-	
+
 		#ifdef _HAVE_DAKOTA_ 
 		qmu(qmuinname,qmuoutname,qmuerrname,&femmodels[0],inputs,DiagnosticAnalysisEnum(),NoneAnalysisEnum());
Index: /issm/trunk/src/c/parallel/parallel.h
===================================================================
--- /issm/trunk/src/c/parallel/parallel.h	(revision 803)
+++ /issm/trunk/src/c/parallel/parallel.h	(revision 804)
@@ -39,5 +39,5 @@
 //int BatchDebug(Mat* Kgg,Vec* pg,FemModel* femmodel,char* filename);
 void qmu(const char* dakota_input_file,const char* dakota_output_file,const char* dakota_error_file,FemModel* femmodels,ParameterInputs* inputs,int analysis_type,int sub_analysis_type);
-void SpawnCore(double* responses,double* variables,char** variable_descriptors,int numvariables, FemModel* femmodels,ParameterInputs* inputs,int analysis_type,int sub_analysis_type);
+void SpawnCore(double* responses,double* variables,char** variable_descriptors,int numvariables, FemModel* femmodels,ParameterInputs* inputs,int analysis_type,int sub_analysis_type,int counter);
 void DakotaResponses(double* responses,char** responses_descriptors,int numresponses,FemModel* femmodels, DataSet* results,int analysis_type,int sub_analysis_type);
 void ProcessResults(DataSet** presults,FemModel* fems,int analysis_type);
Index: /issm/trunk/src/c/parallel/qmu.cpp
===================================================================
--- /issm/trunk/src/c/parallel/qmu.cpp	(revision 803)
+++ /issm/trunk/src/c/parallel/qmu.cpp	(revision 804)
@@ -46,5 +46,5 @@
 		problem_db.manage_inputs(dakota_input_file);
 		// specify_outputs_restart() is only necessary if specifying non-defaults
-		parallel_lib.specify_outputs_restart(dakota_output_file,dakota_error_file,NULL, NULL);
+		parallel_lib.specify_outputs_restart(dakota_output_file,dakota_error_file,NULL,NULL);
 
 		// Instantiate the Strategy object (which instantiates all Model and
@@ -79,5 +79,5 @@
 		for(;;){
 
-			SpawnCore(NULL,NULL,NULL,0,femmodels,inputs,analysis_type,sub_analysis_type);
+			SpawnCore(NULL,NULL,NULL,0,femmodels,inputs,analysis_type,sub_analysis_type,0);
 
 			//Figure out if cpu 0 is done iterating
Index: /issm/trunk/src/m/classes/@model/model.m
===================================================================
--- /issm/trunk/src/m/classes/@model/model.m	(revision 803)
+++ /issm/trunk/src/m/classes/@model/model.m	(revision 804)
@@ -262,4 +262,5 @@
 	md.qmu_method=struct();
 	md.qmu_params=struct();
+	md.dakotaplugin=0;
 	md.dakotaresults=struct();
 	md.dakotain='';
@@ -267,6 +268,4 @@
 	md.dakotadat='';
 	md.qmu_analysis=0;
-	md.iresp=1;
-	md.ivar=1;
 	md.npart=0;
 
Index: /issm/trunk/src/m/classes/public/LaunchQueueJobGeneric.m
===================================================================
--- /issm/trunk/src/m/classes/public/LaunchQueueJobGeneric.m	(revision 803)
+++ /issm/trunk/src/m/classes/public/LaunchQueueJobGeneric.m	(revision 804)
@@ -21,5 +21,5 @@
 if strcmpi(hostname,md.cluster),
 	if md.qmu_analysis,
-		system(['cp ' md.name '.bin' ' ' md.name '.queue qmu/' md.name '.qmu.in ' ' ' executionpath]);
+		system(['cp ' md.name '.bin' ' ' md.name '.queue ' md.name '.qmu.in ' ' ' executionpath]);
 	else
 		system(['cp ' md.name '.bin' ' ' md.name '.queue' ' ' executionpath]);
@@ -27,5 +27,5 @@
 else
 	if md.qmu_analysis,
-		system(['scp ' md.name '.bin' ' ' md.name '.queue qmu/' md.name '.qmu.in ' ' ' md.cluster ':' executionpath]);
+		system(['scp ' md.name '.bin' ' ' md.name '.queue ' md.name '.qmu.in ' ' ' md.cluster ':' executionpath]);
 	else
 		system(['scp ' md.name '.bin' ' ' md.name '.queue' ' ' md.cluster ':' executionpath]);
Index: /issm/trunk/src/m/classes/public/displayqmu.m
===================================================================
--- /issm/trunk/src/m/classes/public/displayqmu.m	(revision 803)
+++ /issm/trunk/src/m/classes/public/displayqmu.m	(revision 804)
@@ -85,2 +85,3 @@
 if isempty(md.dakotadat), disp(sprintf('         dakotadat: N/A')); else disp(sprintf('         dakotadat:    [%ix%i]    (can be accessed by typing md.dakotadat)',size(md.dakotadat)));end
 disp(sprintf('         npart   : %i (number of partitions for semi-descrete qmu)',md.npart));
+disp(sprintf('         dakotaplugin   : %i (are we running using the library mode for Dakota? defaults to 0',md.dakotaplugin));
Index: /issm/trunk/src/m/classes/public/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 803)
+++ /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 804)
@@ -67,6 +67,6 @@
 	'tolx','np','eps_rel','exclusive','n','gridonbed','gridonsurface','elementonbed','elementonsurface','deltaH','DeltaH','timeacc','timedec'};
 for i=1:length(fields),
-	if ~isempty(md.(fields{i})),
-		if any(isnan(md.(fields{i}))),
+	if ~isempty(eval(['md.' fields{i}])),
+		if any(isnan(eval(['md.' fields{i}]))),
 			disp(['model ' md.name ' has an NaN value in field ' fields{i} '!']);
 			bool=0; return;
@@ -80,6 +80,6 @@
 	'sparsity','lowmem','n','gridonbed','gridonsurface','elementonbed','elementonsurface','deltaH','DeltaH','timeacc','timedec'};
 for i=1:length(fields),
-	if ~isempty(md.(fields{i})),
-		if any(md.(fields{i})<0),
+	if ~isempty(eval(['md.' fields{i}])),
+		if any((eval(['md.' fields{i}]))<0),
 			disp(['model ' md.name ' has a <0 value in field ' fields{i} '!']);
 			bool=0; return;
@@ -97,6 +97,6 @@
 	'sparsity','deltaH','DeltaH','timeacc','timedec'};
 for i=1:length(fields),
-	if ~isempty(md.(fields{i})),
-		if any(md.(fields{i})==0),
+	if ~isempty(eval(['md.' fields{i}])),
+		if any((eval(['md.' fields{i}]))==0),
 			disp(['model ' md.name ' has a =0 value in field ' fields{i} '!']);
 			bool=0; return;
@@ -108,5 +108,5 @@
 fields={'elements','p','q','elementoniceshelf','n','elementonbed'};
 for i=1:size(fields,2),
-	if (size(md.(fields{i}),1)~=md.numberofelements),
+	if (size(eval(['md.' fields{i}]),1)~=md.numberofelements),
 		disp(['model ' md.name ' field ' fields{i} ' should be of size ' num2str(md.numberofelements) '!']);
 		bool=0; return;
@@ -117,5 +117,5 @@
 fields={'x','y','z','B','drag','gridondirichlet_diag','melting','accumulation','surface','thickness','bed','gridonbed','gridonsurface'};
 for i=1:length(fields),
-	if length(md.(fields{i}))~=md.numberofgrids,
+	if length(eval(['md.' fields{i}]))~=md.numberofgrids,
 		disp(['model ' md.name ' field ' fields{i} ' should be of size ' num2str(md.numberofgrids) '!']);
 		bool=0; return;
@@ -157,4 +157,13 @@
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  SOLUTION CHECKS  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%QMU
+if md.dakotaplugin==1,
+	if md.qmu_params.evaluation_concurrency~=1,
+		disp(['concurrency should be set to 1 when running dakota in library mode']);
+		bool=0;return;
+	end
+end
+
+
 
 %DIAGNOSTIC
@@ -249,5 +258,5 @@
 	fields={'dt','ndt'};
 	for i=1:length(fields),
-		if any(md.(fields{i})<0),
+		if any((eval(['md.' fields{i}]))<0),
 			disp(['model ' md.name ' has a <0 value in field ' fields{i} '!']);
 			bool=0; return;
@@ -320,5 +329,5 @@
 	fields={'vx_obs','vy_obs'};
 	for i=1:length(fields),
-		if any(length(md.(fields{i}))~=md.numberofgrids),
+		if any(length(eval(['md.' fields{i}]))~=md.numberofgrids),
 			disp(['model ' md.name ' field ' fields{i} ' should be of size ' num2str(md.numberofgrids) '!']);
 			bool=0; return;
@@ -362,6 +371,6 @@
 	fields={'sparsity'};
 	for i=1:length(fields),
-		if ~isempty(md.(fields{i})),
-			if any(isnan(md.(fields{i}))),
+		if ~isempty(eval(['md.' fields{i}])),
+			if any(isnan(eval(['md.' fields{i}]))),
 				disp(['model ' md.name ' has an NaN value in field ' fields{i} '!']);
 				bool=0; return;
@@ -373,6 +382,6 @@
 	fields={'sparsity'};
 	for i=1:length(fields),
-		if ~isempty(md.(fields{i})),
-			if any(md.(fields{i})<0),
+		if ~isempty(eval(['md.' fields{i}])),
+			if any((eval(['md.' fields{i}]))<0),
 				disp(['model ' md.name ' has a <0 value in field ' fields{i} '!']);
 				bool=0; return;
@@ -384,6 +393,6 @@
 	fields={'sparsity'};
 	for i=1:length(fields),
-		if ~isempty(md.(fields{i})),
-			if any(md.(fields{i})==0),
+		if ~isempty(eval(['md.' fields{i}])),
+			if any((eval(['md.' fields{i}]))==0),
 				disp(['model ' md.name ' has a =0 value in field ' fields{i} '!']);
 				bool=0; return;
@@ -435,6 +444,6 @@
 		fields={'time','np'};
 		for i=1:length(fields),
-			if ~isempty(md.(fields{i})),
-				if any(isnan(md.(fields{i}))),
+			if ~isempty(eval(['md.' fields{i}])),
+				if any(isnan(eval(['md.' fields{i}]))),
 					disp(['model ' md.name ' has an NaN value in field ' fields{i} '!']);
 					bool=0; return;
@@ -446,6 +455,6 @@
 		fields={'time','np'};
 		for i=1:length(fields),
-			if ~isempty(md.(fields{i})),
-				if any(md.(fields{i})<0),
+			if ~isempty(eval(['md.' fields{i}])),
+				if any((eval(['md.' fields{i}]))<0),
 					disp(['model ' md.name ' has a <0 value in field ' fields{i} '!']);
 					bool=0; return;
@@ -457,6 +466,6 @@
 		fields={'time','np'};
 		for i=1:length(fields),
-			if ~isempty(md.(fields{i})),
-				if any(md.(fields{i})==0),
+			if ~isempty(eval(['md.' fields{i}])),
+				if any((eval(['md.' fields{i}]))==0),
 					disp(['model ' md.name ' has a =0 value in field ' fields{i} '!']);
 					bool=0; return;
Index: /issm/trunk/src/m/classes/public/loadresultsfromcluster.m
===================================================================
--- /issm/trunk/src/m/classes/public/loadresultsfromcluster.m	(revision 803)
+++ /issm/trunk/src/m/classes/public/loadresultsfromcluster.m	(revision 804)
@@ -17,7 +17,15 @@
 %Go pickup output file and logs on cluster
 if strcmpi(hostname,md.cluster),
-	system(['cp ' executionpath '/' md.name '.*o* ./']); %get outlog, errlog and outbin files
+	if md.qmu_analysis,
+		system(['cp ' executionpath '/' md.name '.outlog ' executionpath '/' md.name '.errlog ' executionpath '/' md.name '.outbin ' executionpath '/' md.name '.qmu.err ' executionpath '/' md.name '.qmu.out ' executionpath '/dakota_tabular.dat ./']); %get outlog, errlog and outbin files
+	else
+		system(['cp ' executionpath '/' md.name '.outlog ' executionpath '/' md.name '.errlog ' executionpath '/' md.name '.outbin ./']); %get outlog, errlog and outbin files
+	end
 else
-	system(['scp ' md.cluster ':' executionpath '/' md.name '.*o* ./']); %get outlog, errlog and outbin files
+	if md.qmu_analysis,
+		system(['scp ' md.cluster ':' executionpath '/' md.name '.outlog ' executionpath '/' md.name '.errlog ' executionpath '/' md.name '.outbin ' executionpath '/' md.name '.qmu.err ' executionpath '/' md.name '.qmu.out ' executionpath '/dakota_tabular.dat ./']); %get outlog, errlog and outbin files
+	else
+		system(['scp ' md.cluster ':' executionpath '/' md.name '.outlog ' executionpath '/' md.name '.errlog ' executionpath '/' md.name '.outbin ./']); %get outlog, errlog and outbin files
+	end
 end
 
Index: /issm/trunk/src/m/classes/public/loadresultsfromdisk.m
===================================================================
--- /issm/trunk/src/m/classes/public/loadresultsfromdisk.m	(revision 803)
+++ /issm/trunk/src/m/classes/public/loadresultsfromdisk.m	(revision 804)
@@ -12,11 +12,20 @@
 
 %load result onto model
-if isnan(md.results), md.results=struct(); end 
+if ~isstruct(md.results),
+	if isnan(md.results), md.results=struct(); end 
+end
 eval(['md.results.' md.analysis_type '=parseresultsfromdisk(filename);']);
 
-%Check result is consistent
-disp(sprintf('%s\n','checking result consistency'));
-if ~isresultconsistent(md,md.analysis_type),
-	%it would be very cruel to put an error, it would kill the computed results (even if not consistent...)
-	disp('!! results not consistent correct the model !!') 
+%Check result is consistent, only if it exists
+if ~isempty(md.results.diagnostic),
+	disp(sprintf('%s\n','checking result consistency'));
+	if ~isresultconsistent(md,md.analysis_type),
+		%it would be very cruel to put an error, it would kill the computed results (even if not consistent...)
+		disp('!! results not consistent correct the model !!') 
+	end
 end
+
+%deal with qmu results
+if md.qmu_analysis, 
+	md=qmuoutput(md,md.name,'qmu');
+end
Index: /issm/trunk/src/m/classes/public/marshall.m
===================================================================
--- /issm/trunk/src/m/classes/public/marshall.m	(revision 803)
+++ /issm/trunk/src/m/classes/public/marshall.m	(revision 804)
@@ -156,66 +156,7 @@
 end
 
-%Qmu
+%Qmu: the rest will be handle by qmumarshall
 WriteData(fid,md.qmu_analysis,'Integer','qmu_analysis');
-if md.qmu_analysis,
-	%recover variables for corresponding analysis
-	variables=md.variables(md.ivar);
 
-	%count how many variables we have
-	numvariables=0;
-	variable_fieldnames=fieldnames(variables);
-	for i=1:length(variable_fieldnames),
-		field_name=variable_fieldnames{i};
-		fieldvariables=variables.(field_name);
-		numvariables=numvariables+numel(variables.(field_name));
-	end
-	%write number of variables to disk
-	WriteData(fid,numvariables,'Integer','numberofvariables');
-
-	%now, for each variable, write descriptor
-	count=0;
-	for i=1:length(variable_fieldnames),
-		field_name=variable_fieldnames{i};
-		fieldvariables=variables.(field_name);
-		for j=1:length(fieldvariables),
-			descriptor=fieldvariables(j).descriptor;
-			WriteData(fid,descriptor,'String',['variabledescriptor' num2str(count)]);
-			count=count+1;
-		end
-	end
-	
-	%deal with responses
-
-	%recover responses for corresponding analysis
-	responses=md.responses(md.iresp);
-
-	%count how many responses we have
-	numresponses=0;
-	response_fieldnames=fieldnames(responses);
-	for i=1:length(response_fieldnames),
-		field_name=response_fieldnames{i};
-		fieldresponses=responses.(field_name);
-		numresponses=numresponses+numel(responses.(field_name));
-	end
-	%write number of responses to disk
-	WriteData(fid,numresponses,'Integer','numberofresponses');
-
-	%now, for each response, write descriptor
-	count=0;
-	for i=1:length(response_fieldnames),
-		field_name=response_fieldnames{i};
-		fieldresponses=responses.(field_name);
-		for j=1:length(fieldresponses),
-			descriptor=fieldresponses(j).descriptor;
-			WriteData(fid,descriptor,'String',['responsedescriptor' num2str(count)]);
-			count=count+1;
-		end
-	end
-	
-	
-	%write npart to disk
-	WriteData(fid,md.npart,'Integer','npart');
-end
-	
 %Get penalties to connect collapsed and non-collapsed 3d meshes: 
 if strcmpi(md.type,'3d'),
Index: sm/trunk/src/m/classes/public/qmu.m
===================================================================
--- /issm/trunk/src/m/classes/public/qmu.m	(revision 803)
+++ 	(revision )
@@ -1,65 +1,0 @@
-function md=qmu(md,varargin)
-%QMU - apply Quantification of Margins and Uncertainties techniques 
-%      to a solution sequence (like diagnostic.m, progonstic.m, etc ...), 
-%      using the Dakota software from Sandia.
-%   Usage:
-%      md=qmu(md,varargin)
-%      where varargin is a lit of paired arguments. 
-%      arguments can be: 'analysis_type': 'diagnostic','thermal','prognostic','transient'
-%      arguments can be: 'sub_analysis_type': 'transient','steady','' (default if empty = 'steady')
-%      arguments can be: 'package': 'macayeal','ice','cielo' (default if not specified = 'cielo')
-%
-%
-%   Examples:
-%      md=qmu(md,'analysis_type','diagnostic','package','cielo');
-%      md=qmu(md,'analysis_type','control','package','ice');
-%      md=qmu(md,'analysis_type','thermal','sub_analysis_type','transient','package','ice');
-%      md=qmu(md,'analysis_type','thermal','sub_analysis_type','steady','package','cielo');
-%      md=qmu(md,'analysis_type','thermal','package','cielo');
-%
-%   On top of these solution arguments (found also in solve.m), user can specify QMU 
-%   specific arguments: 
-%
-%       qmudir:  any directory where to run the qmu analysis
-%       qmufile: input file for Dakota
-%       ivar: selection number for variables input (if several are specified in variables)
-%       iresp: same thing for response functions
-%       imethod: same thing for methods
-%       iparams: same thing for params
-%       overwrite: overwrite qmudir
-%       outfiles: (John?)
-%       rstfile: backup file name
-%       rundakota: (John?)
-%       runmpi: (John?)
-
-%some checks on list of arguments
-global ISSM_DIR;
-
-%recover options
-options=recover_solve_options(md,varargin{:});
-
-%add default options
-options=process_solve_options(options);
-
-%recover some fields
-md.analysis_type=options.analysis_type;
-md.sub_analysis_type=options.sub_analysis_type;
-package=options.package;
-
-%Use package to set solution namespace
-usenamespace(package);
-
-if ~ismodelselfconsistent(md,package),
-	error(' '); %previous error messages should explain what is going on.
-end
-
-displaystring(md.debug,'\n%s\n','launching solution sequence');
-
-%Ok, are we running serially or in parallel?
-if ~strcmpi(md.cluster,'none'),
-	%ok, we are running parallel. 
-	md=qmuparallel(md,varargin{:});
-else
-	%we are running serially.
-	md=qmuserial(md,varargin{:});
-end
Index: sm/trunk/src/m/classes/public/qmuparallel.m
===================================================================
--- /issm/trunk/src/m/classes/public/qmuparallel.m	(revision 803)
+++ 	(revision )
@@ -1,41 +1,0 @@
-function md=qmuparallel(md,varargin)
-%QMUPARALLEL - drive qmu analysis in parallel
-%
-%   Usage:
-%      md=qmuparallel(md);
-
-%Get cluster.rc location
-cluster_rc_location=which('cluster.rc');
-
-%let solution sequences know that we are running in qmu mode
-md.qmu_analysis=1;
-
-%create dakota input file
-md=qmuin(md,varargin{:});
-
-%Figure out parameters for this particular cluster
-[codepath,executionpath]=ClusterParameters(md.cluster,cluster_rc_location);
-
-%Marshall model data into a binary file.
-marshall(md);
-
-%Create dakota input file.
-
-%Now, we need to build the queuing script, used by the cluster to launch the job.
-BuildQueueingScript(md,executionpath,codepath);
-
-%Now, launch the queueing script
-LaunchQueueJob(md,executionpath);
-
-%Do we return, or just wait for results?
-if md.waitonlock,
-	%we wait for the done file
-	waitonlock([executionpath '/' md.name '.lock']);
-	%load results
-	md=loadresultsfromcluster(md);
-else
-	return;
-end
-
-%reset qmu_analysis counter
-md.qmu_analysis=0;
