Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 23560)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 23561)
@@ -558,10 +558,10 @@
 					approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
 					if(approximation==FSApproximationEnum)  approximation=FSvelocityEnum;
-					nodes->AddObject(new Node(i+1,i,lid++,0,i,iomodel,StressbalanceAnalysisEnum,approximation));
+					nodes->AddObject(new Node(i+1,i,lid++,0,i,false,iomodel,StressbalanceAnalysisEnum,approximation));
 				}
 			}
 			for(int i=0;i<iomodel->numberofelements;i++){
 				if(iomodel->my_elements[i]){
-					node = new Node(iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,StressbalanceAnalysisEnum,FSvelocityEnum);
+					node = new Node(iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,StressbalanceAnalysisEnum,FSvelocityEnum);
 					node->Deactivate();
 					nodes->AddObject(node);
@@ -572,5 +572,5 @@
 				if(iomodel->my_vertices[i]){
 					approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
-					node = new Node(iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,0,i,iomodel,StressbalanceAnalysisEnum,FSpressureEnum);
+					node = new Node(iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,0,i,false,iomodel,StressbalanceAnalysisEnum,FSpressureEnum);
 					if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum){
 						node->Deactivate();
@@ -583,5 +583,5 @@
 			for(int i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(i+1,i,lid++,0,i,iomodel,StressbalanceAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))));
+					nodes->AddObject(new Node(i+1,i,lid++,0,i,false,iomodel,StressbalanceAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))));
 				}
 			}
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 23560)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 23561)
@@ -99,5 +99,5 @@
 
 			/*Create new node if is in this processor's partition*/
-			node = new Node(i+1,i,lid++,0,i,iomodel,StressbalanceSIAAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])));
+			node = new Node(i+1,i,lid++,0,i,false,iomodel,StressbalanceSIAAnalysisEnum,IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i])));
 
 			/*Deactivate node if not SIA*/
Index: /issm/trunk-jpl/src/c/classes/DofIndexing.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/DofIndexing.cpp	(revision 23560)
+++ /issm/trunk-jpl/src/c/classes/DofIndexing.cpp	(revision 23561)
@@ -39,10 +39,4 @@
 }
 /*}}}*/
-DofIndexing::DofIndexing(int in_gsize){/*{{{*/
-
-	this->Init(in_gsize,NULL);
-
-}
-/*}}}*/
 DofIndexing::DofIndexing(DofIndexing* in){ //copy constructor/*{{{*/
 
@@ -100,11 +94,4 @@
 }
 /*}}}*/
-DofIndexing DofIndexing::operator=( const DofIndexing& in ){/*{{{*/
-
-	this->copy(in);
-
-	return this;
-}
-/*}}}*/
 void DofIndexing::copy(const DofIndexing& in ){/*{{{*/
 
@@ -151,10 +138,10 @@
 }
 /*}}}*/
-void DofIndexing::Init(int in_gsize,int* in_doftype){/*{{{*/
+void DofIndexing::Init(int in_gsize,bool isclone,int* in_doftype){/*{{{*/
 
 	this->gsize = in_gsize;
 
 	/*At this point, assume this is not a clone (will be dealt with later)*/
-	this->clone = false;
+	this->clone = isclone;
 
 	/*memory allocation */
Index: /issm/trunk-jpl/src/c/classes/DofIndexing.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/DofIndexing.h	(revision 23560)
+++ /issm/trunk-jpl/src/c/classes/DofIndexing.h	(revision 23561)
@@ -35,24 +35,19 @@
 		int *sdoflist;   //dof list in s_set
 
-		/*DofIndexing constructors, destructors {{{*/
+		/*DofIndexing constructors, destructors*/
 		DofIndexing();
-		DofIndexing(int g_size);
-		void Init(int g_size,int* doftype);
+		void Init(int g_size,bool isclone,int* doftype);
 		void InitSet(int setenum);
 		DofIndexing(DofIndexing* properties);
 		~DofIndexing();
-		DofIndexing operator=(const DofIndexing& in);
-		/*}}}*/
-		/*Object like functionality: {{{*/
+		/*Object like functionality:*/
 		void  copy(const DofIndexing& in);
 		void  DeepEcho(void); 
 		void  Echo(void); 
-		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
-		/*}}}*/
-		/*DofIndexing management: {{{*/
+		void  Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		/*DofIndexing management:*/
 		void Activate(void);
 		void Deactivate(void);
 		DofIndexing* Spawn(int* indices, int numindices);
-		/*}}}*/
 
 };
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 23560)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 23561)
@@ -3284,5 +3284,5 @@
 			int *doftypes=NULL;
 			int numdofs=analysis->DofsPerNode(&doftypes,Domain2DhorizontalEnum,SSAApproximationEnum);
