Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp	(revision 3454)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp	(revision 3455)
@@ -10,69 +10,35 @@
 #include "../IoModel.h"
 
-
 void	CreateConstraintsDiagnosticHutter(DataSet** pconstraints, IoModel* iomodel,ConstDataHandle iomodel_handle){
 
-	int i,j;
-	int count;
+	int i;
+	int count=0;
 
 	DataSet* constraints = NULL;
+	Spc*    spc  = NULL;
 
-	Spc*    spc  = NULL;
-	Rgb*    rgb  = NULL;
-
-	/*spc intermediary data: */
-	int spc_sid;
-	int spc_node;
-	int spc_dof;
-	double spc_value;
-
-	/*rgb constructor data: */
-	int rgb_id;
-	int rgb_dof;
-	int rgb_nodeid1;
-	int rgb_nodeid2;
+	/*Now, is the flag ishutter on? otherwise, do nothing: */
+	if (!iomodel->ishutter)goto cleanup_and_return;
 
 	/*Create constraints: */
 	constraints = new DataSet(ConstraintsEnum());
 
-	/*Now, is the flag ishutter on? otherwise, do nothing: */
-	if (!iomodel->ishutter)goto cleanup_and_return;
-
-	count=0;
-	
 	/*Fetch data: */
 	IoModelFetchData(&iomodel->gridonhutter,NULL,NULL,iomodel_handle,"gridonhutter");
 
+	count=1; //matlab indexing
 	/*vx and vy are spc'd if we are not on gridonhutter: */
 	for (i=0;i<iomodel->numberofvertices;i++){
-	#ifdef _PARALLEL_
-	/*keep only this partition's nodes:*/
-	if((iomodel->my_vertices[i])){
-	#endif
+		/*keep only this partition's nodes:*/
+		if((iomodel->my_vertices[i])){
+			if (!(int)iomodel->gridonhutter[i]){
 
-		if (!(int)iomodel->gridonhutter[i]){
-	
-			spc_sid=count;
-			spc_node=i+1;
-			spc_dof=1; //we enforce first x translation degree of freedom
-			spc_value=0;
+				constraints->AddObject(new Spc(count,i+1,1,0));
+				count++;
 
-			spc = new Spc(spc_sid,spc_node,spc_dof,spc_value);
-			constraints->AddObject(spc);
-			count++;
-
-			spc_sid=count;
-			spc_node=i+1;
-			spc_dof=2; //we enforce first y translation degree of freedom
-			spc_value=0;
-			
-			spc = new Spc(spc_sid,spc_node,spc_dof,spc_value);
-			constraints->AddObject(spc);
-			count++;
-		}
-
-	#ifdef _PARALLEL_
-	} //if((my_vertices[i]))
-	#endif
+				constraints->AddObject(new Spc(count,i+1,2,0));
+				count++;
+			}
+		} //if((my_vertices[i]))
 	}
 
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp	(revision 3454)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp	(revision 3455)
@@ -18,6 +18,4 @@
 	Spc*    spc  = NULL;
 
-	double* spctemperature=NULL;
-	
 	/*Create constraints: */
 	constraints = new DataSet(ConstraintsEnum());
@@ -27,5 +25,5 @@
 
 	/*Fetch data: */
-	IoModelFetchData(&spctemperature,NULL,NULL,iomodel_handle,"spctemperature");
+	IoModelFetchData(&iomodel->spctemperature,NULL,NULL,iomodel_handle,"spctemperature");
 
 	count=1;
@@ -36,7 +34,7 @@
 		if((iomodel->my_vertices[i]==1)){
 
-			if ((int)spctemperature[2*i]){
+			if ((int)iomodel->spctemperature[2*i]){
 
-				constraints->AddObject(new Spc(count,i+1,1,spctemperature[2*i+1]));
+				constraints->AddObject(new Spc(count,i+1,1,iomodel->spctemperature[2*i+1]));
 				count++;
 
@@ -46,4 +44,7 @@
 	}
 
+	/*Free data: */
+	xfree((void**)&iomodel->spctemperature);
+
 	/*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 
 	 * datasets, it will not be redone: */
@@ -51,6 +52,4 @@
 
 	cleanup_and_return:
-	/*Free data: */
-	xfree((void**)&spctemperature);
 	
 	/*Assign output pointer: */
