Index: sm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancedthickness.cpp	(revision 8287)
+++ 	(revision )
@@ -1,56 +1,0 @@
-/*
- * CreateConstraintsBalancedthickness.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	CreateConstraintsBalancedthickness(Constraints** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
-
-	/*Intermediary*/
-	int i;
-	int count;
-
-	/*Output*/
-	Constraints* constraints = NULL;
-
-	/*Recover pointer: */
-	constraints=*pconstraints;
-
-	/*Create constraints if they do not exist yet*/
-	if(!constraints) constraints = new Constraints(ConstraintsEnum);
-
-	/*Do not add constraints in DG*/
-	if(!iomodel->prognostic_DG){
-
-		/*Fetch data: */
-		IoModelFetchData(&iomodel->spcthickness,NULL,NULL,iomodel_handle,"spcthickness");
-
-		/*Initialize counter*/
-		count=0;
-
-		/*Create spcs from x,y,z, as well as the spc values on those spcs: */
-		for (i=0;i<iomodel->numberofvertices;i++){
-			if(iomodel->my_vertices[i]){
-
-				if ((int)iomodel->spcthickness[2*i]){
-
-					constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
-									*(iomodel->spcthickness+2*i+1),BalancedthicknessAnalysisEnum));//we enforce first translation degree of freedom, for temperature
-					count++;
-				}
-			}
-		}
-
-		/*Free data: */
-		xfree((void**)&iomodel->spcthickness);
-	}
-
-	/*Assign output pointer: */
-	*pconstraints=constraints;
-}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancethickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancethickness.cpp	(revision 8288)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancethickness.cpp	(revision 8288)
@@ -0,0 +1,56 @@
+/*
+ * CreateConstraintsBalancethickness.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	CreateConstraintsBalancethickness(Constraints** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
+
+	/*Intermediary*/
+	int i;
+	int count;
+
+	/*Output*/
+	Constraints* constraints = NULL;
+
+	/*Recover pointer: */
+	constraints=*pconstraints;
+
+	/*Create constraints if they do not exist yet*/
+	if(!constraints) constraints = new Constraints(ConstraintsEnum);
+
+	/*Do not add constraints in DG*/
+	if(!iomodel->prognostic_DG){
+
+		/*Fetch data: */
+		IoModelFetchData(&iomodel->spcthickness,NULL,NULL,iomodel_handle,"spcthickness");
+
+		/*Initialize counter*/
+		count=0;
+
+		/*Create spcs from x,y,z, as well as the spc values on those spcs: */
+		for (i=0;i<iomodel->numberofvertices;i++){
+			if(iomodel->my_vertices[i]){
+
+				if ((int)iomodel->spcthickness[2*i]){
+
+					constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
+									*(iomodel->spcthickness+2*i+1),BalancethicknessAnalysisEnum));//we enforce first translation degree of freedom, for temperature
+					count++;
+				}
+			}
+		}
+
+		/*Free data: */
+		xfree((void**)&iomodel->spcthickness);
+	}
+
+	/*Assign output pointer: */
+	*pconstraints=constraints;
+}
Index: sm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateLoadsBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateLoadsBalancedthickness.cpp	(revision 8287)
+++ 	(revision )
@@ -1,57 +1,0 @@
-/*! \file CreateLoadsBalancedthickness.c:
- */
-
-#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 "../../../include/include.h"
-#include "../ModelProcessorx.h"
-
-void	CreateLoadsBalancedthickness(Loads** ploads, IoModel* iomodel,ConstDataHandle iomodel_handle){
-
-	/*Intermediary*/
-	int i;
-	int element;
-
-	/*Output*/
-	Loads*    loads    = NULL;
-
-	/*Recover pointer: */
-	loads=*ploads;
-
-	/*Create loads if they do not exist yet*/
-	if(!loads) loads = new Loads(LoadsEnum);
-	
-	/*Loads only in DG*/
-	if (iomodel->prognostic_DG){
-
-		/*Get edges and elements*/
-		IoModelFetchData(&iomodel->edges,&iomodel->numberofedges,NULL,iomodel_handle,"edges");
-		IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
-		IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");
-
-		/*First load data:*/
-		for (i=0;i<iomodel->numberofedges;i++){
-
-			/*Get left and right elements*/
-			element=(int)iomodel->edges[4*i+2]-1; //edges are [node1 node2 elem1 elem2]
-
-			/*Now, if this element is not in the partition, pass: */
-			if(!iomodel->my_elements[element]) continue;
-
-			/* Add load */
-			loads->AddObject(new Numericalflux(iomodel->loadcounter+i+1,i,iomodel,BalancedthicknessAnalysisEnum));
-		}
-
-		/*Free data: */
-		xfree((void**)&iomodel->edges);
-		xfree((void**)&iomodel->elements);
-		xfree((void**)&iomodel->thickness);
-	}
-
-	/*Assign output pointer: */
-	*ploads=loads;
-}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp	(revision 8288)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp	(revision 8288)
@@ -0,0 +1,57 @@
+/*! \file CreateLoadsBalancethickness.c:
+ */
+
+#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 "../../../include/include.h"
+#include "../ModelProcessorx.h"
+
+void	CreateLoadsBalancethickness(Loads** ploads, IoModel* iomodel,ConstDataHandle iomodel_handle){
+
+	/*Intermediary*/
+	int i;
+	int element;
+
+	/*Output*/
+	Loads*    loads    = NULL;
+
+	/*Recover pointer: */
+	loads=*ploads;
+
+	/*Create loads if they do not exist yet*/
+	if(!loads) loads = new Loads(LoadsEnum);
+	
+	/*Loads only in DG*/
+	if (iomodel->prognostic_DG){
+
+		/*Get edges and elements*/
+		IoModelFetchData(&iomodel->edges,&iomodel->numberofedges,NULL,iomodel_handle,"edges");
+		IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
+		IoModelFetchData(&iomodel->thickness,NULL,NULL,iomodel_handle,"thickness");
+
+		/*First load data:*/
+		for (i=0;i<iomodel->numberofedges;i++){
+
+			/*Get left and right elements*/
+			element=(int)iomodel->edges[4*i+2]-1; //edges are [node1 node2 elem1 elem2]
+
+			/*Now, if this element is not in the partition, pass: */
+			if(!iomodel->my_elements[element]) continue;
+
+			/* Add load */
+			loads->AddObject(new Numericalflux(iomodel->loadcounter+i+1,i,iomodel,BalancethicknessAnalysisEnum));
+		}
+
+		/*Free data: */
+		xfree((void**)&iomodel->edges);
+		xfree((void**)&iomodel->elements);
+		xfree((void**)&iomodel->thickness);
+	}
+
+	/*Assign output pointer: */
+	*ploads=loads;
+}
Index: sm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancedthickness.cpp	(revision 8287)
+++ 	(revision )
@@ -1,97 +1,0 @@
-/*
- * CreateNodesBalancedthickness.c:
- */
-
-#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 "../../../include/include.h"
-#include "../../MeshPartitionx/MeshPartitionx.h"
-#include "../ModelProcessorx.h"
-
-void	CreateNodesBalancedthickness(Nodes** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
-
-	/*Intermediary*/
-	int  i,j;
-	int  node_id;
-	int  vertex_id;
-	int  io_index;
-	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: */
-	if(iomodel->prognostic_DG) continuous_galerkin=false;
-	NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin);
-
-	/*Check in 3d*/
-	if(iomodel->prognostic_DG && iomodel->dim==3) _error_("DG 3d not implemented yet");
-
-	/*First fetch data: */
-	IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
-	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");
-	IoModelFetchData(&iomodel->vertices_type,NULL,NULL,iomodel_handle,"vertices_type");
-	IoModelFetchData(&iomodel->gridonwater,NULL,NULL,iomodel_handle,"gridonwater");
-
-	if(continuous_galerkin){
-
-		/*Build Nodes dataset (Continuous Galerkin)*/
-		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,BalancedthicknessAnalysisEnum));
-
-			}
-		}
-	}
-	else{
-
-		/*Build Nodes dataset -> 3 for each element (Discontinuous Galerkin)*/
-		for (i=0;i<iomodel->numberofelements;i++){
-			for (j=0;j<3;j++){
-
-				if(iomodel->my_nodes[3*i+j]){ 
-
-					//Get index of the vertex on which the current node is located
-					vertex_id=(int)*(iomodel->elements+3*i+j); //(Matlab indexing)
-					io_index=vertex_id-1;                      //(C indexing)
-					_assert_(vertex_id>0 && vertex_id<=iomodel->numberofvertices);
-
-					//Compute Node id
-					node_id=iomodel->nodecounter+3*i+j+1;
-
-					/*Add node to nodes dataset: */
-					nodes->AddObject(new Node(node_id,node_id-1,vertex_id,io_index,iomodel,BalancedthicknessAnalysisEnum));
-
-				}
-			}
-		}
-	}
-
-	/*Clean fetched data: */
-	xfree((void**)&iomodel->elements);
-	xfree((void**)&iomodel->gridonbed);
-	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->gridonicesheet);
-	xfree((void**)&iomodel->gridonwater);
-	xfree((void**)&iomodel->gridoniceshelf);
-	xfree((void**)&iomodel->vertices_type);
-
-	/*Assign output pointer: */
-	*pnodes=nodes;
-}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp	(revision 8288)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp	(revision 8288)
@@ -0,0 +1,97 @@
+/*
+ * CreateNodesBalancethickness.c:
+ */
+
+#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 "../../../include/include.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	CreateNodesBalancethickness(Nodes** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
+
+	/*Intermediary*/
+	int  i,j;
+	int  node_id;
+	int  vertex_id;
+	int  io_index;
+	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: */
+	if(iomodel->prognostic_DG) continuous_galerkin=false;
+	NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,iomodel_handle,continuous_galerkin);
+
+	/*Check in 3d*/
+	if(iomodel->prognostic_DG && iomodel->dim==3) _error_("DG 3d not implemented yet");
+
+	/*First fetch data: */
+	IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
+	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");
+	IoModelFetchData(&iomodel->vertices_type,NULL,NULL,iomodel_handle,"vertices_type");
+	IoModelFetchData(&iomodel->gridonwater,NULL,NULL,iomodel_handle,"gridonwater");
+
+	if(continuous_galerkin){
+
+		/*Build Nodes dataset (Continuous Galerkin)*/
+		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,BalancethicknessAnalysisEnum));
+
+			}
+		}
+	}
+	else{
+
+		/*Build Nodes dataset -> 3 for each element (Discontinuous Galerkin)*/
+		for (i=0;i<iomodel->numberofelements;i++){
+			for (j=0;j<3;j++){
+
+				if(iomodel->my_nodes[3*i+j]){ 
+
+					//Get index of the vertex on which the current node is located
+					vertex_id=(int)*(iomodel->elements+3*i+j); //(Matlab indexing)
+					io_index=vertex_id-1;                      //(C indexing)
+					_assert_(vertex_id>0 && vertex_id<=iomodel->numberofvertices);
+
+					//Compute Node id
+					node_id=iomodel->nodecounter+3*i+j+1;
+
+					/*Add node to nodes dataset: */
+					nodes->AddObject(new Node(node_id,node_id-1,vertex_id,io_index,iomodel,BalancethicknessAnalysisEnum));
+
+				}
+			}
+		}
+	}
+
+	/*Clean fetched data: */
+	xfree((void**)&iomodel->elements);
+	xfree((void**)&iomodel->gridonbed);
+	xfree((void**)&iomodel->gridonsurface);
+	xfree((void**)&iomodel->gridonicesheet);
+	xfree((void**)&iomodel->gridonwater);
+	xfree((void**)&iomodel->gridoniceshelf);
+	xfree((void**)&iomodel->vertices_type);
+
+	/*Assign output pointer: */
+	*pnodes=nodes;
+}
Index: sm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancedthickness.cpp	(revision 8287)
+++ 	(revision )
@@ -1,62 +1,0 @@
-/*
- * UpdateElementsBalancedthickness:
- */
-
-#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	UpdateElementsBalancedthickness(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->thickness,NULL,NULL,iomodel_handle,"thickness");
-	IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");
-	IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");
-	IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf");
-	IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");
-	IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
-	IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
-	IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
-	IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
-	IoModelFetchData(&iomodel->dhdt,NULL,NULL,iomodel_handle,"dhdt");
-	if (iomodel->dim==3){
-		IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed");
-		IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface");
-	}
-
-	/*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->thickness);
-	xfree((void**)&iomodel->surface);
-	xfree((void**)&iomodel->bed);
-	xfree((void**)&iomodel->elementoniceshelf);
-	xfree((void**)&iomodel->elementonbed);
-	xfree((void**)&iomodel->elementonsurface);
-	xfree((void**)&iomodel->elementonwater);
-	xfree((void**)&iomodel->vx);
-	xfree((void**)&iomodel->vy);
-	xfree((void**)&iomodel->melting_rate);
-	xfree((void**)&iomodel->accumulation_rate);
-}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp	(revision 8288)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp	(revision 8288)
@@ -0,0 +1,62 @@
+/*
+ * UpdateElementsBalancethickness:
+ */
+
+#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	UpdateElementsBalancethickness(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->thickness,NULL,NULL,iomodel_handle,"thickness");
+	IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");
+	IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");
+	IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf");
+	IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");
+	IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
+	IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
+	IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
+	IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
+	IoModelFetchData(&iomodel->dhdt,NULL,NULL,iomodel_handle,"dhdt");
+	if (iomodel->dim==3){
+		IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed");
+		IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface");
+	}
+
+	/*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->thickness);
+	xfree((void**)&iomodel->surface);
+	xfree((void**)&iomodel->bed);
+	xfree((void**)&iomodel->elementoniceshelf);
+	xfree((void**)&iomodel->elementonbed);
+	xfree((void**)&iomodel->elementonsurface);
+	xfree((void**)&iomodel->elementonwater);
+	xfree((void**)&iomodel->vx);
+	xfree((void**)&iomodel->vy);
+	xfree((void**)&iomodel->melting_rate);
+	xfree((void**)&iomodel->accumulation_rate);
+}
Index: sm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateConstraintsBalancedvelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateConstraintsBalancedvelocities.cpp	(revision 8287)
+++ 	(revision )
@@ -1,53 +1,0 @@
-/*
- * CreateConstraintsBalancevelocities.c:
- */
-
-#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 "../ModelProcessorx.h"
-
-void	CreateConstraintsBalancevelocities(Constraints** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
-
-	/*Intermediary*/
-	int i;
-	int count=0;
-	
-	/*Output*/
-	Constraints* constraints = NULL;
-	Spc*    spc  = NULL;
-
-	/*Recover pointer: */
-	constraints=*pconstraints;
-
-	/*Create constraints if they do not exist yet*/
-	if(!constraints) constraints = new Constraints(ConstraintsEnum);
-
-	/*Fetch data: */
-	IoModelFetchData(&iomodel->spcvelocity,NULL,NULL,iomodel_handle,"spcvelocity");
-
-	count=1; //matlab indexing
-	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
-	for (i=0;i<iomodel->numberofvertices;i++){
-		/*keep only this partition's nodes:*/
-		if((iomodel->my_vertices[i])){
-
-			if ((int)iomodel->spcvelocity[6*i+0] && (int)iomodel->spcvelocity[6*i+1]){ //spc if vx and vy are constrained
-
-				/*This grid needs to be spc'd: */
-				constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
-								pow( pow(*(iomodel->spcvelocity+6*i+4),2.0) + pow(*(iomodel->spcvelocity+6*i+5),2.0) ,0.5),BalancevelocitiesAnalysisEnum));
-				count++;
-			}
-		} //if((my_vertices[i]))
-	}
-
-	/*Free data: */
-	xfree((void**)&iomodel->spcvelocity);
-	
-	/*Assign output pointer: */
-	*pconstraints=constraints;
-}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateConstraintsBalancevelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateConstraintsBalancevelocities.cpp	(revision 8288)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateConstraintsBalancevelocities.cpp	(revision 8288)
@@ -0,0 +1,53 @@
+/*
+ * CreateConstraintsBalancevelocities.c:
+ */
+
+#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 "../ModelProcessorx.h"
+
+void	CreateConstraintsBalancevelocities(Constraints** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
+
+	/*Intermediary*/
+	int i;
+	int count=0;
+	
+	/*Output*/
+	Constraints* constraints = NULL;
+	Spc*    spc  = NULL;
+
+	/*Recover pointer: */
+	constraints=*pconstraints;
+
+	/*Create constraints if they do not exist yet*/
+	if(!constraints) constraints = new Constraints(ConstraintsEnum);
+
+	/*Fetch data: */
+	IoModelFetchData(&iomodel->spcvelocity,NULL,NULL,iomodel_handle,"spcvelocity");
+
+	count=1; //matlab indexing
+	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
+	for (i=0;i<iomodel->numberofvertices;i++){
+		/*keep only this partition's nodes:*/
+		if((iomodel->my_vertices[i])){
+
+			if ((int)iomodel->spcvelocity[6*i+0] && (int)iomodel->spcvelocity[6*i+1]){ //spc if vx and vy are constrained
+
+				/*This grid needs to be spc'd: */
+				constraints->AddObject(new Spc(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
+								pow( pow(*(iomodel->spcvelocity+6*i+4),2.0) + pow(*(iomodel->spcvelocity+6*i+5),2.0) ,0.5),BalancevelocitiesAnalysisEnum));
+				count++;
+			}
+		} //if((my_vertices[i]))
+	}
+
+	/*Free data: */
+	xfree((void**)&iomodel->spcvelocity);
+	
+	/*Assign output pointer: */
+	*pconstraints=constraints;
+}
Index: sm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateLoadsBalancedvelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateLoadsBalancedvelocities.cpp	(revision 8287)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/*! \file CreateLoadsBalancevelocities.c:
- */
-
-#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 "../../../include/include.h"
-#include "../ModelProcessorx.h"
-
-void	CreateLoadsBalancevelocities(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/Balancevelocities/CreateLoadsBalancevelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateLoadsBalancevelocities.cpp	(revision 8288)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateLoadsBalancevelocities.cpp	(revision 8288)
@@ -0,0 +1,26 @@
+/*! \file CreateLoadsBalancevelocities.c:
+ */
+
+#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 "../../../include/include.h"
+#include "../ModelProcessorx.h"
+
+void	CreateLoadsBalancevelocities(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: sm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateNodesBalancedvelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateNodesBalancedvelocities.cpp	(revision 8287)
+++ 	(revision )
@@ -1,60 +1,0 @@
-/*
- * CreateNodesBalancevelocities.c:
- */
-
-#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	CreateNodesBalancevelocities(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,iomodel_handle,continuous_galerkin);
-
-	/*First fetch data: */
-	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");
-	IoModelFetchData(&iomodel->vertices_type,NULL,NULL,iomodel_handle,"vertices_type");
-	IoModelFetchData(&iomodel->gridonwater,NULL,NULL,iomodel_handle,"gridonwater");
-	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,BalancevelocitiesAnalysisEnum));
-
-		}
-	}
-
-	/*Clean fetched data: */
-	xfree((void**)&iomodel->gridonbed);
-	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->gridonicesheet);
-	xfree((void**)&iomodel->gridoniceshelf);
-	xfree((void**)&iomodel->gridonwater);
-	xfree((void**)&iomodel->vertices_type);	
-
-	/*Assign output pointer: */
-	*pnodes=nodes;
-}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateNodesBalancevelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateNodesBalancevelocities.cpp	(revision 8288)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/CreateNodesBalancevelocities.cpp	(revision 8288)
@@ -0,0 +1,60 @@
+/*
+ * CreateNodesBalancevelocities.c:
+ */
+
+#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	CreateNodesBalancevelocities(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,iomodel_handle,continuous_galerkin);
+
+	/*First fetch data: */
+	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");
+	IoModelFetchData(&iomodel->vertices_type,NULL,NULL,iomodel_handle,"vertices_type");
+	IoModelFetchData(&iomodel->gridonwater,NULL,NULL,iomodel_handle,"gridonwater");
+	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,BalancevelocitiesAnalysisEnum));
+
+		}
+	}
+
+	/*Clean fetched data: */
+	xfree((void**)&iomodel->gridonbed);
+	xfree((void**)&iomodel->gridonsurface);
+	xfree((void**)&iomodel->gridonicesheet);
+	xfree((void**)&iomodel->gridoniceshelf);
+	xfree((void**)&iomodel->gridonwater);
+	xfree((void**)&iomodel->vertices_type);	
+
+	/*Assign output pointer: */
+	*pnodes=nodes;
+}
Index: sm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/UpdateElementsBalancedvelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/UpdateElementsBalancedvelocities.cpp	(revision 8287)
+++ 	(revision )
@@ -1,63 +1,0 @@
-/*
- * UpdateElementsBalancevelocities:
- */
-
-#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	UpdateElementsBalancevelocities(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->thickness,NULL,NULL,iomodel_handle,"thickness");
-	IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");
-	IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");
-	IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf");
-	IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");
-	IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
-	IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
-	IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
-	IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
-
-	if (iomodel->dim==3){
-		IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed");
-		IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface");
-	}
-
-	/*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->thickness);
-	xfree((void**)&iomodel->surface);
-	xfree((void**)&iomodel->bed);
-	xfree((void**)&iomodel->elementoniceshelf);
-	xfree((void**)&iomodel->elementonwater);
-	xfree((void**)&iomodel->elementonbed);
-	xfree((void**)&iomodel->elementonsurface);
-	xfree((void**)&iomodel->vx);
-	xfree((void**)&iomodel->vy);
-	xfree((void**)&iomodel->vz);
-	xfree((void**)&iomodel->melting_rate);
-	xfree((void**)&iomodel->accumulation_rate);
-}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/UpdateElementsBalancevelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/UpdateElementsBalancevelocities.cpp	(revision 8288)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/UpdateElementsBalancevelocities.cpp	(revision 8288)
@@ -0,0 +1,63 @@
+/*
+ * UpdateElementsBalancevelocities:
+ */
+
+#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	UpdateElementsBalancevelocities(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->thickness,NULL,NULL,iomodel_handle,"thickness");
+	IoModelFetchData(&iomodel->surface,NULL,NULL,iomodel_handle,"surface");
+	IoModelFetchData(&iomodel->bed,NULL,NULL,iomodel_handle,"bed");
+	IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf");
+	IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");
+	IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
+	IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
+	IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
+	IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
+
+	if (iomodel->dim==3){
+		IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed");
+		IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface");
+	}
+
+	/*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->thickness);
+	xfree((void**)&iomodel->surface);
+	xfree((void**)&iomodel->bed);
+	xfree((void**)&iomodel->elementoniceshelf);
+	xfree((void**)&iomodel->elementonwater);
+	xfree((void**)&iomodel->elementonbed);
+	xfree((void**)&iomodel->elementonsurface);
+	xfree((void**)&iomodel->vx);
+	xfree((void**)&iomodel->vy);
+	xfree((void**)&iomodel->vz);
+	xfree((void**)&iomodel->melting_rate);
+	xfree((void**)&iomodel->accumulation_rate);
+}
Index: /issm/trunk/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/trunk/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp	(revision 8287)
+++ /issm/trunk/src/c/solutions/AdjointCorePointerFromSolutionEnum.cpp	(revision 8288)
@@ -32,5 +32,5 @@
 			break;
 		case BalancethicknessSolutionEnum:
-			adjointcore=&adjointbalancedthickness_core;
+			adjointcore=&adjointbalancethickness_core;
 			break;
 		default:
Index: /issm/trunk/src/c/solutions/CorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/trunk/src/c/solutions/CorePointerFromSolutionEnum.cpp	(revision 8287)
+++ /issm/trunk/src/c/solutions/CorePointerFromSolutionEnum.cpp	(revision 8288)
@@ -38,8 +38,8 @@
 			break;
 		case BalancethicknessSolutionEnum:
-			solutioncore=&balancedthickness_core;
+			solutioncore=&balancethickness_core;
 			break;
 		case BalancevelocitiesSolutionEnum:
-			solutioncore=&balancedvelocities_core;
+			solutioncore=&balancevelocities_core;
 			break;
 		case SurfaceSlopeSolutionEnum:
Index: sm/trunk/src/c/solutions/adjointbalancedthickness_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/adjointbalancedthickness_core.cpp	(revision 8287)
+++ 	(revision )
@@ -1,42 +1,0 @@
-/*!\file:  adjointbalancedthickness_core.cpp
- * \brief compute inverse method adjoint state
- */ 
-
-#include "../toolkits/toolkits.h"
-#include "../objects/objects.h"
-#include "../shared/shared.h"
-#include "../EnumDefinitions/EnumDefinitions.h"
-#include "./solutions.h"
-#include "../modules/modules.h"
-#include "../include/include.h"
-#include "../solvers/solvers.h"
-
-void adjointbalancedthickness_core(FemModel* femmodel){
-	
-	/*parameters: */
-	bool control_analysis;
-	int  solution_type;
-
-	/*retrieve parameters:*/
-	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
-	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
-
-	/*compute thickness */
-	_printf_(VerboseSolution(),"%s\n","   computing thickness");
-	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
-	solver_linear(femmodel);
-
-	/*Call SurfaceAreax, because some it might be needed by PVector*/
-	SurfaceAreax(NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
-
-	/*compute adjoint*/
-	_printf_(VerboseSolution(),"%s\n","   computing adjoint");
-	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum,AdjointBalancethicknessAnalysisEnum);
-	solver_adjoint_linear(femmodel);
-	
-	/*Save results*/
-	if(solution_type==AdjointSolutionEnum && !control_analysis){
-		_printf_(VerboseSolution(),"   saving results\n");
-		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointEnum);
-	}
-}
Index: /issm/trunk/src/c/solutions/adjointbalancethickness_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/adjointbalancethickness_core.cpp	(revision 8288)
+++ /issm/trunk/src/c/solutions/adjointbalancethickness_core.cpp	(revision 8288)
@@ -0,0 +1,42 @@
+/*!\file:  adjointbalancethickness_core.cpp
+ * \brief compute inverse method adjoint state
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../objects/objects.h"
+#include "../shared/shared.h"
+#include "../EnumDefinitions/EnumDefinitions.h"
+#include "./solutions.h"
+#include "../modules/modules.h"
+#include "../include/include.h"
+#include "../solvers/solvers.h"
+
+void adjointbalancethickness_core(FemModel* femmodel){
+	
+	/*parameters: */
+	bool control_analysis;
+	int  solution_type;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*compute thickness */
+	_printf_(VerboseSolution(),"%s\n","   computing thickness");
+	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
+	solver_linear(femmodel);
+
+	/*Call SurfaceAreax, because some it might be needed by PVector*/
+	SurfaceAreax(NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+
+	/*compute adjoint*/
+	_printf_(VerboseSolution(),"%s\n","   computing adjoint");
+	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum,AdjointBalancethicknessAnalysisEnum);
+	solver_adjoint_linear(femmodel);
+	
+	/*Save results*/
+	if(solution_type==AdjointSolutionEnum && !control_analysis){
+		_printf_(VerboseSolution(),"   saving results\n");
+		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointEnum);
+	}
+}
Index: /issm/trunk/src/c/solutions/balancethickness_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/balancethickness_core.cpp	(revision 8287)
+++ /issm/trunk/src/c/solutions/balancethickness_core.cpp	(revision 8288)
@@ -1,4 +1,4 @@
-/*!\file: balancedthickness_core.cpp
- * \brief: core of the balancedthickness solution 
+/*!\file: balancethickness_core.cpp
+ * \brief: core of the balancethickness solution 
  */ 
 
