Index: /issm/trunk/src/m/solutions/dakota/dakota_m_write.m
===================================================================
--- /issm/trunk/src/m/solutions/dakota/dakota_m_write.m	(revision 374)
+++ /issm/trunk/src/m/solutions/dakota/dakota_m_write.m	(revision 375)
@@ -59,5 +59,5 @@
 %  write end of the Matlab m-file
 
-end_write(fidm,name);
+end_write(fidm,name,params);
 
 fclose(fidm);
@@ -77,15 +77,16 @@
     fprintf(fidm,'%%\n');
     fprintf(fidm,'function Dakota=%s(Dakota)\n\n',name);
-    fprintf(fidm,'\tclk=clock;\n');
-    fprintf(fidm,'\tcpu=cputime;\n\n');
-    fprintf(fidm,'%%\tDakota\n\n');
-    fprintf(fidm,'\tinfile=''%s'';\n','Qmu.model');
+    fprintf(fidm,'clk=clock;\n');
+    fprintf(fidm,'cpu=cputime;\n\n');
+    fprintf(fidm,'%% Dakota\n\n');
+    fprintf(fidm,'infile=''%s'';\n','Qmu.model');
 else
     fprintf(fidm,'%%  Run the specified input file and return the output file.\n');
     fprintf(fidm,'%%\n');
     fprintf(fidm,'function %s(infile,outfile)\n\n',name);
-    fprintf(fidm,'\tclk=clock;\n');
-    fprintf(fidm,'\tcpu=cputime;\n\n');
-end
+    fprintf(fidm,'clk=clock;\n');
+    fprintf(fidm,'cpu=cputime;\n\n');
+end
+fprintf(fidm,'try\n');
 fprintf(fidm,'\tloadmodel(infile);\n\n');
 
@@ -221,11 +222,29 @@
 %%  function to write end of the Matlab m-file
 
-function []=end_write(fidm,name)
+function []=end_write(fidm,name,params)
 
 display('Writing end of Matlab m-file.');
 
-fprintf(fidm,'\tdisp(sprintf(''%s -- %%f CPU seconds; %%f clock seconds\\n'',...\n',name);
-fprintf(fidm,'\t    cputime-cpu,etime(clock,clk)))\n\n');
+fprintf(fidm,'%%  Error condition.\n\n');
+
+fprintf(fidm,'catch ME\n');
+fprintf(fidm,'\tME\n');
+fprintf(fidm,'\tfor i=1:length(ME.stack)\n');
+fprintf(fidm,'\t\tdisplay(sprintf(''    file(%%d): %%s'',  i,ME.stack(i).file));\n');
+fprintf(fidm,'\t\tdisplay(sprintf(''    name(%%d): %%s'',  i,ME.stack(i).name));\n');
+fprintf(fidm,'\t\tdisplay(sprintf(''    line(%%d): %%d\\n'',i,ME.stack(i).line));\n');
+fprintf(fidm,'\tend\n');
+if strcmpi(params.analysis_driver,'matlab')
+    fprintf(fidm,'\tDakota.failure=1;\n');
+else
+    fprintf(fidm,'\tfid=fopen(outfile,''w'');\n');
+    fprintf(fidm,'\tfprintf(fid,''fail\\n'');\n');
+    fprintf(fidm,'\tstatus=fclose(fid);\n');
+end
 fprintf(fidm,'end\n\n');
 
-end
+fprintf(fidm,'disp(sprintf(''%s -- %%f CPU seconds; %%f clock seconds\\n'',...\n',name);
+fprintf(fidm,'    cputime-cpu,etime(clock,clk)))\n\n');
+fprintf(fidm,'end\n\n');
+
+end
