Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 1761)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 1762)
@@ -37,6 +37,5 @@
 	int grid1,grid2;
 	
-	double* dirichletvalues_diag=NULL;
-	double* gridondirichlet_diag=NULL;
+	double* spcvelocity=NULL;
 	double* gridonhutter=NULL;
 	
@@ -48,6 +47,5 @@
 
 	/*Fetch data: */
-	ModelFetchData((void**)&gridondirichlet_diag,NULL,NULL,model_handle,"gridondirichlet_diag","Matrix","Mat");
-	ModelFetchData((void**)&dirichletvalues_diag,NULL,NULL,model_handle,"dirichletvalues_diag","Matrix","Mat");
+	ModelFetchData((void**)&spcvelocity,NULL,NULL,model_handle,"spcvelocity","Matrix","Mat");
 	ModelFetchData((void**)&gridonhutter,NULL,NULL,model_handle,"gridonhutter","Matrix","Mat");
 
@@ -61,21 +59,26 @@
 	#endif
 
-		if ((int)gridondirichlet_diag[i] | (int)gridonhutter[i]){
+		if ((int)spcvelocity[6*i+0] | (int)gridonhutter[i]){
 	
-			/*This grid needs to be spc'd to vx_obs and vy_obs:*/
+			/*This grid needs to be spc'd to vx_obs:*/
 
 			spc_sid=count;
 			spc_node=i+1;
 			spc_dof=1; //we enforce first x translation degree of freedom
-			spc_value=*(dirichletvalues_diag+2*i+0)/model->yts;
+			spc_value=*(spcvelocity+6*i+3)/model->yts;
 
 			spc = new Spc(spc_sid,spc_node,spc_dof,spc_value);
 			constraints->AddObject(spc);
 			count++;
+		}
+
+		if ((int)spcvelocity[6*i+1] | (int)gridonhutter[i]){
+
+			/*This grid needs to be spc'd to vy_obs:*/
 
 			spc_sid=count;
 			spc_node=i+1;
 			spc_dof=2; //we enforce first y translation degree of freedom
-			spc_value=*(dirichletvalues_diag+2*i+1)/model->yts;
+			spc_value=*(spcvelocity+6*i+4)/model->yts;
 			
 			spc = new Spc(spc_sid,spc_node,spc_dof,spc_value);
@@ -136,6 +139,5 @@
 	
 	/*Free data: */
-	xfree((void**)&gridondirichlet_diag);
-	xfree((void**)&dirichletvalues_diag);
+	xfree((void**)&spcvelocity);
 	xfree((void**)&gridonhutter);
 	
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 1761)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 1762)
@@ -75,5 +75,5 @@
 	/*Create pressure loads as boundary conditions. Pay attention to the partitioning if we are running in parallel (the grids
 	 * referenced by a certain load must belong to the cluster node): */
-	ModelFetchData((void**)&model->segmentonneumann_diag,&model->numberofsegs_diag,NULL,model_handle,"segmentonneumann_diag","Matrix","Mat");
+	ModelFetchData((void**)&model->pressureload,&model->numberofpressureloads,NULL,model_handle,"pressureload","Matrix","Mat");
 	ModelFetchData((void**)&model->elements_type,NULL,NULL,model_handle,"elements_type","Matrix","Mat");
 	ModelFetchData((void**)&model->thickness,NULL,NULL,model_handle,"thickness","Matrix","Mat");
@@ -81,5 +81,5 @@
 
 	/*First load data:*/