-			newnode->indexing.Init(numdofs,doftypes);
+			newnode->indexing.Init(numdofs,false,doftypes);
 			xDelete<int>(doftypes);
 			delete analysis;
Index: /issm/trunk-jpl/src/c/classes/Node.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 23560)
+++ /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 23561)
@@ -21,5 +21,5 @@
 }
 /*}}}*/
-Node::Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index, IoModel* iomodel,int analysis_enum,int in_approximation){/*{{{*/
+Node::Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index,bool isclone,IoModel* iomodel,int analysis_enum,int in_approximation){/*{{{*/
 
 	/*Intermediary*/
@@ -43,5 +43,5 @@
 	Analysis* analysis = EnumToAnalysis(analysis_enum);
 	int numdofs        = analysis->DofsPerNode(&doftypes,iomodel->domaintype,in_approximation);
-	indexing.Init(numdofs,doftypes);
+	indexing.Init(numdofs,isclone,doftypes);
 	xDelete<int>(doftypes);
 	delete analysis;
Index: /issm/trunk-jpl/src/c/classes/Node.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Node.h	(revision 23560)
+++ /issm/trunk-jpl/src/c/classes/Node.h	(revision 23561)
@@ -41,5 +41,5 @@
 		/*Node constructors, destructors*/
 		Node();
-		Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index, IoModel* iomodel,int analysis_enum,int approximation_in);
+		Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index,bool isclone,IoModel* iomodel,int analysis_enum,int approximation_in);
 		~Node();
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 23560)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 23561)
@@ -22,5 +22,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
 				}
 			}
@@ -32,5 +32,5 @@
 				for(j=0;j<3;j++){
 					if(my_nodes[3*i+j]){ 
-						nodes->AddObject(new Node(id0+3*i+j+1,id0+3*i+j,lid++,0,iomodel->elements[3*i+j]-1,iomodel,analysis,approximation));
+						nodes->AddObject(new Node(id0+3*i+j+1,id0+3*i+j,lid++,0,iomodel->elements[3*i+j]-1,false,iomodel,analysis,approximation));
 
 					}
@@ -42,10 +42,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
-				}
-			}
-			for(i=0;i<iomodel->numberofelements;i++){
-				if(iomodel->my_elements[i]){
-					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,approximation));
 				}
 			}
@@ -55,10 +55,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
-				}
-			}
-			for(i=0;i<iomodel->numberofelements;i++){
-				if(iomodel->my_elements[i]){
-					node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,approximation);
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,approximation);
 					node->HardDeactivate();
 					nodes->AddObject(node);
@@ -71,5 +71,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
 				}
 			}
@@ -79,5 +79,5 @@
 				if(iomodel->edges[i*3+2]==2){
 					if(iomodel->my_edges[i]){
-						node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
+						node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,0,false,iomodel,analysis,approximation);
 						nodes->AddObject(node);
 					}
@@ -91,5 +91,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
 				}
 			}
@@ -99,7 +99,7 @@
 				if(iomodel->edges[i*3+2]==2){
 					if(iomodel->my_edges[i]){
-						node = new Node(id0+iomodel->numberofvertices+2*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
-						nodes->AddObject(node);
-						node = new Node(id0+iomodel->numberofvertices+2*i+2,counter+2,lid++,0,0,iomodel,analysis,approximation);
+						node = new Node(id0+iomodel->numberofvertices+2*i+1,counter+1,lid++,0,0,false,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+2*i+2,counter+2,lid++,0,0,false,iomodel,analysis,approximation);
 						nodes->AddObject(node);
 					}
@@ -112,5 +112,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
 				}
 			}
@@ -119,9 +119,9 @@
 				if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
 					if(iomodel->my_edges[i]){
-						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
-						nodes->AddObject(node);
-						node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,0,iomodel,analysis,approximation);
-						nodes->AddObject(node);
-						node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,0,iomodel,analysis,approximation);
+						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,false,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,0,false,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,0,false,iomodel,analysis,approximation);
 						nodes->AddObject(node);
 					}
@@ -135,5 +135,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
 				}
 			}
