[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