Index: /issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateConstraintsBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateConstraintsBalancedthickness.cpp	(revision 3435)
+++ /issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateConstraintsBalancedthickness.cpp	(revision 3436)
@@ -15,25 +15,17 @@
 
 	int i;
-	int count;
+	int count=0;
 	
 	DataSet* constraints = NULL;
 	Spc*    spc  = NULL;
+	int     node1,node2;
 
-	/*spc intermediary data: */
-	int spc_sid;
-	int spc_node;
-	int spc_dof;
-	double spc_value;
-	
-	double* spcthickness=NULL;
-	
 	/*Create constraints: */
 	constraints = new DataSet(ConstraintsEnum());
 
 	/*Fetch data: */
-	IoModelFetchData(&spcthickness,NULL,NULL,iomodel_handle,"spcthickness");
+	IoModelFetchData(&iomodel->spcthickness,NULL,NULL,iomodel_handle,"spcthickness");
 
-	count=0;
-
+	count=1;
 	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
 	for (i=0;i<iomodel->numberofnodes;i++){
Index: /issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateParametersBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateParametersBalancedthickness.cpp	(revision 3435)
+++ /issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateParametersBalancedthickness.cpp	(revision 3436)
@@ -40,13 +40,13 @@
 	IoModelFetchData(&vz,NULL,NULL,iomodel_handle,"vz");
 
-	u_g=(double*)xcalloc(iomodel->numberofnodes*3,sizeof(double));
+	u_g=(double*)xcalloc(iomodel->numberofvertices*3,sizeof(double));
 
-	if(vx) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+0]=vx[i]/iomodel->yts;
-	if(vy) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+1]=vy[i]/iomodel->yts;
-	if(vz) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+2]=vz[i]/iomodel->yts;
+	if(vx) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+0]=vx[i]/iomodel->yts;
+	if(vy) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+1]=vy[i]/iomodel->yts;
+	if(vz) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+2]=vz[i]/iomodel->yts;
 
 	count++;
 	param= new Param(count,"u_g",DOUBLEVEC);
-	param->SetDoubleVec(u_g,3*iomodel->numberofnodes,3);
+	param->SetDoubleVec(u_g,3*iomodel->numberofvertices,3);
 	parameters->AddObject(param);
 
@@ -59,9 +59,9 @@
 	/*Get melting: */
 	IoModelFetchData(&melting,NULL,NULL,iomodel_handle,"melting");
-	if(melting) for(i=0;i<iomodel->numberofnodes;i++)melting[i]=melting[i]/iomodel->yts;
+	if(melting) for(i=0;i<iomodel->numberofvertices;i++)melting[i]=melting[i]/iomodel->yts;
 	
 	count++;
 	param= new Param(count,"m_g",DOUBLEVEC);
-	if(melting) param->SetDoubleVec(melting,iomodel->numberofnodes,1);
+	if(melting) param->SetDoubleVec(melting,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(melting,0,1);
 	parameters->AddObject(param);
@@ -72,9 +72,9 @@
 	/*Get accumulation: */
 	IoModelFetchData(&accumulation,NULL,NULL,iomodel_handle,"accumulation");
-	if(accumulation) for(i=0;i<iomodel->numberofnodes;i++)accumulation[i]=accumulation[i]/iomodel->yts;
+	if(accumulation) for(i=0;i<iomodel->numberofvertices;i++)accumulation[i]=accumulation[i]/iomodel->yts;
 	
 	count++;
 	param= new Param(count,"a_g",DOUBLEVEC);
-	if(accumulation) param->SetDoubleVec(accumulation,iomodel->numberofnodes,1);
+	if(accumulation) param->SetDoubleVec(accumulation,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(accumulation,0,0);
 	parameters->AddObject(param);
Index: /issm/trunk/src/c/ModelProcessorx/Balancedvelocities/CreateParametersBalancedvelocities.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Balancedvelocities/CreateParametersBalancedvelocities.cpp	(revision 3435)
+++ /issm/trunk/src/c/ModelProcessorx/Balancedvelocities/CreateParametersBalancedvelocities.cpp	(revision 3436)
@@ -40,13 +40,13 @@
 	IoModelFetchData(&vz,NULL,NULL,iomodel_handle,"vz");
 
-	u_g=(double*)xcalloc(iomodel->numberofnodes*3,sizeof(double));
+	u_g=(double*)xcalloc(iomodel->numberofvertices*3,sizeof(double));
 
-	if(vx) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+0]=vx[i]/iomodel->yts;
-	if(vy) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+1]=vy[i]/iomodel->yts;
-	if(vz) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+2]=vz[i]/iomodel->yts;
+	if(vx) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+0]=vx[i]/iomodel->yts;
+	if(vy) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+1]=vy[i]/iomodel->yts;
+	if(vz) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+2]=vz[i]/iomodel->yts;
 
 	count++;
 	param= new Param(count,"u_g",DOUBLEVEC);