@@ -143,5 +143,5 @@
 				if(iomodel->edges[i*3+2]!=2){
 					if(iomodel->my_edges[i]){
-						node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
+						node = new Node(id0+iomodel->numberofvertices+i+1,counter+1,lid++,0,0,false,iomodel,analysis,approximation);
 						nodes->AddObject(node);
 					}
@@ -155,10 +155,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
 				}
 			}
 			for(i=0;i<iomodel->numberofedges;i++){
 				if(iomodel->my_edges[i]){
-					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,approximation));
 				}
 			}
@@ -169,5 +169,5 @@
 					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
 						if(iomodel->my_faces[i]){
-							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,approximation);
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,false,iomodel,analysis,approximation);
 							nodes->AddObject(node);
 						}
@@ -186,10 +186,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
 				}
 			}
 			for(i=0;i<iomodel->numberofedges;i++){
 				if(iomodel->my_edges[i]){
-					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,approximation));
 				}
 			}
@@ -200,5 +200,5 @@
 					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
 						if(iomodel->my_faces[i]){
-							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,approximation);
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,false,iomodel,analysis,approximation);
 							nodes->AddObject(node);
 						}
@@ -215,5 +215,5 @@
 			for(i=0;i<iomodel->numberofelements;i++){
 				if(iomodel->my_elements[i]){
-					nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,0,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,0,false,iomodel,analysis,approximation));
 				}
 			}
@@ -224,5 +224,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,approximation));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,approximation));
 				}
 			}
@@ -231,9 +231,9 @@
 				if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
 					if(iomodel->my_edges[i]){
-						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
-						nodes->AddObject(node);
-						node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,0,iomodel,analysis,approximation);
-						nodes->AddObject(node);
-						node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,0,iomodel,analysis,approximation);
+						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,false,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,0,false,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,0,false,iomodel,analysis,approximation);
 						nodes->AddObject(node);
 					}
@@ -242,5 +242,5 @@
 				else if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/
 					if(iomodel->my_edges[i]){
-						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
+						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,false,iomodel,analysis,approximation);
 						nodes->AddObject(node);
 					}
@@ -255,9 +255,9 @@
 				if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
 					if(iomodel->my_faces[i]){
-						node = new Node(id0+3*i+1,counter+1,lid++,0,0,iomodel,analysis,approximation);
-						nodes->AddObject(node);
-						node = new Node(id0+3*i+2,counter+2,lid++,0,0,iomodel,analysis,approximation);
-						nodes->AddObject(node);
-						node = new Node(id0+3*i+3,counter+3,lid++,0,0,iomodel,analysis,approximation);
+						node = new Node(id0+3*i+1,counter+1,lid++,0,0,false,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+3*i+2,counter+2,lid++,0,0,false,iomodel,analysis,approximation);
+						nodes->AddObject(node);
+						node = new Node(id0+3*i+3,counter+3,lid++,0,0,false,iomodel,analysis,approximation);
 						nodes->AddObject(node);
 					}
@@ -279,5 +279,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
@@ -286,5 +286,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,0,i,false,iomodel,analysis,FSpressureEnum));
 				}
 			}
@@ -295,5 +295,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
@@ -302,5 +302,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+i,lid++,0,i,false,iomodel,analysis,FSpressureEnum));
 				}
 			}
@@ -311,10 +311,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
-				}
-			}
-			for(i=0;i<iomodel->numberofelements;i++){
-				if(iomodel->my_elements[i]){
-					node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
 					node->HardDeactivate();
 					nodes->AddObject(node);
@@ -325,5 +325,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,0,i,false,iomodel,analysis,FSpressureEnum));
 				}
 			}
@@ -334,10 +334,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
-				}
-			}
-			for(i=0;i<iomodel->numberofelements;i++){
-				if(iomodel->my_elements[i]){
-					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,FSvelocityEnum));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
@@ -346,5 +346,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,lid++,0,i,false,iomodel,analysis,FSpressureEnum));
 				}
 			}
@@ -357,10 +357,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
 			for(i=0;i<iomodel->numberofedges;i++){
 				if(iomodel->my_edges[i]){
-					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
@@ -371,5 +371,5 @@
 					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
 						if(iomodel->my_faces[i]){
-							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
 							nodes->AddObject(node);
 						}
@@ -394,5 +394,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofedges+numberoffaces+i,lid++,0,i,iomodel,analysis,FSpressureEnum));
+					nodes->AddObject(new Node(vnodes+i+1,iomodel->numberofvertices+iomodel->numberofedges+numberoffaces+i,lid++,0,i,false,iomodel,analysis,FSpressureEnum));
 				}
 			}
