Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16042)
@@ -36,5 +36,5 @@
 		virtual void   Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
 		virtual void   SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters)=0;
-		virtual void   SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum)=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   CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>*  Kfs)=0;
 		virtual void   CreateDVector(Vector<IssmDouble>* df)=0;
@@ -45,4 +45,5 @@
 		virtual int    GetNumberOfNodes(void)=0;
 		virtual void   GetNodesSidList(int* sidlist)=0;
+		virtual void   GetNodesLidList(int* sidlist)=0;
 
 		virtual int    Sid()=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16042)
@@ -1327,4 +1327,16 @@
 }
 /*}}}*/
+/*FUNCTION Penta::GetNodesLidList{{{*/
+void Penta::GetNodesLidList(int* lidlist){
+
+	_assert_(lidlist);
+	_assert_(nodes);
+	int numnodes = this->NumberofNodes();
+
+	for(int i=0;i<numnodes;i++){
+		lidlist[i]=nodes[i]->Lid();
+	}
+}
+/*}}}*/
 /*FUNCTION Penta::GetNumberOfNodes;{{{*/
 int Penta::GetNumberOfNodes(void){
@@ -3251,5 +3263,5 @@
 /*}}}*/
 /*FUNCTION Penta::SetwiseNodeConnectivity{{{*/
-void Penta::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int set1_enum,int set2_enum){
+void Penta::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){
 
 	/*Intermediaries*/
@@ -3267,4 +3279,8 @@
 			/*flag current node so that no other element processes it*/
 			flags[this->nodes[i]->Lid()]=true;
+
+			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/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16042)
@@ -80,5 +80,5 @@
 		void   Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
 		void   SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
-		void   SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum);
+		void   SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
 		void   CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
 		void   CreateDVector(Vector<IssmDouble>* df);
@@ -89,4 +89,5 @@
 		int    GetNodeIndex(Node* node);
 		void   GetNodesSidList(int* sidlist);
+		void   GetNodesLidList(int* lidlist);
 		int    GetNumberOfNodes(void);
 		void   GetSolutionFromInputs(Vector<IssmDouble>* solution);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16042)
@@ -119,5 +119,5 @@
 /*Other*/
 /*FUNCTION Tria::SetwiseNodeConnectivity{{{*/
-void Tria::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int set1_enum,int set2_enum){
+void Tria::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){
 
 	/*Intermediaries*/
@@ -135,4 +135,8 @@
 			/*flag current node so that no other element processes it*/
 			flags[this->nodes[i]->Lid()]=true;
+
+			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*/
@@ -1110,4 +1114,16 @@
 	for(int i=0;i<numnodes;i++){
 		sidlist[i]=nodes[i]->Sid();
+	}
+}
+/*}}}*/
+/*FUNCTION Tria::GetNodesLidList{{{*/
+void Tria::GetNodesLidList(int* lidlist){
+
+	_assert_(lidlist);
+	_assert_(nodes);
+	int numnodes = this->NumberofNodes();
+
+	for(int i=0;i<numnodes;i++){
+		lidlist[i]=nodes[i]->Lid();
 	}
 }
@@ -7569,5 +7585,5 @@
 			vx_input->GetInputValue(&vx,gauss);
 			vy_input->GetInputValue(&vy,gauss);
-			norms = sqrt(slope[0]*slope[0]+slope[1]*slope[1]);
+			norms = sqrt(slope[0]*slope[0]+slope[1]*slope[1]+1.e-10);
 			normv = sqrt(vx*vx + vy*vy);
 			if(normv>15./(365.*24.*3600.)) slope[0] = -vx/normv*norms;
@@ -7621,5 +7637,5 @@
 			vx_input->GetInputValue(&vx,gauss);
 			vy_input->GetInputValue(&vy,gauss);
-			norms = sqrt(slope[0]*slope[0]+slope[1]*slope[1]);
+			norms = sqrt(slope[0]*slope[0]+slope[1]*slope[1]+1.e-10);
 			normv = sqrt(vx*vx + vy*vy);
 			if(normv>15./(365.*24.*3600.)) slope[1] = -vy/normv*norms;
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16042)
@@ -76,5 +76,5 @@
 		void        Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters);
 		void        SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
-		void        SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum);
+		void        SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
 		void        CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
 		void        CreateDVector(Vector<IssmDouble>* df);
@@ -84,4 +84,5 @@
 		int         GetNodeIndex(Node* node);
 		void        GetNodesSidList(int* sidlist);
+		void        GetNodesLidList(int* lidlist);
 		int         GetNumberOfNodes(void);
 		int         Sid();
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 16042)
@@ -518,4 +518,5 @@
 	/*OK now count number of dofs and flag each nodes for each node i*/
 	bool *flags                  = xNew<bool>(localnumnodes);
