Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 3721)
+++ /issm/trunk/src/c/Makefile.am	(revision 3722)
@@ -808,4 +808,5 @@
 					./parallel/balancedvelocities_core.cpp\
 					./parallel/slopecompute_core.cpp\
+					./parallel/slope_core.cpp\
 					./parallel/transient_core.cpp\
 					./parallel/transient_core_2d.cpp\
Index: /issm/trunk/src/c/Qmux/DakotaResponses.cpp
===================================================================
--- /issm/trunk/src/c/Qmux/DakotaResponses.cpp	(revision 3721)
+++ /issm/trunk/src/c/Qmux/DakotaResponses.cpp	(revision 3722)
@@ -262,5 +262,4 @@
 
 			SplitSolutionVector(u_g,numberofnodes,numberofdofspernode,&vx,&vy,&vz);
-			SplitSolutionVector(u_g,numberofnodes,2,temperature,melting);
 
 			/*Add to inputs: */
Index: /issm/trunk/src/c/parallel/diagnostic.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 3721)
+++ /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 3722)
@@ -149,7 +149,4 @@
 
 	/*Free ressources */
-	xfree((void**)&u_g_initial);
-	xfree((void**)&u_g_obs);
-	xfree((void**)&weights);
 	xfree((void**)&control_type);
 	delete model;
Index: /issm/trunk/src/c/parallel/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic_core.cpp	(revision 3721)
+++ /issm/trunk/src/c/parallel/diagnostic_core.cpp	(revision 3722)
@@ -90,15 +90,6 @@
 	if(ishutter){
 			
-		if(verbose)_printf_("%s\n","computing surface slope (x and y derivatives)...");
-		diagnostic_core_linear(&slopex,fem_sl,SlopecomputeAnalysisEnum,SurfaceXAnalysisEnum);
-		diagnostic_core_linear(&slopey,fem_sl,SlopecomputeAnalysisEnum,SurfaceYAnalysisEnum);
-
-		if (dim==3){
-		
-			if(verbose)_printf_("%s\n","extruding slopes in 3d...");
-			FieldExtrudex( slopex, fem_sl->elements,fem_sl->nodes,fem_sl->vertices,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopex",0);
-			FieldExtrudex( slopey, fem_sl->elements,fem_sl->nodes,fem_sl->vertices,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopex",0);
-		}
-
+		slope_core(&slopex,&slopey,fem_sl,SurfaceAnalysisEnum);
+			
 		if(verbose)_printf_("%s\n"," adding slopes in inputs...");
 		inputs->Add("surfaceslopex",slopex,numberofdofspernode_sl,numberofnodes);
@@ -159,8 +150,5 @@
 
 			if(verbose)_printf_("%s\n","computing bed slope (x and y derivatives)...");
-			diagnostic_core_linear(&slopex,fem_sl,SlopecomputeAnalysisEnum,BedXAnalysisEnum);
-			diagnostic_core_linear(&slopey,fem_sl,SlopecomputeAnalysisEnum,BedYAnalysisEnum);
-			FieldExtrudex( slopex, fem_sl->elements,fem_sl->nodes,fem_sl->vertices,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopex",0);
-			FieldExtrudex( slopey, fem_sl->elements,fem_sl->nodes,fem_sl->vertices,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopey",0);
+			slope_core(&slopex,&slopey,fem_sl,BedAnalysisEnum);
 
 			inputs->Add("bedslopex",slopex,numberofdofspernode_sl,numberofnodes);
Index: /issm/trunk/src/c/parallel/parallel.h
===================================================================
--- /issm/trunk/src/c/parallel/parallel.h	(revision 3721)
+++ /issm/trunk/src/c/parallel/parallel.h	(revision 3722)
@@ -36,4 +36,6 @@
 void transient_core_3d(DataSet* results,Model* model);
 
+void slope_core(Vec* pslopex,Vec* pslopey,FemModel* fem,int AnalysisEnum);
+
 //int GradJOrth(WorkspaceParams* workspaceparams);
 
