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

kraftche at cae.wisc.edu kraftche at cae.wisc.edu
Mon Mar 7 19:13:50 CST 2011


Author: kraftche
Date: 2011-03-07 19:13:50 -0600 (Mon, 07 Mar 2011)
New Revision: 4546

Modified:
   MOAB/trunk/src/parallel/WriteHDF5Parallel.cpp
   MOAB/trunk/src/parallel/WriteHDF5Parallel.hpp
Log:
Fix bug in HDF5 writer resulting from invalid assumption about interface sets.

The parallel HDF5 writer was written with the assumption that a given interface
set contains all entities that are shared with the current proccessor and
*one* other procesor.  This assumption has not been valid for a very long
time.  


Modified: MOAB/trunk/src/parallel/WriteHDF5Parallel.cpp
===================================================================
--- MOAB/trunk/src/parallel/WriteHDF5Parallel.cpp	2011-03-08 01:11:59 UTC (rev 4545)
+++ MOAB/trunk/src/parallel/WriteHDF5Parallel.cpp	2011-03-08 01:13:50 UTC (rev 4546)
@@ -247,90 +247,44 @@
 // (and for elements, connectivity length).  This function:
 //  o determines which entities are to be written by a remote processor
 //  o removes those entities from the ExportSet structs in WriteMesh
-//  o puts them in the 'interfaceMesh' array of Ranges in this class
-//  o sets their file Id to '1'
-ErrorCode WriteHDF5Parallel::gather_interface_meshes()
+//  o passes them back in a Range
+ErrorCode WriteHDF5Parallel::gather_interface_meshes(Range& nonowned)
 {
   ErrorCode result;
   
   //START_SERIAL;
   dbgOut.print( 3, "Pre-interface mesh:\n");
-  dbgOut.print( 2, nodeSet.range );
+  dbgOut.print( 3, nodeSet.range );
   for (std::list<ExportSet>::iterator eiter = exportList.begin();
            eiter != exportList.end(); ++eiter )
-    dbgOut.print( 2, eiter->range );
-  dbgOut.print( 2, setSet.range );
+    dbgOut.print( 3, eiter->range );
+  dbgOut.print( 3, setSet.range );
   
-  Range iface_sets = myPcomm->interface_sets();
-
-    // Populate lists of interface mesh entities
-  Range tmpset;
-  for (Range::iterator ifit = iface_sets.begin(); ifit != iface_sets.end(); ifit++) {
-    int owner;
-    result = myPcomm->get_owner(*ifit, owner);
-    if (MB_SUCCESS != result || -1 == owner) return error(result);
-
-    tmpset.clear();
-    result = iFace->get_entities_by_handle(*ifit, tmpset, true);
-    if (MB_SUCCESS != result) return error(result);
-    interfaceMesh[owner].merge( tmpset );
-  }
-  
-    // interfaceMesh currently contains interface entities for the 
-    // entire mesh.  We now need to a) remove from the sets of entities
-    // and handles that this proc doesn't own and b) remove from interfaceMesh
-    // any handles for entities that we aren't going to write (on any proc.)
-  
-    // First move handles of non-owned entities from lists of entities
+    // Move handles of non-owned entities from lists of entities
     // that this processor will write to the 'nonowned' list.
     


More information about the moab-dev mailing list