-	for (i=0;i<model->numberofsegs_diag;i++){
+	for (i=0;i<model->numberofpressureloads;i++){
 		
 		if (strcmp(model->meshtype,"2d")==0){
@@ -93,5 +93,5 @@
 
 
-		element=(int)(*(model->segmentonneumann_diag+segment_width*i+segment_width-1)-1); //element is in the last column
+		element=(int)(*(model->pressureload+segment_width*i+segment_width-1)-1); //element is in the last column
 
 		#ifdef _PARALLEL_
@@ -105,9 +105,9 @@
 		icefront_mparid=model->numberofelements+1; //matlab indexing
 		icefront_sid=i+1; //matlab indexing
-		icefront_eid=(int)*(model->segmentonneumann_diag+segment_width*i+segment_width-1); //matlab indexing
+		icefront_eid=(int)*(model->pressureload+segment_width*i+segment_width-1); //matlab indexing
 		icefront_element_type=element_type;
 
-		i1=(int)*(model->segmentonneumann_diag+segment_width*i+0);
-		i2=(int)*(model->segmentonneumann_diag+segment_width*i+1);
+		i1=(int)*(model->pressureload+segment_width*i+0);
+		i2=(int)*(model->pressureload+segment_width*i+1);
 			
 		icefront_node_ids[0]=i1;
@@ -125,6 +125,6 @@
 		else if ((int)*(model->elements_type+2*element+0)==PattynFormulationEnum()){ //this is a real 3d element, icefront will be 3d.
 			strcpy(icefront_type,"quad");
-			i3=(int)*(model->segmentonneumann_diag+segment_width*i+2);
-			i4=(int)*(model->segmentonneumann_diag+segment_width*i+3);
+			i3=(int)*(model->pressureload+segment_width*i+2);
+			i4=(int)*(model->pressureload+segment_width*i+3);
 			icefront_node_ids[2]=i3;
 			icefront_node_ids[3]=i4;
@@ -146,5 +146,5 @@
 	}
 	/*Free data: */
-	xfree((void**)&model->segmentonneumann_diag);
+	xfree((void**)&model->pressureload);
 	xfree((void**)&model->elements_type);
 	xfree((void**)&model->thickness);
Index: /issm/trunk/src/c/ModelProcessorx/Model.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Model.cpp	(revision 1761)
+++ /issm/trunk/src/c/ModelProcessorx/Model.cpp	(revision 1762)
@@ -88,21 +88,9 @@
 	model->numberofsegs_diag=0;
 	model->numberofsegs_diag_stokes=0;
-	model->segmentonneumann_diag=NULL;
-	model->segmentonneumann_diag_stokes=NULL;
-	model-> neumannvalues_diag=NULL;
-	model-> gridondirichlet_diag=NULL;
-	model-> dirichletvalues_diag=NULL;
-	//prognostic
-	model-> segmentonneumann_prog=NULL;
-	model-> neumannvalues_prog=NULL;
-	model-> gridondirichlet_prog=NULL;
-	model-> dirichletvalues_prog=NULL;
-	//prognostic2
-	model-> segmentonneumann_prog2=NULL;
-	model-> neumannvalues_prog2=NULL;
-	//thermal
-	model-> gridondirichlet_thermal=NULL;
-	model-> dirichletvalues_thermal=NULL;
-	model-> geothermalflux=NULL;
+	model->pressureload=NULL;
+	model->pressureload_stokes=NULL;
+	model-> spcvelocity=NULL;
+	model-> spctemperature=NULL;
+	model-> spcthickness=NULL;
 	
 	/*!materials: */
@@ -239,17 +227,9 @@
 	xfree((void**)&model->gridonicesheet);
 	xfree((void**)&model->gridoniceshelf);
-	xfree((void**)&model->segmentonneumann_diag);
-	xfree((void**)&model->segmentonneumann_diag_stokes);
-	xfree((void**)&model->neumannvalues_diag);
-	xfree((void**)&model->gridondirichlet_diag);
-	xfree((void**)&model->dirichletvalues_diag);
-	xfree((void**)&model->segmentonneumann_prog);
-	xfree((void**)&model->neumannvalues_prog);
-	xfree((void**)&model->gridondirichlet_prog);
-	xfree((void**)&model->dirichletvalues_prog);
-	xfree((void**)&model->segmentonneumann_prog2);
-	xfree((void**)&model->neumannvalues_prog2);
-	xfree((void**)&model->gridondirichlet_thermal);
-	xfree((void**)&model->dirichletvalues_thermal);
+	xfree((void**)&model->pressureload);
+	xfree((void**)&model->pressureload_stokes);
+	xfree((void**)&model->spcvelocity);
+	xfree((void**)&model->spcthickness);
+	xfree((void**)&model->spctemperature);
 	xfree((void**)&model->geothermalflux);
 	xfree((void**)&model->melting);
Index: /issm/trunk/src/c/ModelProcessorx/Model.h
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Model.h	(revision 1761)
+++ /issm/trunk/src/c/ModelProcessorx/Model.h	(revision 1762)
@@ -84,24 +84,11 @@
 
 	/*boundary conditions: */
-	//diagnostic
-	int     numberofsegs_diag;
-	int     numberofsegs_diag_stokes;
-	double* segmentonneumann_diag;
-	double* neumannvalues_diag;
-	double* gridondirichlet_diag;
-	double* dirichletvalues_diag;
-	double* segmentonneumann_diag_stokes;
-
-	//prognostic
-	double* segmentonneumann_prog;
-	double* neumannvalues_prog;
-	double* gridondirichlet_prog;
-	double* dirichletvalues_prog;
-	//prognostic2
-	double* segmentonneumann_prog2;
-	double* neumannvalues_prog2;
-	//thermal
-	double* gridondirichlet_thermal;
-	double* dirichletvalues_thermal;
+	int     numberofpressureloads;
+	int     numberofpressureloads_stokes;
+	double* pressureload;
+	double* pressureload_stokes;
+	double* spcvelocity;
+	double* spctemperature;
+	double* spcthickness;
 	double* geothermalflux;
 	
