Index: /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 4296)
+++ /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 4297)
@@ -51,5 +51,4 @@
 		case SteadyAnalysisEnum : return "SteadyAnalysis";
 		case TransientAnalysisEnum : return "TransientAnalysis";
-		case SlopeAnalysisEnum : return "SlopeAnalysis";
 		case BedSlopeSolutionEnum : return "BedSlopeSolution";
 		case BedSlopeAnalysisEnum : return "BedSlopeAnalysis";
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4296)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4297)
@@ -54,5 +54,4 @@
 	TransientAnalysisEnum, // needed by nighly run (to be removed at some point?)
 	//slope
-	SlopeAnalysisEnum,
 	BedSlopeSolutionEnum,
 	BedSlopeAnalysisEnum,
Index: /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 4296)
+++ /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 4297)
@@ -49,5 +49,4 @@
 	else if (strcmp(name,"SteadyAnalysis")==0) return SteadyAnalysisEnum;
 	else if (strcmp(name,"TransientAnalysis")==0) return TransientAnalysisEnum;
-	else if (strcmp(name,"SlopeAnalysis")==0) return SlopeAnalysisEnum;
 	else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
 	else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;
Index: /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateConstraintsSlopeCompute.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateConstraintsSlopeCompute.cpp	(revision 4297)
+++ /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateConstraintsSlopeCompute.cpp	(revision 4297)
@@ -0,0 +1,26 @@
+/*
+ * CreateConstraintsSlopeCompute.c:
+ */
+
+#include "../../../Container/Container.h"
+#include "../../../io/io.h"
+#include "../../../toolkits/toolkits.h"
+#include "../../../EnumDefinitions/EnumDefinitions.h"
+#include "../../../objects/objects.h"
+#include "../../../shared/shared.h"
+#include "../ModelProcessorx.h"
+
+void	CreateConstraintsSlopeCompute(Constraints** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
+
+	/*Output*/
+	Constraints* constraints = NULL;
+	
+	/*Recover pointer: */
+	constraints=*pconstraints;
+
+	/*Create constraints if they do not exist yet*/
+	if(!constraints) constraints = new Constraints(ConstraintsEnum);
+
+	/*Assign output pointer: */
+	*pconstraints=constraints;
+}
Index: /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateLoadsSlopeCompute.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateLoadsSlopeCompute.cpp	(revision 4297)
+++ /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateLoadsSlopeCompute.cpp	(revision 4297)
@@ -0,0 +1,26 @@
+/*! \file CreateLoadsSlopeCompute.c:
+ */
+
+#include "../../../Container/Container.h"
+#include "../../../io/io.h"
+#include "../../../toolkits/toolkits.h"
+#include "../../../EnumDefinitions/EnumDefinitions.h"
+#include "../../../objects/objects.h"
+#include "../../../shared/shared.h"
+#include "../../../include/include.h"
+#include "../ModelProcessorx.h"
+
+void	CreateLoadsSlopeCompute(Loads** ploads, IoModel* iomodel,ConstDataHandle iomodel_handle){
+
+	/*DataSet*/
+	Loads*    loads    = NULL;
+
+	/*Recover pointer: */
+	loads=*ploads;
+
+	/*Create loads if they do not exist yet*/
+	if(!loads) loads = new Loads(LoadsEnum);
+
+	/*Assign output pointer: */
+	*ploads=loads;
+}
Index: /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesSlopeCompute.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesSlopeCompute.cpp	(revision 4297)
+++ /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesSlopeCompute.cpp	(revision 4297)
@@ -0,0 +1,63 @@
+/*
+ * CreateNodesSlopeCompute.c:
+ */
+
+#include "../../../Container/Container.h"
+#include "../../../io/io.h"
+#include "../../../toolkits/toolkits.h"
+#include "../../../EnumDefinitions/EnumDefinitions.h"
+#include "../../../objects/objects.h"
+#include "../../../shared/shared.h"
+#include "../../../include/include.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	CreateNodesSlopeCompute(Nodes** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
+
+	/*Intermediary*/
+	int i;
+	bool continuous_galerkin=true;
+
+	/*DataSets: */
+	Nodes*    nodes = NULL;
+
+	/*Recover pointer: */
+	nodes=*pnodes;
+
+	/*Create nodes if they do not exist yet*/
+	if(!nodes) nodes = new Nodes(NodesEnum);
+	
+	/*Continuous Galerkin partition of nodes: */
+	NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel, iomodel_handle,continuous_galerkin);
+	
+	/*First fetch data: */
+	if (iomodel->dim==3){
+		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
+		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
+	}
+	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
+	IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface");
+	IoModelFetchData(&iomodel->gridonicesheet,NULL,NULL,iomodel_handle,"gridonicesheet");
+	IoModelFetchData(&iomodel->gridoniceshelf,NULL,NULL,iomodel_handle,"gridoniceshelf");
+
+	for (i=0;i<iomodel->numberofvertices;i++){
+
+		if(iomodel->my_vertices[i]){
+			
+			/*Add node to nodes dataset: */
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i+1,i,iomodel,SlopeAnalysisEnum));
+
+		}
+	}
+
+	/*Clean fetched data: */
+	xfree((void**)&iomodel->deadgrids);
+	xfree((void**)&iomodel->gridonbed);
+	xfree((void**)&iomodel->gridonsurface);
+	xfree((void**)&iomodel->uppernodes);
+	xfree((void**)&iomodel->gridonicesheet);
+	xfree((void**)&iomodel->gridoniceshelf);
+	
+	/*Assign output pointer: */
+	*pnodes=nodes;
+}
Index: /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsSlopeCompute.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsSlopeCompute.cpp	(revision 4297)
+++ /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsSlopeCompute.cpp	(revision 4297)
@@ -0,0 +1,52 @@
+/*
+ * UpdateElementsSlopeCompute:
+ */
+
+#include "../../../Container/Container.h"
+#include "../../../toolkits/toolkits.h"
+#include "../../../io/io.h"
+#include "../../../EnumDefinitions/EnumDefinitions.h"
+#include "../../../objects/objects.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../../../include/include.h"
+#include "../ModelProcessorx.h"
+
+void	UpdateElementsSlopeCompute(Elements* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
+
+	/*Intermediary*/
+	int i;
+	int counter;
+	Element* element=NULL;
+
+	/*Fetch data needed: */
+	IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
+	IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");
+	IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");
+	IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");
+
+	if (iomodel->dim==3){
+		IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed");
+		IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
+		IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
+	}
+
+	/*Update elements: */
+	counter=0;
+	for (i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
+			counter++;
+		}
+	}
+
+	/*Free data: */
+	xfree((void**)&iomodel->elements);
+	xfree((void**)&iomodel->surface);
+	xfree((void**)&iomodel->bed);
+	xfree((void**)&iomodel->elementonwater);
+	xfree((void**)&iomodel->elementonbed);
+	xfree((void**)&iomodel->upperelements);
+	xfree((void**)&iomodel->lowerelements);
+}
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp	(revision 4296)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp	(revision 4297)
@@ -57,23 +57,16 @@
 			break;
 
