Index: /issm/trunk-jpl/src/c/classes/Loads/Channel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Channel.cpp	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Channel.cpp	(revision 25386)
@@ -296,5 +296,5 @@
 }
 /*}}}*/
-void  Channel::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+void  Channel::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
 
 	/*Output */
@@ -310,7 +310,6 @@
 			flags[this->nodes[i]->Lid()]=true;
 
-			int counter=0;
-			while(flagsindices[counter]>=0) counter++;
-			flagsindices[counter]=this->nodes[i]->Lid();
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+         flagsindices_counter[0]++;
 
 			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Channel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Channel.h	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Channel.h	(revision 25386)
@@ -75,5 +75,5 @@
 		void ResetHooks();
 		void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
-		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
 		/*}}}*/
 		/*Channel management:{{{*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Load.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Load.h	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Load.h	(revision 25386)
@@ -37,5 +37,5 @@
 		virtual void  ResetHooks()=0;
 		virtual void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
-		virtual void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum)=0;
+		virtual void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum)=0;
 };
 #endif
Index: /issm/trunk-jpl/src/c/classes/Loads/Moulin.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Moulin.cpp	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Moulin.cpp	(revision 25386)
@@ -273,5 +273,5 @@
 }
 /*}}}*/
-void  Moulin::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+void  Moulin::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
 
 	/*Output */
@@ -284,7 +284,6 @@
 		flags[this->node->Lid()]=true;
 
-		int counter=0;
-		while(flagsindices[counter]>=0) counter++;
-		flagsindices[counter]=this->node->Lid();
+		flagsindices[flagsindices_counter[0]]=this->node->Lid();
+		flagsindices_counter[0]++;
 
 		/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Moulin.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Moulin.h	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Moulin.h	(revision 25386)
@@ -74,5 +74,5 @@
 		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
 		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
-		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
 		void  ResetHooks();
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Neumannflux.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Neumannflux.cpp	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Neumannflux.cpp	(revision 25386)
@@ -285,5 +285,5 @@
 }
 /*}}}*/
-void  Neumannflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+void  Neumannflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
 
 	/*Output */
@@ -299,7 +299,6 @@
 			flags[this->nodes[i]->Lid()]=true;
 
-			int counter=0;
-			while(flagsindices[counter]>=0) counter++;
-			flagsindices[counter]=this->nodes[i]->Lid();
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+         flagsindices_counter[0]++;
 
 			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Neumannflux.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Neumannflux.h	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Neumannflux.h	(revision 25386)
@@ -68,5 +68,5 @@
 		void ResetHooks();
 		void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
-		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
 		/*}}}*/
 		/*Neumannflux management:{{{*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp	(revision 25386)
@@ -409,5 +409,5 @@
 }
 /*}}}*/
-void  Numericalflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+void  Numericalflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
 
 	/*Output */
@@ -423,7 +423,6 @@
 			flags[this->nodes[i]->Lid()]=true;
 
-			int counter=0;
-			while(flagsindices[counter]>=0) counter++;
-			flagsindices[counter]=this->nodes[i]->Lid();
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+         flagsindices_counter[0]++;
 
 			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.h	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.h	(revision 25386)
@@ -71,5 +71,5 @@
 		void ResetHooks();
 		void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
-		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
 		/*}}}*/
 		/*Numericalflux management:{{{*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp	(revision 25386)
@@ -278,5 +278,5 @@
 }
 /*}}}*/
-void  Pengrid::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+void  Pengrid::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
 
 	/*Output */
@@ -289,7 +289,6 @@
 		flags[this->node->Lid()]=true;
 
-		int counter=0;
-		while(flagsindices[counter]>=0) counter++;
-		flagsindices[counter]=this->node->Lid();
+		flagsindices[flagsindices_counter[0]]=this->node->Lid();
+		flagsindices_counter[0]++;
 
 		/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Pengrid.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Pengrid.h	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Pengrid.h	(revision 25386)
@@ -68,5 +68,5 @@
 		void  ResetHooks();
 		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
-		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
 		/*}}}*/
 		/*Pengrid management {{{*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp	(revision 25386)
@@ -214,5 +214,5 @@
 }
 /*}}}*/
-void  Penpair::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+void  Penpair::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
 
 	/*Output */
@@ -228,7 +228,7 @@
 			flags[this->nodes[i]->Lid()]=true;
 
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+         flagsindices_counter[0]++;
 			int counter=0;
-			while(flagsindices[counter]>=0) counter++;
-			flagsindices[counter]=this->nodes[i]->Lid();
 
 			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Penpair.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Penpair.h	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Penpair.h	(revision 25386)
@@ -60,5 +60,5 @@
 		void  ResetHooks();
 		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
-		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
 		/*}}}*/
 			/*Penpair management: {{{*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp	(revision 25386)
@@ -373,5 +373,5 @@
 }
 /*}}}*/
-void  Riftfront::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+void  Riftfront::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
 
 	/*Output */
@@ -387,7 +387,6 @@
 			flags[this->nodes[i]->Lid()]=true;
 
-			int counter=0;
-			while(flagsindices[counter]>=0) counter++;
-			flagsindices[counter]=this->nodes[i]->Lid();
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+			flagsindices_counter[0]++;
 
 			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Riftfront.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Riftfront.h	(revision 25385)
+++ /issm/trunk-jpl/src/c/classes/Loads/Riftfront.h	(revision 25386)
@@ -86,5 +86,5 @@
 		void  ResetHooks();
 		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
-		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
 		/*}}}*/
 		/*Riftfront specific routines: {{{*/
Index: /issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 25385)
+++ /issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 25386)
@@ -216,5 +216,5 @@
 			offset=count2offset_l[j];
 			load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(offset));
-			load->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,set1enum,set2enum);
+			load->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,&flagsindices_counter,set1enum,set2enum);
 			if(node->IsClone()){
 				connectivity_clone->SetValue(node->Pid(),d_nz+o_nz,ADD_VAL);
