Index: /issm/trunk/src/c/parallel/steadystate.cpp
===================================================================
--- /issm/trunk/src/c/parallel/steadystate.cpp	(revision 2007)
+++ /issm/trunk/src/c/parallel/steadystate.cpp	(revision 2008)
@@ -60,7 +60,4 @@
 	outputfilename=argv[3];
 	lockname=argv[4];
-
-	/*Initialize model structure: */
-	model=new Model();
 
 	/*Open handle to data on disk: */
Index: /issm/trunk/src/c/parallel/steadystate_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/steadystate_core.cpp	(revision 2007)
+++ /issm/trunk/src/c/parallel/steadystate_core.cpp	(revision 2008)
@@ -134,8 +134,4 @@
 	}
 
-	/*Free ressource*/
-	VecFree(&old_u_g);
-	VecFree(&old_t_g);
-
 	/*Plug results into output dataset: */
 	result=new Result(results->Size()+1,0,1,"u_g",u_g);
@@ -147,3 +143,11 @@
 	result=new Result(results->Size()+1,0,1,"m_g",m_g);
 	results->AddObject(result);
+
+	/*Free ressource*/
+	VecFree(&old_u_g);
+	VecFree(&old_t_g);
+	VecFree(&u_g);
+	VecFree(&p_g);
+	VecFree(&t_g);
+	VecFree(&m_g);
 }
Index: /issm/trunk/src/c/parallel/thermal_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/thermal_core.cpp	(revision 2007)
+++ /issm/trunk/src/c/parallel/thermal_core.cpp	(revision 2008)
@@ -46,6 +46,4 @@
 	int    sub_analysis_type;
 	double melting_offset;
-	
-	Param* param=NULL;
 
 	/*recover fem models: */
@@ -135,5 +133,9 @@
 		}
 	}
+
 	/*free ressource*/
 	xfree((void**)&t_g);
+	xfree((void**)&m_g);
+	xfree((void**)&time);
+
 }
Index: /issm/trunk/src/c/parallel/thermal_core_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/parallel/thermal_core_nonlinear.cpp	(revision 2007)
+++ /issm/trunk/src/c/parallel/thermal_core_nonlinear.cpp	(revision 2008)
@@ -71,8 +71,6 @@
 
 			/*Copy K_gg_nopenalty into Kgg, same for pg: */
-			Kgg=(Mat)xmalloc(sizeof(Mat));
 			MatDuplicate(Kgg_nopenalty,MAT_COPY_VALUES,&Kgg);
-			pg=(Vec)xmalloc(sizeof(Vec));
-			VecDuplicate(pg_nopenalty,&pg);VecCopy(pg_nopenalty,pg);
+			VecDuplicatePatch(&pg,pg_nopenalty);
 
 			//apply penalties each time
@@ -101,9 +99,10 @@
 		/*Solve: */
 		if(debug)_printf_("%s\n","solving");
+		VecFree(&tf);
 		Solverx(&tf, Kff, pf,tf_old, solver_string);
 		VecFree(&tf_old); VecDuplicatePatch(&tf_old,tf);
 	
 		//no need for Kff and pf anymore
-		MatFree(&Kff);VecFree(&pf);
+		MatFree(&Kff);VecFree(&pf);VecFree(&tg);
 
 		if (debug) _printf_("   merging solution from f to g set\n");
