Index: /issm/trunk/src/c/modules/OutputResultsx/FileWriteResults.cpp
===================================================================
--- /issm/trunk/src/c/modules/OutputResultsx/FileWriteResults.cpp	(revision 4163)
+++ /issm/trunk/src/c/modules/OutputResultsx/FileWriteResults.cpp	(revision 4163)
@@ -0,0 +1,35 @@
+/*!\file: FileWriteResults.cpp
+ * \brief: write results in femmodel->results to disk
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+void FileWriteResults(Parameters* parameters, DataSet* results){
+
+	extern int  my_rank;
+	char       *filename     = NULL;
+	FILE       *fid          = NULL;
+
+	//Recover file name: 
+	parameters->FindParam(&filename,OutputFileNameEnum);
+
+	//Open filename for writing only on cpu 0
+	if(my_rank==0)fid=pfopen(filename,"wb");
+
+	for(i=0;i<results->Size();i++){
+		ExternalResult* result=(ExternalResult*)results->GetObjectByOffset(i);
+
+		/*write result to disk: */
+		result->WriteData(fid);
+	}
+
+	/*Close file: */
+	if(my_rank==0)pfclose(fid,filename);
+
+	/*Free ressources:*/
+	xfree((void**)&filename);
+}
Index: /issm/trunk/src/c/modules/OutputResultsx/MatlabWriteResults.cpp
===================================================================
--- /issm/trunk/src/c/modules/OutputResultsx/MatlabWriteResults.cpp	(revision 4163)
+++ /issm/trunk/src/c/modules/OutputResultsx/MatlabWriteResults.cpp	(revision 4163)
@@ -0,0 +1,44 @@
+/*!\file: MatlabWriteResults.cpp
+ * \brief: write results into a matlab array
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _SERIAL_
+
+#include <mex.h>
+#include "./io.h"
+#include "../objects/objects.h"
+#include "../shared/shared.h"
+#include "../include/include.h"
+
+void  MatlabWriteResults(mxArray** pdataref, Parameters* parameters, DataSet* results){
+
+	extern int  my_rank;
+	char       *filename     = NULL;
+	FILE       *fid          = NULL;
+
+	//Recover file name: 
+	parameters->FindParam(&filename,OutputFileNameEnum);
+
+	//Open filename for writing only on cpu 0
+	if(my_rank==0)fid=pfopen(filename,"wb");
+
+	for(i=0;i<results->Size();i++){
+		ExternalResult* result=(ExternalResult*)results->GetObjectByOffset(i);
+
+		/*write result to disk: */
+		result->WriteData(fid);
+	}
+
+	/*Close file: */
+	if(my_rank==0)pfclose(fid,filename);
+
+	/*Free ressources:*/
+	xfree((void**)&filename);
+}
+#endif
Index: /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 4162)
+++ /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 4163)
@@ -16,11 +16,12 @@
 #include "../../objects/objects.h"
 		
+#ifdef _SERIAL_
+void OutputResultsx(mxArray** pdataref, DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,DataSet* results){
+#else
 void OutputResultsx(DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,DataSet* results){
+#endif
 
-	int         i;
-	extern int  my_rank;
-	char       *filename     = NULL;
 	int         solutiontype;
-	FILE       *fid          = NULL;
+	
 
 	/*First, configure elements*/
@@ -37,21 +38,11 @@
 	#endif
 
-	//Recover file name: 
-	parameters->FindParam(&filename,OutputFileNameEnum);
+	/*Write data to matlab structure or filename: */
+	#ifdef _SERIAL_
+		MatlabWriteResults();
+	#else
+		FileWriteResults();
+	#endif
+}
 
-	//Open filename for writing only on cpu 0
-	if(my_rank==0)fid=pfopen(filename,"wb");
 
-	for(i=0;i<results->Size();i++){
-		ExternalResult* result=(ExternalResult*)results->GetObjectByOffset(i);
-
-		/*write result to disk: */
-		result->WriteData(fid);
-	}
-
-	/*Close file: */
-	if(my_rank==0)pfclose(fid,filename);
-
-	/*Free ressources:*/
-	xfree((void**)&filename);
-}
Index: /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h
===================================================================
--- /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 4162)
+++ /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 4163)
@@ -6,11 +6,23 @@
 #define _OUTPUTRESULTS_H
 
+#ifdef HAVE_CONFIG_H
+	#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
 class DataSet;
 class Parameters;
 
+#ifdef _SERIAL_
+void OutputResultsx(mxArray** pdataref, DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,DataSet* results);
+#else
+void OutputResultsx(DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,DataSet* results);
+#endif
+
 /* local prototypes: */
 void ElementResultsToPatch(DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,DataSet* results);
-
-void OutputResultsx(DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,DataSet* results);
+void FileWriteResults(Parameters* parameters, DataSet* results);
+void MatlabWriteResults(mxArray** pdataref, Parameters* parameters, DataSet* results);
 
 #endif  /* _OUTPUTRESULTS_H */
