[MOAB-dev] r4543 - MOAB/trunk/src/parallel

kraftche at cae.wisc.edu kraftche at cae.wisc.edu
Mon Mar 7 19:05:56 CST 2011


Author: kraftche
Date: 2011-03-07 19:05:55 -0600 (Mon, 07 Mar 2011)
New Revision: 4543

Modified:
   MOAB/trunk/src/parallel/ParallelComm.cpp
Log:
Eliminate logically duplicate interface sets in ParallelComm.cpp.



Modified: MOAB/trunk/src/parallel/ParallelComm.cpp
===================================================================
--- MOAB/trunk/src/parallel/ParallelComm.cpp	2011-03-06 17:15:24 UTC (rev 4542)
+++ MOAB/trunk/src/parallel/ParallelComm.cpp	2011-03-08 01:05:55 UTC (rev 4543)
@@ -3498,6 +3498,7 @@
     RRA("");
     std::sort(procs, procs+nprocs);
     std::vector<int> tmp_procs(procs, procs + nprocs);
+    assert(tmp_procs.size() != 2);
     proc_nranges[tmp_procs].insert(*rit);
   }
                                                   
@@ -3691,9 +3692,18 @@
       if (sharing_procs.empty() ||
           (sharing_procs.size() == 1 && *sharing_procs.begin() == (int)procConfig.proc_rank())) continue;
 
+        // Need to specify sharing data correctly for entities or they will
+        // end up in a different interface set than corresponding vertices
+      if (sharing_procs.size() == 2) {
+        std::set<int>::iterator it = sharing_procs.find( proc_config().proc_rank() );
+        assert(it != sharing_procs.end());
+        sharing_procs.erase( it );
+      }
+
         // intersection is the owning proc(s) for this skin ent
       sp_vec.clear();
       std::copy(sharing_procs.begin(), sharing_procs.end(), std::back_inserter(sp_vec));
+      assert(sp_vec.size() != 2);
       proc_nranges[sp_vec].insert(*rit);
     }
   }
@@ -3748,7 +3758,7 @@
     sharing_procs.swap( sharing_procs2 );
     sharing_handles.swap( sharing_handles2 );
     
-    
+    assert(sharing_procs.size() != 2);
     proc_nranges[sharing_procs].insert(this_ent);
 
     unsigned char share_flag = PSTATUS_SHARED, 













More information about the moab-dev mailing list