Index: /issm/trunk/src/c/parallel/ProcessResults.cpp
===================================================================
--- /issm/trunk/src/c/parallel/ProcessResults.cpp	(revision 693)
+++ /issm/trunk/src/c/parallel/ProcessResults.cpp	(revision 694)
@@ -40,7 +40,11 @@
 	FemModel* fem_sl=NULL;
 
+	/*fem thermal models: */
+	FemModel* fem_t=NULL;
+
 	/*fem prognostic models: */
 	FemModel* fem_p=NULL;
 
+	/*some parameters*/
 	int ishutter;
 	int ismacayealpattyn;
@@ -66,4 +70,12 @@
 	double* thickness=NULL;
 
+	Vec     t_g=NULL;
+	double* t_g_serial=NULL;
+	double* temperature=NULL;
+
+	Vec     m_g=NULL;
+	double* m_g_serial=NULL;
+	double* melting=NULL;
+
 	int numberofnodes;
 
@@ -92,4 +104,8 @@
 	if(analysis_type==PrognosticAnalysisEnum()){
 		fem_p=fems+0;
+	}
+
+	if(analysis_type==ThermalAnalysisEnum()){
+		fem_t=fems+0;
 	}
 
@@ -229,4 +245,48 @@
 		}
 
+		else if(strcmp(result->GetFieldName(),"t_g")==0){
+			/*easy, t_g is of size numberofnodes, on 1 dof, just repartition: */
+			result->GetField(&t_g);
+			VecToMPISerial(&t_g_serial,t_g);
+			fem_t->parameters->FindParam((void*)&numberofnodes,"numberofnodes");
+			VecToMPISerial(&partition,fem_t->partition);
+
+			temperature=(double*)xmalloc(numberofnodes*sizeof(double));
+
+			for(i=0;i<numberofnodes;i++){
+				temperature[i]=t_g_serial[(int)partition[i]];
+			}
+
+			/*Ok, add pressure to newresults: */
+			newresult=new Result(newresults->Size()+1,result->GetTime(),result->GetStep(),"temperature",temperature,numberofnodes);
+			newresults->AddObject(newresult);
+
+			/*do some cleanup: */
+			xfree((void**)&t_g_serial);
+			xfree((void**)&partition);
+		}
+
+		else if(strcmp(result->GetFieldName(),"m_g")==0){
+			/*easy, m_g is of size numberofnodes, on 1 dof, just repartition: */
+			result->GetField(&m_g);
+			VecToMPISerial(&m_g_serial,m_g);
+			fem_t->parameters->FindParam((void*)&numberofnodes,"numberofnodes");
+			VecToMPISerial(&partition,fem_t->partition);
+
+			melting=(double*)xmalloc(numberofnodes*sizeof(double));
+
+			for(i=0;i<numberofnodes;i++){
+				melting[i]=m_g_serial[(int)partition[i]];
+			}
+
+			/*Ok, add pressure to newresults: */
+			newresult=new Result(newresults->Size()+1,result->GetTime(),result->GetStep(),"melting",melting,numberofnodes);
+			newresults->AddObject(newresult);
+
+			/*do some cleanup: */
+			xfree((void**)&m_g_serial);
+			xfree((void**)&partition);
+		}
+
 		else if(strcmp(result->GetFieldName(),"h_g")==0){
 			/*easy, h_g is of size numberofnodes, on 1 dof, just repartition: */
