Index: /issm/trunk/src/c/parallel/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic_core.cpp	(revision 2002)
+++ /issm/trunk/src/c/parallel/diagnostic_core.cpp	(revision 2003)
@@ -119,6 +119,8 @@
 		diagnostic_core_nonlinear(&ug,NULL,NULL,fem_dh->loads,fem_dh,inputs,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
 
-		if(debug)_printf_("%s\n"," computing pressure according to MacAyeal...");
-		ComputePressurex( &pg,fem_dh->elements, fem_dh->nodes, fem_dh->loads,  fem_dh->materials, numberofnodes);
+		if(dim==2){
+			if(debug)_printf_("%s\n"," computing pressure according to MacAyeal...");
+			ComputePressurex( &pg,fem_dh->elements, fem_dh->nodes, fem_dh->loads,  fem_dh->materials, numberofnodes);
+		}
 
 	}
@@ -177,6 +179,7 @@
 		
 			//decondition" pressure
-			VecFree(&pg);
-			xfree((void**)&dofset);dofset=dofsetgen(1,dof3,4,numberofnodes*4); VecPartition(&pg, ug, dofset, numberofnodes*1);
+			
+			xfree((void**)&dofset);dofset=dofsetgen(1,dof3,4,numberofnodes*4); 
+			VecFree(&pg);VecPartition(&pg, ug, dofset, numberofnodes*1);
 			VecScale(pg,stokesreconditioning);
 		}
@@ -188,4 +191,5 @@
 	result=new Result(results->Size()+1,0,1,"p_g",pg);
 	results->AddObject(result);
+
 	/*output if we have rifts: */
 	if(numrifts){
Index: /issm/trunk/src/c/parallel/diagnostic_core_linear.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic_core_linear.cpp	(revision 2002)
+++ /issm/trunk/src/c/parallel/diagnostic_core_linear.cpp	(revision 2003)
@@ -64,4 +64,7 @@
 	Mergesolutionfromftogx(&ug, uf,fem->Gmn,fem->ys,fem->nodesets);VecFree(&uf);
 
+	/*free ressources: */
+	xfree((void**)&solver_string);
+
 	/*Assign output pointers:*/
 	*pug=ug;
