Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 26447)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 26448)
@@ -516,6 +516,5 @@
 		}
 	}
-
-	if(calvinglaw==CalvingHabEnum){
+   else if(calvinglaw==CalvingHabEnum){
 
 		/*Get the fraction of the flotation thickness at the terminus*/
@@ -559,9 +558,7 @@
 		}
 	}
-
-	if(calvinglaw==CalvingCrevasseDepthEnum){
-
-		int                 nflipped,local_nflipped;
-		Vector<IssmDouble>* vec_constraint_nodes = NULL;
+   else if(calvinglaw==CalvingCrevasseDepthEnum){
+
+		int   nflipped,local_nflipped;
 		IssmDouble* constraint_nodes = NULL;
 
@@ -571,15 +568,18 @@
 
 		/*Vector of size number of nodes*/
-		vec_constraint_nodes=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes());
+      int numnodes      = femmodel->nodes->NumberOfNodes();
+      int localmasters  = femmodel->nodes->NumberOfNodesLocal();
+      Vector<IssmDouble>* vec_constraint_nodes = vec_constraint_nodes=new Vector<IssmDouble>(localmasters,numnodes);
 
 		for(Object* & object : femmodel->elements->objects){
-			Element* element               = xDynamicCast<Element*>(object);
-			int      numnodes              = element->GetNumberOfNodes();
-			Gauss*   gauss                 = element->NewGauss();
-			Input*   crevassedepth_input   = element->GetInput(CrevasseDepthEnum); _assert_(crevassedepth_input);
-			Input*   bed_input             = element->GetInput(BedEnum); _assert_(bed_input);
+			Element* element   = xDynamicCast<Element*>(object);
+			int      numnodes  = element->GetNumberOfNodes();
+			Gauss*   gauss     = element->NewGauss();
+
+			Input*   crevassedepth_input    = element->GetInput(CrevasseDepthEnum); _assert_(crevassedepth_input);
+			Input*   bed_input              = element->GetInput(BedEnum); _assert_(bed_input);
 			Input*   surface_crevasse_input = element->GetInput(SurfaceCrevasseEnum); _assert_(surface_crevasse_input);
-			Input*   thickness_input       = element->GetInput(ThicknessEnum); _assert_(thickness_input);
-			Input*   surface_input         = element->GetInput(SurfaceEnum); _assert_(surface_input);
+			Input*   thickness_input        = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+			Input*   surface_input          = element->GetInput(SurfaceEnum); _assert_(surface_input);
 
 			/*First, look at ice front and figure out if any of the nodes will be calved*/
@@ -606,5 +606,5 @@
 		/*Assemble vector and serialize: */
 		vec_constraint_nodes->Assemble();
-		constraint_nodes=vec_constraint_nodes->ToMPISerial();
+      femmodel->GetLocalVectorWithClonesNodes(&constraint_nodes,vec_constraint_nodes);
 
 		nflipped=1;
@@ -612,7 +612,8 @@
 			local_nflipped=0;
 			for(Object* & object : femmodel->elements->objects){
-				Element* element                = xDynamicCast<Element*>(object);
-				int      numnodes               = element->GetNumberOfNodes();
-				Gauss*   gauss                  = element->NewGauss();
+				Element* element  = xDynamicCast<Element*>(object);
+				int      numnodes = element->GetNumberOfNodes();
+				Gauss*   gauss    = element->NewGauss();
+
 				Input*   levelset_input         = element->GetInput(DistanceToCalvingfrontEnum); _assert_(levelset_input);
 				Input*   crevassedepth_input    = element->GetInput(CrevasseDepthEnum); _assert_(crevassedepth_input);
@@ -626,5 +627,5 @@
 				for(int in=0;in<numnodes;in++){
 					Node* node=element->GetNode(in);
-					if(constraint_nodes[node->Pid()]==1.){
+					if(constraint_nodes[node->Lid()]==1.){
 						isconnected = true;
 						break;
@@ -644,5 +645,5 @@
 						surface_input->GetInputValue(&surface,gauss);
 
-						if((surface_crevasse-surface>0. || crevassedepth-thickness>0.) && bed<0. && levelset>-300. && levelset<0. && constraint_nodes[node->Pid()]==0.){
+						if((surface_crevasse-surface>0. || crevassedepth-thickness>0.) && bed<0. && levelset>-300. && levelset<0. && constraint_nodes[node->Lid()]==0.){
 							local_nflipped++;
 							vec_constraint_nodes->SetValue(node->Pid(),1.0,INS_VAL);
@@ -659,5 +660,5 @@
 			vec_constraint_nodes->Assemble();
 			xDelete<IssmDouble>(constraint_nodes);
-			constraint_nodes=vec_constraint_nodes->ToMPISerial();
+         femmodel->GetLocalVectorWithClonesNodes(&constraint_nodes,vec_constraint_nodes);
 		}
 		/*Free ressources:*/
@@ -675,5 +676,5 @@
 				if(!node->IsActive()) continue;
 
-				if(constraint_nodes[node->Pid()]>0.){
+				if(constraint_nodes[node->Lid()]>0.){
 					node->ApplyConstraint(0,+1.);
 				}