+	int  *flagsindices           = xNew<int>(localnumnodes);
 	int  *d_connectivity         = xNewZeroInit<int>(numnodes);
 	int  *o_connectivity         = xNewZeroInit<int>(numnodes);
@@ -523,4 +524,9 @@
 	int  *all_connectivity_clone = xNewZeroInit<int>(numnodes);
 
+	/*Resetting flags to false at eahc iteration takes a lot of time, so we keep track of the flags
+	 * to reset in flagsindices, initialized with -1*/
+	for(i = 0;i<localnumnodes;i++) flags[i]        = false;
+	for(i = 0;i<localnumnodes;i++) flagsindices[i] = -1;
+
 	/*Create connectivity vector*/
 	for(i=0;i<nodes->Size();i++){
@@ -528,15 +534,27 @@
 		if(node->InAnalysis(configuration_type)){
 
-			/*Reinitialize flags to 0*/
-			for(j=0;j<localnumnodes;j++) flags[j]=false;
+			/*Reinitialize flags to false*/
+			j=0;
+			while(true){
+				if(flagsindices[j]>=0){
+					flags[flagsindices[j]] = false;
+					flagsindices[j]        = -1;
+					j++;
+				}
+				else{
+					break;
+				}
+			}
+
+			//for(j=0;j<localnumnodes;j++) flags[j]=false;
 
 			/*Loop over elements that hold node number i*/
-			//if(head_e[node->Sid()]==-1 && head_l[node->Sid()]==-1){
-			//	printf("[%i] vertex %i\n",IssmComm::GetRank(),node->Sid()+1);
+			//if(head_e[node->Lid()]==-1 && head_l[node->Lid()]==-1){
+			//	printf("[%i] vertex %i\n",IssmComm::GetRank(),node->Lid()+1);
 			//}
 			for(j=head_e[node->Sid()];j!=-1;j=next_e[j]){
 				offset=count2offset_e[j];
 				element=dynamic_cast<Element*>(elements->GetObjectByOffset(offset));
-				element->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,set1enum,set2enum);
+				element->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,set1enum,set2enum);
 				if(node->IsClone()){
 					connectivity_clone[node->Sid()]+=d_nz+o_nz;
@@ -550,5 +568,5 @@
 				offset=count2offset_l[j];
 				load=dynamic_cast<Load*>(loads->GetObjectByOffset(offset));
-				load->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,set1enum,set2enum);
+				load->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,set1enum,set2enum);
 				if(node->IsClone()){
 					connectivity_clone[node->Sid()]+=d_nz+o_nz;
@@ -562,4 +580,5 @@
 	}
 	xDelete<bool>(flags);
+	xDelete<int>(flagsindices);
 	xDelete<int>(count2offset_e);
 	xDelete<int>(head_e);
Index: /issm/trunk-jpl/src/c/classes/Loads/Load.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Load.h	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Loads/Load.h	(revision 16042)
@@ -30,4 +30,5 @@
 		virtual int   GetNumberOfNodes(void)=0;
 		virtual void  GetNodesSidList(int* sidlist)=0;
+		virtual void  GetNodesLidList(int* lidlist)=0;
 		virtual void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
 		virtual void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs)=0;
@@ -38,5 +39,5 @@
 		virtual void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax)=0;
 		virtual bool  InAnalysis(int analysis_type)=0;
-		virtual void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum)=0;
+		virtual void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum)=0;
 };
 #endif
Index: /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp	(revision 16042)
@@ -325,4 +325,24 @@
 }
 /*}}}*/
+/*FUNCTION Numericalflux::GetNodesLidList{{{*/
+void Numericalflux::GetNodesLidList(int* lidlist){
+
+	int type;
+	inputs->GetInputValue(&type,NumericalfluxTypeEnum);
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	switch(type){
+		case InternalEnum:
+			for(int i=0;i<NUMNODES_INTERNAL;i++) lidlist[i]=nodes[i]->Lid();
+			return;
+		case BoundaryEnum:
+			for(int i=0;i<NUMNODES_BOUNDARY;i++) lidlist[i]=nodes[i]->Lid();
+			return;
+		default:
+			_error_("Numericalflux type " << EnumToStringx(type) << " not supported yet");
+	}
+}
+/*}}}*/
 /*FUNCTION Numericalflux::GetNumberOfNodes{{{*/
 int Numericalflux::GetNumberOfNodes(void){
@@ -370,5 +390,5 @@
 /*}}}*/
 /*FUNCTION Numericalflux::SetwiseNodeConnectivity{{{*/
-void Numericalflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int set1_enum,int set2_enum){
+void Numericalflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){
 
 	/*Output */
@@ -383,4 +403,8 @@
 			/*flag current node so that no other element processes it*/
 			flags[this->nodes[i]->Lid()]=true;
+
+			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/Numericalflux.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.h	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Loads/Numericalflux.h	(revision 16042)
@@ -67,4 +67,5 @@
 		void CreatePVector(Vector<IssmDouble>* pf);
 		void GetNodesSidList(int* sidlist);
+		void GetNodesLidList(int* lidlist);
 		int  GetNumberOfNodes(void);
 		void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
@@ -73,5 +74,5 @@
 		void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
 		void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
-		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum);
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
 		bool InAnalysis(int analysis_type);
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp	(revision 16042)
@@ -204,4 +204,13 @@
 
 	sidlist[0]=node->Sid();
