Index: /issm/trunk/src/c/parallel/ProcessResults.cpp
===================================================================
--- /issm/trunk/src/c/parallel/ProcessResults.cpp	(revision 852)
+++ /issm/trunk/src/c/parallel/ProcessResults.cpp	(revision 853)
@@ -71,4 +71,12 @@
 	double* parameter=NULL;
 
+	Vec     s_g=NULL;
+	double* s_g_serial=NULL;
+	double* surface=NULL;
+
+	Vec     b_g=NULL;
+	double* b_g_serial=NULL;
+	double* bed=NULL;
+
 	Vec     h_g=NULL;
 	double* h_g_serial=NULL;
@@ -107,4 +115,20 @@
 	}
 
+	if(analysis_type==TransientAnalysisEnum()){
+
+		fem_dh=fems+0;
+		fem_dv=fems+1;
+		fem_ds=fems+2;
+		fem_dhu=fems+3;
+		fem_sl=fems+4;
+		fem_p=fems+5;
+	
+		/*some flags needed: */
+		fem_dh->parameters->FindParam((void*)&dim,"dim");
+		fem_dhu->parameters->FindParam((void*)&ishutter,"ishutter");
+		fem_ds->parameters->FindParam((void*)&isstokes,"isstokes");
+		fem_dh->parameters->FindParam((void*)&ismacayealpattyn,"ismacayealpattyn");
+	}
+	
 	if(analysis_type==PrognosticAnalysisEnum()){
 		fem_p=fems+0;
@@ -121,8 +145,8 @@
 
 	for(n=0;n<results->Size();n++){
-	
 		result=(Result*)results->GetObjectByOffset(n);
-		
+
 		if(strcmp(result->GetFieldName(),"u_g")==0){
+
 			/*Ok, are we dealing with velocities coming from MacAyeal, Pattyin, Hutter, on 2,3 dofs or
 			 *Stokes on 4 dofs: */
@@ -155,8 +179,6 @@
 				}
 			}
-
 			//3d results -> 3 or 4 (stokes) dofs per node
 			else{
-
 				if(!isstokes){
 					/*ok, 3 dofs, on number of nodes: */
@@ -183,5 +205,4 @@
 					}
 				}
-
 				else{
 					/* 4 dofs on number of nodes. discard pressure: */
@@ -317,4 +338,46 @@
 			xfree((void**)&partition);
 		}
+		else if(strcmp(result->GetFieldName(),"s_g")==0){
+			/*easy, s_g is of size numberofnodes, on 1 dof, just repartition: */
+			result->GetField(&s_g);
+			VecToMPISerial(&s_g_serial,s_g);
+			fem_p->parameters->FindParam((void*)&numberofnodes,"numberofnodes");
+			VecToMPISerial(&partition,fem_p->partition);
+
+			surface=(double*)xmalloc(numberofnodes*sizeof(double));
+
+			for(i=0;i<numberofnodes;i++){
+				surface[i]=s_g_serial[(int)partition[i]];
+			}
+			
+			/*Ok, add pressure to newresults: */
+			newresult=new Result(newresults->Size()+1,result->GetTime(),result->GetStep(),"surface",surface,numberofnodes);
+			newresults->AddObject(newresult);
+
+			/*do some cleanup: */
+			xfree((void**)&s_g_serial);
+			xfree((void**)&partition);
+		}
+		else if(strcmp(result->GetFieldName(),"b_g")==0){
+			/*easy, b_g is of size numberofnodes, on 1 dof, just repartition: */
+			result->GetField(&b_g);
+			VecToMPISerial(&b_g_serial,b_g);
+			fem_p->parameters->FindParam((void*)&numberofnodes,"numberofnodes");
+			VecToMPISerial(&partition,fem_p->partition);
+
+			bed=(double*)xmalloc(numberofnodes*sizeof(double));
+
+			for(i=0;i<numberofnodes;i++){
+				bed[i]=b_g_serial[(int)partition[i]];
+			}
+			
+			/*Ok, add pressure to newresults: */
+			newresult=new Result(newresults->Size()+1,result->GetTime(),result->GetStep(),"bed",bed,numberofnodes);
+			newresults->AddObject(newresult);
+
+			/*do some cleanup: */
+			xfree((void**)&b_g_serial);
+			xfree((void**)&partition);
+		}
 		else if(strcmp(result->GetFieldName(),"param_g")==0){
 			/*easy, param_g is of size numberofnodes, on 1 dof, just repartition: */
Index: /issm/trunk/src/c/parallel/transient.cpp
===================================================================
--- /issm/trunk/src/c/parallel/transient.cpp	(revision 852)
+++ /issm/trunk/src/c/parallel/transient.cpp	(revision 853)
@@ -131,5 +131,5 @@
 
 	_printf_("process results:\n");
-	ProcessResults(&results,&femmodels[0],DiagnosticAnalysisEnum());
+	ProcessResults(&results,&femmodels[0],TransientAnalysisEnum());
 	
 	_printf_("write results to disk:\n");
Index: /issm/trunk/src/c/parallel/transient_core_2d.cpp
===================================================================
--- /issm/trunk/src/c/parallel/transient_core_2d.cpp	(revision 852)
+++ /issm/trunk/src/c/parallel/transient_core_2d.cpp	(revision 853)
@@ -83,5 +83,5 @@
 	
 	fem_p->parameters->FindParam((void*)&u_g_serial,"u_g");
-	u_g=SerialToVec(u_g_serial,2*numberofnodes); xfree((void**)&u_g_serial);
+	u_g=SerialToVec(u_g_serial,3*numberofnodes); xfree((void**)&u_g_serial);
 
 	fem_p->parameters->FindParam((void*)&p_g_serial,"p_g");