-	param->SetDoubleVec(u_g,3*iomodel->numberofnodes,3);
+	param->SetDoubleVec(u_g,3*iomodel->numberofvertices,3);
 	parameters->AddObject(param);
 
@@ -62,5 +62,5 @@
 	count++;
 	param= new Param(count,"h_g",DOUBLEVEC);
-	if(thickness) param->SetDoubleVec(thickness,iomodel->numberofnodes,1);
+	if(thickness) param->SetDoubleVec(thickness,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(thickness,0,0);
 	parameters->AddObject(param);
@@ -71,9 +71,9 @@
 	/*Get melting: */
 	IoModelFetchData(&melting,NULL,NULL,iomodel_handle,"melting");
-	if(melting) for(i=0;i<iomodel->numberofnodes;i++)melting[i]=melting[i]/iomodel->yts;
+	if(melting) for(i=0;i<iomodel->numberofvertices;i++)melting[i]=melting[i]/iomodel->yts;
 	
 	count++;
 	param= new Param(count,"m_g",DOUBLEVEC);
-	if(melting) param->SetDoubleVec(melting,iomodel->numberofnodes,1);
+	if(melting) param->SetDoubleVec(melting,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(melting,0,1);
 	parameters->AddObject(param);
@@ -84,9 +84,9 @@
 	/*Get accumulation: */
 	IoModelFetchData(&accumulation,NULL,NULL,iomodel_handle,"accumulation");
-	if(accumulation) for(i=0;i<iomodel->numberofnodes;i++)accumulation[i]=accumulation[i]/iomodel->yts;
+	if(accumulation) for(i=0;i<iomodel->numberofvertices;i++)accumulation[i]=accumulation[i]/iomodel->yts;
 	
 	count++;
 	param= new Param(count,"a_g",DOUBLEVEC);
-	if(accumulation) param->SetDoubleVec(accumulation,iomodel->numberofnodes,1);
+	if(accumulation) param->SetDoubleVec(accumulation,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(accumulation,0,0);
 	parameters->AddObject(param);
Index: /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 3435)
+++ /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 3436)
@@ -181,5 +181,5 @@
 		count++;
 		param= new Param(count,"weights",DOUBLEVEC);
-		param->SetDoubleVec(iomodel->weights,iomodel->numberofnodes);
+		param->SetDoubleVec(iomodel->weights,iomodel->numberofvertices);
 		parameters->AddObject(param);
 
@@ -194,19 +194,19 @@
 		IoModelFetchData(&control_parameter,NULL,NULL,iomodel_handle,iomodel->control_type);
 
-		u_g_obs=(double*)xcalloc(iomodel->numberofnodes*2,sizeof(double));
-		if(vx_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+0]=vx_obs[i]/iomodel->yts;
-		if(vy_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+1]=vy_obs[i]/iomodel->yts;
+		u_g_obs=(double*)xcalloc(iomodel->numberofvertices*2,sizeof(double));
+		if(vx_obs)for(i=0;i<iomodel->numberofvertices;i++)u_g_obs[2*i+0]=vx_obs[i]/iomodel->yts;
+		if(vy_obs)for(i=0;i<iomodel->numberofvertices;i++)u_g_obs[2*i+1]=vy_obs[i]/iomodel->yts;
 
 		count++;
 		param= new Param(count,"u_g_obs",DOUBLEVEC);
-		param->SetDoubleVec(u_g_obs,2*iomodel->numberofnodes,2);
+		param->SetDoubleVec(u_g_obs,2*iomodel->numberofvertices,2);
 		parameters->AddObject(param);
 		
-		param_g=(double*)xcalloc(iomodel->numberofnodes,sizeof(double));
-		for(i=0;i<iomodel->numberofnodes;i++)param_g[i]=control_parameter[i];
+		param_g=(double*)xcalloc(iomodel->numberofvertices,sizeof(double));
+		for(i=0;i<iomodel->numberofvertices;i++)param_g[i]=control_parameter[i];
 
 		count++;
 		param= new Param(count,"param_g",DOUBLEVEC);
-		param->SetDoubleVec(param_g,iomodel->numberofnodes,1);
+		param->SetDoubleVec(param_g,iomodel->numberofvertices,1);
 		parameters->AddObject(param);
 
Index: /issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp	(revision 3435)
+++ /issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp	(revision 3436)
@@ -33,13 +33,13 @@
 		IoModelFetchData(&melting,NULL,NULL,iomodel_handle,"melting");
 		if(melting) {
-			for(i=0;i<iomodel->numberofnodes;i++)melting[i]=melting[i]/iomodel->yts;   //m/s instead of m/yr
+			for(i=0;i<iomodel->numberofvertices;i++)melting[i]=melting[i]/iomodel->yts;   //m/s instead of m/yr
 		}
 		else{
-			for(i=0;i<iomodel->numberofnodes;i++)melting[i]=0;
+			for(i=0;i<iomodel->numberofvertices;i++)melting[i]=0;
 		}
 
 		count++;
 		param= new Param(count,"m_g",DOUBLEVEC);
-		if(melting) param->SetDoubleVec(melting,iomodel->numberofnodes);
+		if(melting) param->SetDoubleVec(melting,iomodel->numberofvertices);
 		else param->SetDoubleVec(melting,0);
 		parameters->AddObject(param);
Index: /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateParametersPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateParametersPrognostic.cpp	(revision 3435)
+++ /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateParametersPrognostic.cpp	(revision 3436)
@@ -41,13 +41,13 @@
 	IoModelFetchData(&vz,NULL,NULL,iomodel_handle,"vz");
 
-	u_g=(double*)xcalloc(iomodel->numberofnodes*3,sizeof(double));
+	u_g=(double*)xcalloc(iomodel->numberofvertices*3,sizeof(double));
 
-	if(vx) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+0]=vx[i]/iomodel->yts;
-	if(vy) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+1]=vy[i]/iomodel->yts;
-	if(vz) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+2]=vz[i]/iomodel->yts;
+	if(vx) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+0]=vx[i]/iomodel->yts;
+	if(vy) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+1]=vy[i]/iomodel->yts;
+	if(vz) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+2]=vz[i]/iomodel->yts;
 
 	count++;
 	param= new Param(count,"u_g",DOUBLEVEC);