+}
+/*}}}*/
+/*FUNCTION Pengrid::GetNodesLidList{{{*/
+void Pengrid::GetNodesLidList(int* lidlist){
+
+	_assert_(lidlist);
+	_assert_(node);
+
+	lidlist[0]=node->Lid();
 }
 /*}}}*/
@@ -292,5 +301,5 @@
 /*}}}*/
 /*FUNCTION Pengrid::SetwiseNodeConnectivity{{{*/
-void Pengrid::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int set1_enum,int set2_enum){
+void Pengrid::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){
 
 	/*Output */
@@ -302,4 +311,8 @@
 		/*flag current node so that no other element processes it*/
 		flags[this->node->Lid()]=true;
+
+		int counter=0;
+		while(flagsindices[counter]>=0) counter++;
+		flagsindices[counter]=this->node->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/Pengrid.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Pengrid.h	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Loads/Pengrid.h	(revision 16042)
@@ -78,4 +78,5 @@
 		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
 		void  GetNodesSidList(int* sidlist);
+		void  GetNodesLidList(int* lidlist);
 		int   GetNumberOfNodes(void);
 		bool  IsPenalty(void);
@@ -83,5 +84,5 @@
 		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
 		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
-		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
 		bool  InAnalysis(int analysis_type);
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp	(revision 16042)
@@ -151,4 +151,13 @@
 
 	for(int i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+/*FUNCTION Penpair::GetNodesLidList{{{*/
+void Penpair::GetNodesLidList(int* lidlist){
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) lidlist[i]=nodes[i]->Lid();
 }
 /*}}}*/
@@ -208,5 +217,5 @@
 /*}}}*/
 /*FUNCTION Penpair::SetwiseNodeConnectivity{{{*/
-void Penpair::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int set1_enum,int set2_enum){
+void Penpair::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){
 
 	/*Output */
@@ -221,4 +230,8 @@
 			/*flag current node so that no other element processes it*/
 			flags[this->nodes[i]->Lid()]=true;
+
+			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 16041)
+++ /issm/trunk-jpl/src/c/classes/Loads/Penpair.h	(revision 16042)
@@ -58,4 +58,5 @@
 		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff);
 		void  GetNodesSidList(int* sidlist);
+		void  GetNodesLidList(int* lidlist);
 		int   GetNumberOfNodes(void);
 		bool  IsPenalty(void);
@@ -63,5 +64,5 @@
 		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
 		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax);
-		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
 		bool  InAnalysis(int analysis_type);
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp	(revision 16042)
@@ -372,4 +372,13 @@
 }
 /*}}}*/
+/*FUNCTION Riftfront::GetNodesLidList{{{*/
+void Riftfront::GetNodesLidList(int* lidlist){
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
 /*FUNCTION Riftfront::GetNumberOfNodes{{{*/
 int Riftfront::GetNumberOfNodes(void){
@@ -385,5 +394,5 @@
 /*}}}*/
 /*FUNCTION Riftfront::SetwiseNodeConnectivity{{{*/
-void Riftfront::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int set1_enum,int set2_enum){
+void Riftfront::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){
 
 	/*Output */
@@ -398,4 +407,8 @@
 			/*flag current node so that no other element processes it*/
 			flags[this->nodes[i]->Lid()]=true;
+
+			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/Riftfront.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Riftfront.h	(revision 16041)
+++ /issm/trunk-jpl/src/c/classes/Loads/Riftfront.h	(revision 16042)
@@ -79,4 +79,5 @@
 		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
 		void  GetNodesSidList(int* sidlist);
+		void  GetNodesLidList(int* lidlist);
 		int   GetNumberOfNodes(void);
 		bool  IsPenalty(void);
@@ -84,5 +85,5 @@
 		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
 		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
-		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
 		bool  InAnalysis(int analysis_type);
 		/*}}}*/