@@ -404,10 +404,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
 			for(i=0;i<iomodel->numberofedges;i++){
 				if(iomodel->my_edges[i]){
-					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
@@ -418,5 +418,5 @@
 					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
 						if(iomodel->my_faces[i]){
-							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
 							nodes->AddObject(node);
 						}
@@ -440,5 +440,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
@@ -447,9 +447,9 @@
 				if(iomodel->edges[i*3+2]==2){/*Vertical edges*/
 					if(iomodel->my_edges[i]){
-						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,FSvelocityEnum);
-						nodes->AddObject(node);
-						node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,0,iomodel,analysis,FSvelocityEnum);
-						nodes->AddObject(node);
-						node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,0,iomodel,analysis,FSvelocityEnum);
+						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+2,counter+2,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+						node = new Node(id0+iomodel->numberofvertices+3*i+3,counter+3,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
 						nodes->AddObject(node);
 					}
@@ -458,5 +458,5 @@
 				else if(iomodel->edges[i*3+2]==1){/*Horizontal edges*/
 					if(iomodel->my_edges[i]){
-						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,iomodel,analysis,FSvelocityEnum);
+						node = new Node(id0+iomodel->numberofvertices+3*i+1,counter+1,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
 						nodes->AddObject(node);
 					}
@@ -471,9 +471,9 @@
 				if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
 					if(iomodel->my_faces[i]){
-						node = new Node(id0+3*i+1,counter+1,lid++,0,0,iomodel,analysis,FSvelocityEnum);
-						nodes->AddObject(node);
-						node = new Node(id0+3*i+2,counter+2,lid++,0,0,iomodel,analysis,FSvelocityEnum);
-						nodes->AddObject(node);
-						node = new Node(id0+3*i+3,counter+3,lid++,0,0,iomodel,analysis,FSvelocityEnum);
+						node = new Node(id0+3*i+1,counter+1,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+						node = new Node(id0+3*i+2,counter+2,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
+						nodes->AddObject(node);
+						node = new Node(id0+3*i+3,counter+3,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
 						nodes->AddObject(node);
 					}
@@ -492,5 +492,5 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(vnodes+i+1,counter+1,lid++,0,i,iomodel,analysis,FSpressureEnum));
+					nodes->AddObject(new Node(vnodes+i+1,counter+1,lid++,0,i,false,iomodel,analysis,FSpressureEnum));
 				}
 				counter++;
@@ -503,10 +503,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
 			for(i=0;i<iomodel->numberofedges;i++){
 				if(iomodel->my_edges[i]){
-					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
@@ -517,5 +517,5 @@
 					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
 						if(iomodel->my_faces[i]){
-							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
 							nodes->AddObject(node);
 						}
@@ -532,5 +532,5 @@
 			for(i=0;i<iomodel->numberofelements;i++){
 				if(iomodel->my_elements[i]){
-					nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
@@ -547,5 +547,5 @@
 				if(iomodel->my_elements[i]){
 					for(j=0;j<elementnbv;j++){
-						nodes->AddObject(new Node(vnodes+elementnbv*i+j+1,vnodes+elementnbv*i+j,lid++,0,iomodel->elements[+elementnbv*i+j]-1,iomodel,analysis,FSpressureEnum));
+						nodes->AddObject(new Node(vnodes+elementnbv*i+j+1,vnodes+elementnbv*i+j,lid++,0,iomodel->elements[+elementnbv*i+j]-1,false,iomodel,analysis,FSpressureEnum));
 
 					}
@@ -559,10 +559,10 @@
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
-					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,i,lid++,0,i,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
 			for(i=0;i<iomodel->numberofedges;i++){
 				if(iomodel->my_edges[i]){
-					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
@@ -573,5 +573,5 @@
 					if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
 						if(iomodel->my_faces[i]){
-							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,iomodel,analysis,FSvelocityEnum);
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum);
 							nodes->AddObject(node);
 						}
@@ -588,5 +588,5 @@
 			for(i=0;i<iomodel->numberofelements;i++){
 				if(iomodel->my_elements[i]){
-					nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,0,iomodel,analysis,FSvelocityEnum));
+					nodes->AddObject(new Node(id0+i+1,id0+i,lid++,0,0,false,iomodel,analysis,FSvelocityEnum));
 				}
 			}