-	param->SetDoubleVec(u_g,3*iomodel->numberofnodes,3);
+	param->SetDoubleVec(u_g,3*iomodel->numberofvertices,3);
 	parameters->AddObject(param);
 
@@ -65,5 +65,5 @@
 		count++;
 		param= new Param(count,"p_g",DOUBLEVEC);
-		if(pressure) param->SetDoubleVec(pressure,iomodel->numberofnodes,1);
+		if(pressure) param->SetDoubleVec(pressure,iomodel->numberofvertices,1);
 		else param->SetDoubleVec(pressure,0,0);
 		parameters->AddObject(param);
@@ -80,5 +80,5 @@
 		count++;
 		param= new Param(count,"t_g",DOUBLEVEC);
-		if(temperature) param->SetDoubleVec(temperature,iomodel->numberofnodes,1);
+		if(temperature) param->SetDoubleVec(temperature,iomodel->numberofvertices,1);
 		else param->SetDoubleVec(temperature,0,0);
 		parameters->AddObject(param);
@@ -93,5 +93,5 @@
 	count++;
 	param= new Param(count,"h_g",DOUBLEVEC);
-	if(thickness) param->SetDoubleVec(thickness,iomodel->numberofnodes,1);
+	if(thickness) param->SetDoubleVec(thickness,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(thickness,0,0);
 	parameters->AddObject(param);
@@ -105,5 +105,5 @@
 	count++;
 	param= new Param(count,"s_g",DOUBLEVEC);
-	if(surface) param->SetDoubleVec(surface,iomodel->numberofnodes,1);
+	if(surface) param->SetDoubleVec(surface,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(surface,0,0);
 	parameters->AddObject(param);
@@ -117,5 +117,5 @@
 	count++;
 	param= new Param(count,"b_g",DOUBLEVEC);
-	if(bed) param->SetDoubleVec(bed,iomodel->numberofnodes,1);
+	if(bed) param->SetDoubleVec(bed,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(bed,0,0);
 	parameters->AddObject(param);
@@ -126,9 +126,9 @@
 	/*Get melting: */
 	IoModelFetchData(&melting,NULL,NULL,iomodel_handle,"melting");
-	if(melting) for(i=0;i<iomodel->numberofnodes;i++)melting[i]=melting[i]/iomodel->yts;
+	if(melting) for(i=0;i<iomodel->numberofvertices;i++)melting[i]=melting[i]/iomodel->yts;
 	
 	count++;
 	param= new Param(count,"m_g",DOUBLEVEC);
-	if(melting) param->SetDoubleVec(melting,iomodel->numberofnodes,1);
+	if(melting) param->SetDoubleVec(melting,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(melting,0,1);
 	parameters->AddObject(param);
@@ -139,9 +139,9 @@
 	/*Get accumulation: */
 	IoModelFetchData(&accumulation,NULL,NULL,iomodel_handle,"accumulation");
-	if(accumulation) for(i=0;i<iomodel->numberofnodes;i++)accumulation[i]=accumulation[i]/iomodel->yts;
+	if(accumulation) for(i=0;i<iomodel->numberofvertices;i++)accumulation[i]=accumulation[i]/iomodel->yts;
 	
 	count++;
 	param= new Param(count,"a_g",DOUBLEVEC);
-	if(accumulation) param->SetDoubleVec(accumulation,iomodel->numberofnodes,1);
+	if(accumulation) param->SetDoubleVec(accumulation,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(accumulation,0,0);
 	parameters->AddObject(param);
Index: /issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 3435)
+++ /issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 3436)
@@ -187,13 +187,13 @@
 			}
 
-			MeshPartitionx(&epart, &part,iomodel->numberofelements,iomodel->numberofnodes,iomodel->elements, iomodel->numberofelements2d,iomodel->numberofnodes2d,iomodel->elements2d,iomodel->numlayers,elements_width, iomodel->meshtype,iomodel->qmu_npart);
-
-			dpart=(double*)xmalloc(iomodel->numberofnodes*sizeof(double));
-			for(i=0;i<iomodel->numberofnodes;i++)dpart[i]=part[i];
+			MeshPartitionx(&epart, &part,iomodel->numberofelements,iomodel->numberofvertices,iomodel->elements, iomodel->numberofelements2d,iomodel->numberofvertices2d,iomodel->elements2d,iomodel->numlayers,elements_width, iomodel->meshtype,iomodel->qmu_npart);
+
+			dpart=(double*)xmalloc(iomodel->numberofvertices*sizeof(double));
+			for(i=0;i<iomodel->numberofvertices;i++)dpart[i]=part[i];
 		}
 
 		count++;
 		param= new Param(count,"qmu_part",DOUBLEVEC);
-		param->SetDoubleVec(dpart,iomodel->numberofnodes,1);
+		param->SetDoubleVec(dpart,iomodel->numberofvertices,1);
 		parameters->AddObject(param);
 
@@ -214,5 +214,5 @@
 				count++;
 				param= new Param(count,descriptor,DOUBLEVEC);
-				param->SetDoubleVec(dakota_parameter,iomodel->numberofnodes,1);
+				param->SetDoubleVec(dakota_parameter,iomodel->numberofvertices,1);
 				parameters->AddObject(param);
 
@@ -284,11 +284,11 @@
 				IoModelFetchData(&iomodel->fit,NULL,NULL,iomodel_handle,"fit");
 
-				u_g_obs=(double*)xcalloc(iomodel->numberofnodes*2,sizeof(double));
-				if(vx_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+0]=vx_obs[i]/iomodel->yts;
-				if(vy_obs)for(i=0;i<iomodel->numberofnodes;i++)u_g_obs[2*i+1]=vy_obs[i]/iomodel->yts;
+				u_g_obs=(double*)xcalloc(iomodel->numberofvertices*2,sizeof(double));
+				if(vx_obs)for(i=0;i<iomodel->numberofvertices;i++)u_g_obs[2*i+0]=vx_obs[i]/iomodel->yts;
+				if(vy_obs)for(i=0;i<iomodel->numberofvertices;i++)u_g_obs[2*i+1]=vy_obs[i]/iomodel->yts;
 
 				count++;
 				param= new Param(count,"velocity_obs",DOUBLEVEC);
-				param->SetDoubleVec(u_g_obs,2*iomodel->numberofnodes,2);
+				param->SetDoubleVec(u_g_obs,2*iomodel->numberofvertices,2);
 				parameters->AddObject(param);
 
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp	(revision 3435)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp	(revision 3436)
@@ -44,13 +44,13 @@
 	IoModelFetchData(&vz,NULL,NULL,iomodel_handle,"vz");
 
-	u_g=(double*)xcalloc(iomodel->numberofnodes*3,sizeof(double));
+	u_g=(double*)xcalloc(iomodel->numberofvertices*3,sizeof(double));
 
-	if(vx) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+0]=vx[i]/iomodel->yts;
-	if(vy) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+1]=vy[i]/iomodel->yts;
-	if(vz) for(i=0;i<iomodel->numberofnodes;i++)u_g[3*i+2]=vz[i]/iomodel->yts;
+	if(vx) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+0]=vx[i]/iomodel->yts;
+	if(vy) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+1]=vy[i]/iomodel->yts;
+	if(vz) for(i=0;i<iomodel->numberofvertices;i++)u_g[3*i+2]=vz[i]/iomodel->yts;
 
 	count++;
 	param= new Param(count,"u_g",DOUBLEVEC);
-	param->SetDoubleVec(u_g,3*iomodel->numberofnodes,3);
+	param->SetDoubleVec(u_g,3*iomodel->numberofvertices,3);
 	parameters->AddObject(param);
 
@@ -65,5 +65,5 @@
 	count++;
 	param= new Param(count,"p_g",DOUBLEVEC);
-	if(pressure) param->SetDoubleVec(pressure,iomodel->numberofnodes,1);
+	if(pressure) param->SetDoubleVec(pressure,iomodel->numberofvertices,1);
 	else param->SetDoubleVec(pressure,0,0);
 	parameters->AddObject(param);
@@ -80,5 +80,5 @@
 		count++;
 		param= new Param(count,"t_g",DOUBLEVEC);
-		if(temperature) param->SetDoubleVec(temperature,iomodel->numberofnodes,1);
+		if(temperature) param->SetDoubleVec(temperature,iomodel->numberofvertices,1);
 		else ISSMERROR(exprintf("Missing initial temperature"));
 		parameters->AddObject(param);