@@ -12,5 +12,5 @@
 #include "../solvers/solvers.h"
 
-void balancedthickness_core(FemModel* femmodel){
+void balancethickness_core(FemModel* femmodel){
 
 	/*parameters: */
Index: /issm/trunk/src/c/solutions/balancevelocities_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/balancevelocities_core.cpp	(revision 8287)
+++ /issm/trunk/src/c/solutions/balancevelocities_core.cpp	(revision 8288)
@@ -1,4 +1,4 @@
-/*!\file: balancedvelocities_core.cpp
- * \brief: core of the balancedvelocities solution 
+/*!\file: balancevelocities_core.cpp
+ * \brief: core of the balancevelocities solution 
  */ 
 
@@ -11,5 +11,5 @@
 #include "../solvers/solvers.h"
 
-void balancedvelocities_core(FemModel* femmodel){
+void balancevelocities_core(FemModel* femmodel){
 
 	/*flags: */
Index: /issm/trunk/src/c/solutions/solutions.h
===================================================================
--- /issm/trunk/src/c/solutions/solutions.h	(revision 8287)
+++ /issm/trunk/src/c/solutions/solutions.h	(revision 8288)
@@ -14,5 +14,5 @@
 /*cores: */
 void adjointdiagnostic_core(FemModel* femmodel);
-void adjointbalancedthickness_core(FemModel* femmodel);
+void adjointbalancethickness_core(FemModel* femmodel);
 void gradient_core(FemModel* femmodel,int step=0, double search_scalar=0);
 void diagnostic_core(FemModel* femmodel);
@@ -26,6 +26,6 @@
 void controltao_core(FemModel* femmodel);
 void prognostic_core(FemModel* femmodel);
-void balancedthickness_core(FemModel* femmodel);
-void balancedvelocities_core(FemModel* femmodel);
+void balancethickness_core(FemModel* femmodel);
+void balancevelocities_core(FemModel* femmodel);
 void slopecompute_core(FemModel* femmodel);
 void steadystate_core(FemModel* femmodel);
Index: sm/trunk/src/m/solutions/adjointbalancedthickness_core.m
===================================================================
--- /issm/trunk/src/m/solutions/adjointbalancedthickness_core.m	(revision 8287)
+++ 	(revision )
@@ -1,29 +1,0 @@
-function femmodel=adjointbalancethickness_core(femmodel),
-%ADJOINT_CORE - compute inverse method adjoint state
-%
-%   Usage:
-%      femmodel=adjointbalancethickness_core(femmodel)
-
-	%recover parameters common to all solutions
-	control_analysis=femmodel.parameters.ControlAnalysis;
-	solution_type=femmodel.parameters.SolutionType;
-
-	%set analysis type to compute velocity:
-	issmprintf(VerboseSolution,'   computing thickness');
-	femmodel=SetCurrentConfiguration(femmodel,BalancethicknessAnalysisEnum);
-	femmodel=solver_linear(femmodel);
-
-	%Call SurfaceAreax, because some it might be needed by PVector
-	femmodel.elements=SurfaceArea(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
-
-	%compute adjoint
-	issmprintf(VerboseSolution,'   computing adjoint');
-	femmodel=SetCurrentConfiguration(femmodel,BalancethicknessAnalysisEnum,AdjointBalancethicknessAnalysisEnum);
-	femmodel=solver_adjoint_linear(femmodel);
-
-	%Save results
-	femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,AdjointEnum);
-	if(solution_type==AdjointSolutionEnum & ~control_analysis)
-		issmprintf(VerboseSolution,'   saving results');
-		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,AdjointEnum);
-	end
Index: /issm/trunk/src/m/solutions/adjointbalancethickness_core.m
===================================================================
--- /issm/trunk/src/m/solutions/adjointbalancethickness_core.m	(revision 8288)
+++ /issm/trunk/src/m/solutions/adjointbalancethickness_core.m	(revision 8288)
@@ -0,0 +1,29 @@
+function femmodel=adjointbalancethickness_core(femmodel),
+%ADJOINT_CORE - compute inverse method adjoint state
+%
+%   Usage:
+%      femmodel=adjointbalancethickness_core(femmodel)
+
+	%recover parameters common to all solutions
+	control_analysis=femmodel.parameters.ControlAnalysis;
+	solution_type=femmodel.parameters.SolutionType;
+
+	%set analysis type to compute velocity:
+	issmprintf(VerboseSolution,'   computing thickness');
+	femmodel=SetCurrentConfiguration(femmodel,BalancethicknessAnalysisEnum);
+	femmodel=solver_linear(femmodel);
+
+	%Call SurfaceAreax, because some it might be needed by PVector
+	femmodel.elements=SurfaceArea(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
+
+	%compute adjoint
+	issmprintf(VerboseSolution,'   computing adjoint');
+	femmodel=SetCurrentConfiguration(femmodel,BalancethicknessAnalysisEnum,AdjointBalancethicknessAnalysisEnum);
+	femmodel=solver_adjoint_linear(femmodel);
+
+	%Save results
+	femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,AdjointEnum);
+	if(solution_type==AdjointSolutionEnum & ~control_analysis)
+		issmprintf(VerboseSolution,'   saving results');
+		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,AdjointEnum);
+	end
Index: sm/trunk/src/m/solutions/balancedthickness_core.m
===================================================================
--- /issm/trunk/src/m/solutions/balancedthickness_core.m	(revision 8287)
+++ 	(revision )
@@ -1,23 +1,0 @@
-function femmodel=balancethickness_core(femmodel)
-%BALANCEDTHICKNESS_CORE - linear solution sequence
-%
-%   Usage:
-%      femmodel=balancethickness_core(femmode)
-
-	%recover parameters common to all solutions
-	dim=femmodel.parameters.Dim;
-	control_analysis=femmodel.parameters.ControlAnalysis;
-	solution_type=femmodel.parameters.SolutionType;
-
-	%Activate formulation
-	femmodel=SetCurrentConfiguration(femmodel,BalancethicknessAnalysisEnum);
-
-	issmprintf(VerboseSolution,'   call computational core');
-	femmodel=solver_linear(femmodel);
-
-	if (solution_type==BalancethicknessSolutionEnum & ~control_analysis),
-		issmprintf(VerboseSolution,'   saving results');
-		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ThicknessEnum);
-	end
-	
-end %end function
Index: sm/trunk/src/m/solutions/balancedvelocities_core.m
===================================================================
--- /issm/trunk/src/m/solutions/balancedvelocities_core.m	(revision 8287)
+++ 	(revision )
@@ -1,23 +1,0 @@
-function femmodel=balancevelocities_core(femmdoel)
-%BALANCEDVELOCITIES_CORE - linear solution sequence
-%
-%   Usage:
-%      femmodel=balancevelocities_core(femmodel)
-
-	%recover parameters common to all solutions
-	dim=femmodel.parameters.Dim;
-	control_analysis=femmodel.parameters.ControlAnalysis;
-	solution_type=femmodel.parameters.SolutionType;
-
-	%Activate formulation
-	femmodel=SetCurrentConfiguration(femmodel,BalancevelocitiesAnalysisEnum);
-
-	issmprintf(VerboseSolution,'   call computational core');
-	femmodel=solver_linear(femmodel);
-	
-	if (solution_type==BalancevelocitiesSolutionEnum & ~control_analysis),
-		issmprintf(VerboseSolution,'   saving results');
-		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VelEnum);
-	end
-
-end %end function
Index: /issm/trunk/src/m/solutions/balancethickness_core.m
===================================================================
--- /issm/trunk/src/m/solutions/balancethickness_core.m	(revision 8288)
+++ /issm/trunk/src/m/solutions/balancethickness_core.m	(revision 8288)
@@ -0,0 +1,23 @@
+function femmodel=balancethickness_core(femmodel)
+%BALANCEDTHICKNESS_CORE - linear solution sequence
+%
+%   Usage:
+%      femmodel=balancethickness_core(femmode)
+
+	%recover parameters common to all solutions
+	dim=femmodel.parameters.Dim;
+	control_analysis=femmodel.parameters.ControlAnalysis;
+	solution_type=femmodel.parameters.SolutionType;
+
+	%Activate formulation
+	femmodel=SetCurrentConfiguration(femmodel,BalancethicknessAnalysisEnum);
+
+	issmprintf(VerboseSolution,'   call computational core');
+	femmodel=solver_linear(femmodel);
+
+	if (solution_type==BalancethicknessSolutionEnum & ~control_analysis),
+		issmprintf(VerboseSolution,'   saving results');
+		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ThicknessEnum);
+	end
+	
+end %end function
Index: /issm/trunk/src/m/solutions/balancevelocities_core.m
===================================================================
--- /issm/trunk/src/m/solutions/balancevelocities_core.m	(revision 8288)
+++ /issm/trunk/src/m/solutions/balancevelocities_core.m	(revision 8288)
@@ -0,0 +1,23 @@
+function femmodel=balancevelocities_core(femmdoel)
+%BALANCEDVELOCITIES_CORE - linear solution sequence
+%
+%   Usage:
+%      femmodel=balancevelocities_core(femmodel)
+
+	%recover parameters common to all solutions
+	dim=femmodel.parameters.Dim;
+	control_analysis=femmodel.parameters.ControlAnalysis;
+	solution_type=femmodel.parameters.SolutionType;
+
+	%Activate formulation
+	femmodel=SetCurrentConfiguration(femmodel,BalancevelocitiesAnalysisEnum);
+
+	issmprintf(VerboseSolution,'   call computational core');
+	femmodel=solver_linear(femmodel);
+	
+	if (solution_type==BalancevelocitiesSolutionEnum & ~control_analysis),
+		issmprintf(VerboseSolution,'   saving results');
+		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VelEnum);
+	end
+
+end %end function
