Index: /issm/trunk/src/c/parallel/transient_core_2d.cpp
===================================================================
--- /issm/trunk/src/c/parallel/transient_core_2d.cpp	(revision 849)
+++ /issm/trunk/src/c/parallel/transient_core_2d.cpp	(revision 850)
@@ -37,4 +37,5 @@
 	double* p_g_serial=NULL;
 	Vec h_g=NULL;
+	Vec h_g_intermediary=NULL;
 	double* h_g_serial=NULL;
 	Vec s_g=NULL;
@@ -43,10 +44,4 @@
 	double* b_g_serial=NULL;
 
-	Vec next_u_g=NULL;
-	Vec next_p_g=NULL;
-	Vec next_h_g=NULL;
-	Vec h_g_intermediary=NULL;
-	Vec next_s_g=NULL;
-	Vec next_b_g=NULL;
 
 	/*intermediary: */
@@ -120,4 +115,5 @@
 		inputs->Add("surface",s_g,1,numberofnodes);
 		inputs->Add("bed",b_g,1,numberofnodes);
+		inputs->Add("velocity",u_g,2,numberofnodes);
 
 		//Deal with velocities.
@@ -126,6 +122,6 @@
 
 		//extract u_g and p_g from diagnostic_results, and erase diagnostic_results;
-		diagnostic_results->FindResult(&next_u_g,"u_g");
-		diagnostic_results->FindResult(&next_p_g,"p_g");
+		diagnostic_results->FindResult(&u_g,"u_g");
+		diagnostic_results->FindResult(&p_g,"p_g");
 		delete diagnostic_results;
 
@@ -133,5 +129,5 @@
 		_printf_("%s\n","computing new thickness");
 		
-		inputs->Add("velocity",next_u_g,2,numberofnodes);
+		inputs->Add("velocity",u_g,2,numberofnodes);
 		prognostic_results=new DataSet(ResultsEnum()); prognostic_core(prognostic_results,fem_p, inputs);
 	
@@ -142,5 +138,5 @@
 		//update surface and bed using the new thickness
 		_printf_("   updating geometry\n");
-		UpdateGeometryx(&next_h_g,&next_b_g,&next_s_g, 
+		UpdateGeometryx(&h_g,&b_g,&s_g, 
 				fem_p->elements, fem_p->nodes,fem_p->loads, fem_p->materials, 
 				h_g_intermediary,b_g,s_g); 
@@ -148,16 +144,9 @@
 
 		//plug into results.
-		result=new Result(results->Size()+1,time,step,"u_g",next_u_g); results->AddObject(result);
-		result=new Result(results->Size()+1,time,step,"p_g",next_p_g); results->AddObject(result);
-		result=new Result(results->Size()+1,time,step,"h_g",next_h_g); results->AddObject(result);
-		result=new Result(results->Size()+1,time,step,"s_g",next_s_g); results->AddObject(result);
-		result=new Result(results->Size()+1,time,step,"b_g",next_b_g); results->AddObject(result);
-
-		//point our results to next step
-		VecFree(&u_g); u_g=next_u_g; 
-		VecFree(&p_g); p_g=next_p_g; 
-		VecFree(&h_g); h_g=next_h_g; 
-		VecFree(&s_g); s_g=next_s_g; 
-		VecFree(&b_g); b_g=next_b_g; 
+		result=new Result(results->Size()+1,time,step,"u_g",u_g); results->AddObject(result);
+		result=new Result(results->Size()+1,time,step,"p_g",p_g); results->AddObject(result);
+		result=new Result(results->Size()+1,time,step,"h_g",h_g); results->AddObject(result);
+		result=new Result(results->Size()+1,time,step,"s_g",s_g); results->AddObject(result);
+		result=new Result(results->Size()+1,time,step,"b_g",b_g); results->AddObject(result);
 	}
 }
