Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 785)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 786)
@@ -17,9 +17,10 @@
 
 
-	int i;
+	int i,j;
 	int count;
 	
 	DataSet* constraints = NULL;
 	Spc*    spc  = NULL;
+	Rgb*    rgb  = NULL;
 
 	/*spc intermediary data: */
@@ -28,4 +29,11 @@
 	int spc_dof;
 	double spc_value;
+
+	/*rgb constructor data: */
+	int rgb_id;
+	int rgb_dof;
+	int rgb_nodeid1;
+	int rgb_nodeid2;
+	int grid1,grid2;
 	
 	double* dirichletvalues_diag=NULL;
@@ -81,8 +89,49 @@
 	}
 
+	/*Create penalties loads for linking of collapsed formulation grids with non collapsed grids: */
+
+	/*First fetch penalties: */
+	if (strcmp(model->meshtype,"3d")==0){
+		ModelFetchData((void**)&model->penalties,&model->numpenalties,NULL,model_handle,"penalties","Matrix","Mat");
+	}
+
+	count=0;
+	if(model->numpenalties){
+
+		/*First deal with internal grids: */
+		for (i=0;i<model->numpenalties;i++){
+			if (model->penaltypartitioning[i]>=0){ //this penalty belongs to at least this CPU
+
+				for(j=1;j<model->numlayers;j++){
+					/*We are pairing grids along a vertical profile.*/
+					grid1=(int)*(model->penalties+model->numlayers*i);
+					grid2=(int)*(model->penalties+model->numlayers*i+j);
+
+					rgb_id=count+1; //matlab indexing
+					rgb_dof=1;
+					rgb_nodeid1=grid1;
+					rgb_nodeid2=grid2;
+					rgb= new Rgb(rgb_id,rgb_nodeid1,rgb_nodeid2,rgb_dof);
+					constraints->AddObject(rgb);
+					count++;
+
+					rgb_id=count+1; //matlab indexing
+					rgb_dof=2;
+					rgb_nodeid1=grid1;
+					rgb_nodeid2=grid2;
+					rgb= new Rgb(rgb_id,rgb_nodeid1,rgb_nodeid2,rgb_dof);
+					constraints->AddObject(rgb);
+					count++;
+				} //for ( i=0; i<numpenalties; i++) 
+			}
+		}
+	}
+
+	/*Free data: */
+	xfree((void**)&model->penalties);
+
 	/*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: */
 	constraints->Presort();
-
 	
 	/*Free data: */
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 785)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 786)
@@ -78,5 +78,4 @@
 	
 	/*penta constructor input: */
-
 	int penta_id;
 	int penta_mid;
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 785)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 786)
@@ -153,61 +153,6 @@
 	xfree((void**)&model->bed);
 
-		
-	/*Create penalties loads for linking of collapsed formulation grids with non collapsed grids: */
-
-	/*First fetch penalties: */
-	if (strcmp(model->meshtype,"3d")==0){
-		ModelFetchData((void**)&model->penalties,&model->numpenalties,NULL,model_handle,"penalties","Matrix","Mat");
-	}
-
 	counter=0;
-	if(model->numpenalties){
-
-		/*First deal with internal grids: */
-		for (i=0;i<model->numpenalties;i++){
-			if (model->penaltypartitioning[i]>=0){ //this penalty belongs to at least this CPU
-
-				for(j=0;j<model->numlayers-1;j++){
-
-					/*We are pairing grids along a vertical profile.*/
-					grid1=(int)*(model->penalties+model->numlayers*i+j);
-					grid2=(int)*(model->penalties+model->numlayers*i+j+1);
-
-					penpair_id=counter+1; //matlab indexing
-					penpair_dof=1;
-					penpair_node_ids[0]=grid1;
-					penpair_node_ids[1]=grid2;
-					penpair_penalty_offset=model->penalty_offset;
-					penpair_numdofs=1;
-
-					penpair= new Penpair(penpair_id,penpair_penalty_offset,penpair_penalty_lock,penpair_numdofs,penpair_node_ids,penpair_dof,
-								penpair_element_ids,penpair_friction,penpair_fill,penpair_normal,penpair_length);
-					loads->AddObject(penpair);
-
-
-					counter++;
-
-					penpair_id=counter+1; //matlab indexing
-					penpair_dof=2;
-					penpair_node_ids[0]=grid1;
-					penpair_node_ids[1]=grid2;
-					penpair_penalty_offset=model->penalty_offset;
-					penpair_numdofs=1;
-
-					penpair= new Penpair(penpair_id,penpair_penalty_offset,penpair_penalty_lock,penpair_numdofs,penpair_node_ids,penpair_dof,
-								penpair_element_ids,penpair_friction,penpair_fill,penpair_normal,penpair_length);
-					loads->AddObject(penpair);
-
-
-					counter++;
-
-				} //for ( i=0; i<numpenalties; i++) 
-			}
-		}
-	}
-
-	/*Free data: */
-	xfree((void**)&model->penalties);
-	
+
 	/*Create penpair loads also for rift grids, so that they don't penetrate one another, if needed: */
 	/*First fetch rifts: */
