Index: /issm/trunk/src/c/parallel/steadystate_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/steadystate_core.cpp	(revision 2006)
+++ /issm/trunk/src/c/parallel/steadystate_core.cpp	(revision 2007)
@@ -111,10 +111,9 @@
 		//convergence? 
 		if(step>1){
-			VecFree(&du_g);VecDuplicatePatch(&du_g,old_u_g);VecAYPX(du_g,-1.0,u_g);
-			VecNorm(du_g,NORM_2,&ndu); VecNorm(old_u_g,NORM_2,&nu);
+			VecDuplicatePatch(&du_g,old_u_g);VecAYPX(du_g,-1.0,u_g);
+			VecNorm(du_g,NORM_2,&ndu); VecNorm(old_u_g,NORM_2,&nu); VecFree(&du_g);
 
-			VecFree(&dt_g);VecDuplicatePatch(&dt_g,old_t_g); VecAYPX(dt_g,-1.0,t_g);
-			VecNorm(dt_g,NORM_2,&normdt); VecNorm(old_t_g,NORM_2,&normt);
-
+			VecDuplicatePatch(&dt_g,old_t_g); VecAYPX(dt_g,-1.0,t_g);
+			VecNorm(dt_g,NORM_2,&normdt); VecNorm(old_t_g,NORM_2,&normt);VecFree(&dt_g);
 					
 			if (debug) _printf_("%-60s%g\n                                     %s%g\n                                     %s%g%s\n",
@@ -135,4 +134,7 @@
 	}
 
+	/*Free ressource*/
+	VecFree(&old_u_g);
+	VecFree(&old_t_g);
 
 	/*Plug results into output dataset: */
Index: /issm/trunk/src/c/parallel/thermal_core_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/parallel/thermal_core_nonlinear.cpp	(revision 2006)
+++ /issm/trunk/src/c/parallel/thermal_core_nonlinear.cpp	(revision 2007)
@@ -16,4 +16,5 @@
 	Vec tg=NULL; 
 	Vec tf=NULL; 
+	Vec tf_old=NULL; 
 	double melting_offset;
 
@@ -100,5 +101,6 @@
 		/*Solve: */
 		if(debug)_printf_("%s\n","solving");
-		Solverx(&tf, Kff, pf, tf, solver_string);
+		Solverx(&tf, Kff, pf,tf_old, solver_string);
+		VecFree(&tf_old); VecDuplicatePatch(&tf_old,tf);
 	
 		//no need for Kff and pf anymore
@@ -128,4 +130,6 @@
 	VecFree(&pg_nopenalty);
 	VecFree(&tf);
+	VecFree(&tf_old);
+	delete solver_string;
 
 	/*Assign output pointers: */
