Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 24046)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 24047)
@@ -1349,4 +1349,71 @@
 	IssmDouble* buffer = xNew<IssmDouble>(this->vertices->Size());
 	#endif
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_send[rank]){
+			int  numids = this->vertices->common_send[rank];
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_send_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(!vertex->clone);
+				buffer[i] = local_vector[vertex->lid];
+			}
+			ISSM_MPI_Send(buffer,numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm());
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_recv[rank]){
+			int  numids = this->vertices->common_recv[rank];
+			ISSM_MPI_Recv(buffer,numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&status);
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_recv_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(vertex->clone);
+				local_vector[vertex->lid] = buffer[i];
+			}
+		}
+	}
+	xDelete<IssmDouble>(buffer);
+}/*}}}*/
+void FemModel::SyncLocalVectorWithClonesVerticesAdd(IssmDouble* local_vector){/*{{{*/
+
+	/*recover my_rank:*/
+	ISSM_MPI_Status status;
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*Now send and receive vector for vertices on partition edge*/
+	#ifdef _HAVE_AD_
+	IssmDouble* buffer = xNew<IssmDouble>(this->vertices->Size(),"t"); //only one alloc, "t" is required by adolc
+	#else
+	IssmDouble* buffer = xNew<IssmDouble>(this->vertices->Size());
+	#endif
+
+	/*1st: add slaves to master values (reverse of what we usually do)*/
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_recv[rank]){
+			int  numids = this->vertices->common_recv[rank];
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_recv_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(vertex->clone);
+				buffer[i] = local_vector[vertex->lid];
+			}
+			ISSM_MPI_Send(buffer,numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm());
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_send[rank]){
+			int  numids = this->vertices->common_send[rank];
+			ISSM_MPI_Recv(buffer,numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&status);
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_send_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(!vertex->clone);
+				local_vector[vertex->lid] += buffer[i];
+			}
+		}
+	}
+
+	/*Now sync masters across partitions*/
 	for(int rank=0;rank<num_procs;rank++){
 		if(this->vertices->common_send[rank]){
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 24046)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 24047)
@@ -99,4 +99,5 @@
 		void GetLocalVectorWithClonesVertices(IssmDouble** plocal_vector,Vector<IssmDouble> *vector);
 		void SyncLocalVectorWithClonesVertices(IssmDouble* local_vector);
+		void SyncLocalVectorWithClonesVerticesAdd(IssmDouble* local_vector);
 		void GetLocalVectorWithClonesNodes(IssmDouble** plocal_vector,Vector<IssmDouble> *vector);
 		void GroundedAreax(IssmDouble* pV, bool scaled);
Index: /issm/trunk-jpl/src/c/modules/KillIcebergsx/KillIcebergsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/KillIcebergsx/KillIcebergsx.cpp	(revision 24046)
+++ /issm/trunk-jpl/src/c/modules/KillIcebergsx/KillIcebergsx.cpp	(revision 24047)
@@ -42,5 +42,5 @@
 
 		/*Get local mask from parallel vector*/
-		femmodel->SyncLocalVectorWithClonesVertices(local_mask);
+		femmodel->SyncLocalVectorWithClonesVerticesAdd(local_mask);
 
 		/*Local iterations on partition*/