-		case SlopeAnalysisEnum:
-			CreateNodesSlopeCompute(pnodes, iomodel,iomodel_handle);
-			CreateConstraintsSlopeCompute(pconstraints,iomodel,iomodel_handle);
-			CreateLoadsSlopeCompute(ploads,iomodel,iomodel_handle);
-			UpdateElementsSlopeCompute(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
-			break;
-		
 		case BedSlopeAnalysisEnum:
-			CreateNodesSlopeCompute(pnodes, iomodel,iomodel_handle);
-			CreateConstraintsSlopeCompute(pconstraints,iomodel,iomodel_handle);
-			CreateLoadsSlopeCompute(ploads,iomodel,iomodel_handle);
-			UpdateElementsSlopeCompute(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
+			CreateNodesBedSlope(pnodes, iomodel,iomodel_handle);
+			CreateConstraintsBedSlope(pconstraints,iomodel,iomodel_handle);
+			CreateLoadsBedSlope(ploads,iomodel,iomodel_handle);
+			UpdateElementsBedSlope(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 
 		case SurfaceSlopeAnalysisEnum:
-			CreateNodesSlopeCompute(pnodes, iomodel,iomodel_handle);
-			CreateConstraintsSlopeCompute(pconstraints,iomodel,iomodel_handle);
-			CreateLoadsSlopeCompute(ploads,iomodel,iomodel_handle);
-			UpdateElementsSlopeCompute(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
+			CreateNodesSurfaceSlope(pnodes, iomodel,iomodel_handle);
+			CreateConstraintsSurfaceSlope(pconstraints,iomodel,iomodel_handle);
+			CreateLoadsSurfaceSlope(ploads,iomodel,iomodel_handle);
+			UpdateElementsSurfaceSlope(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 
Index: /issm/trunk/src/c/solutions/steadystate.cpp
===================================================================
--- /issm/trunk/src/c/solutions/steadystate.cpp	(revision 4296)
+++ /issm/trunk/src/c/solutions/steadystate.cpp	(revision 4297)
@@ -39,6 +39,6 @@
 	BoolParam* param=NULL;
 
-	const int numanalyses=7;
-	const int analyses[numanalyses]={DiagnosticHorizAnalysisEnum,DiagnosticVertAnalysisEnum,DiagnosticStokesAnalysisEnum,DiagnosticHutterAnalysisEnum,SlopeAnalysisEnum,ThermalAnalysisEnum,MeltingAnalysisEnum};
+	const int numanalyses=8;
+	const int analyses[numanalyses]={DiagnosticHorizAnalysisEnum,DiagnosticVertAnalysisEnum,DiagnosticStokesAnalysisEnum,DiagnosticHutterAnalysisEnum,SurfaceSlopeAnalysisEnum,BedSlopeAnalysisEnum,ThermalAnalysisEnum,MeltingAnalysisEnum};
 	const int solution_type=SteadystateSolutionEnum;
 
Index: /issm/trunk/src/c/solutions/transient3d.cpp
===================================================================
--- /issm/trunk/src/c/solutions/transient3d.cpp	(revision 4296)
+++ /issm/trunk/src/c/solutions/transient3d.cpp	(revision 4297)
@@ -35,6 +35,6 @@
 	double   start_init, finish_init;
 
-	const int numanalyses=8;
-	const int analyses[numanalyses]={DiagnosticHorizAnalysisEnum,DiagnosticVertAnalysisEnum,DiagnosticStokesAnalysisEnum,DiagnosticHutterAnalysisEnum,SlopeAnalysisEnum,PrognosticAnalysisEnum,ThermalAnalysisEnum,MeltingAnalysisEnum};
+	const int numanalyses=9;
+	const int analyses[numanalyses]={DiagnosticHorizAnalysisEnum,DiagnosticVertAnalysisEnum,DiagnosticStokesAnalysisEnum,DiagnosticHutterAnalysisEnum,SurfaceSlopeAnalysisEnum,BedSlopeAnalysisEnum,PrognosticAnalysisEnum,ThermalAnalysisEnum,MeltingAnalysisEnum};
 	const int solution_type=Transient3DSolutionEnum;
 
