[cig-commits] [commit] baagaard/feature-output-station-names: Fix bug for outputting station names in parallel. (9f6ea7b)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Mon Dec 8 16:26:46 PST 2014


Repository : https://github.com/geodynamics/pylith

On branch  : baagaard/feature-output-station-names
Link       : https://github.com/geodynamics/pylith/compare/d71b5a06992a5e77fef79839b166f2fe665cca67...9f6ea7b0700f63920825832f7f03c2df892d12bb

>---------------------------------------------------------------

commit 9f6ea7b0700f63920825832f7f03c2df892d12bb
Author: Brad Aagaard <baagaard at usgs.gov>
Date:   Mon Dec 8 16:24:31 2014 -0800

    Fix bug for outputting station names in parallel.
    
    HDF5Ext only has HDF5 file on proc 0.


>---------------------------------------------------------------

9f6ea7b0700f63920825832f7f03c2df892d12bb
 libsrc/pylith/meshio/DataWriter.cc        |  3 ++-
 libsrc/pylith/meshio/DataWriter.hh        |  4 +++-
 libsrc/pylith/meshio/DataWriterHDF5.cc    |  3 ++-
 libsrc/pylith/meshio/DataWriterHDF5.hh    |  4 +++-
 libsrc/pylith/meshio/DataWriterHDF5Ext.cc | 16 ++++++++++++----
 libsrc/pylith/meshio/DataWriterHDF5Ext.hh |  4 +++-
 libsrc/pylith/meshio/OutputSolnPoints.cc  |  2 +-
 modulesrc/meshio/DataWriter.i             |  4 +++-
 modulesrc/meshio/DataWriterHDF5.i         |  4 +++-
 modulesrc/meshio/DataWriterHDF5Ext.i      |  4 +++-
 10 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/libsrc/pylith/meshio/DataWriter.cc b/libsrc/pylith/meshio/DataWriter.cc
index 71d027e..0c35894 100644
--- a/libsrc/pylith/meshio/DataWriter.cc
+++ b/libsrc/pylith/meshio/DataWriter.cc
@@ -132,7 +132,8 @@ pylith::meshio::DataWriter::DataWriter(const DataWriter& w) :
 // Write dataset with names of points to file.
 void
 pylith::meshio::DataWriter::writePointNames(const char* const* names,
-					    const int numNames)
+					    const int numNames,
+					    const topology::Mesh& mesh)
 { // writePointNames
   // Default: no implementation.
 } // writePointNames
diff --git a/libsrc/pylith/meshio/DataWriter.hh b/libsrc/pylith/meshio/DataWriter.hh
index 4cdf411..641fa04 100644
--- a/libsrc/pylith/meshio/DataWriter.hh
+++ b/libsrc/pylith/meshio/DataWriter.hh
@@ -128,12 +128,14 @@ public :
    *
    * @param names Array with name for each point, e.g., station name.
    * @param nunNames Number of names in array.
+   * @param mesh Finite-element mesh. 
    *
    * Primarily used with OutputSolnPoints.
    */
   virtual
   void writePointNames(const char* const* names,
-		       const int numNames);
+		       const int numNames,
+		       const topology::Mesh& mesh);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////
 protected :
diff --git a/libsrc/pylith/meshio/DataWriterHDF5.cc b/libsrc/pylith/meshio/DataWriterHDF5.cc
index 334c94f..a5818ff 100644
--- a/libsrc/pylith/meshio/DataWriterHDF5.cc
+++ b/libsrc/pylith/meshio/DataWriterHDF5.cc
@@ -409,7 +409,8 @@ pylith::meshio::DataWriterHDF5::writeCellField(const PylithScalar t,
 // Write dataset with names of points to file.
 void
 pylith::meshio::DataWriterHDF5::writePointNames(const char* const* names,
-						const int numNames)
+						const int numNames,
+						const topology::Mesh& mesh)
 { // writePointNames
   PYLITH_METHOD_BEGIN;
 
diff --git a/libsrc/pylith/meshio/DataWriterHDF5.hh b/libsrc/pylith/meshio/DataWriterHDF5.hh
index 2f4bd62..d88abd8 100644
--- a/libsrc/pylith/meshio/DataWriterHDF5.hh
+++ b/libsrc/pylith/meshio/DataWriterHDF5.hh
@@ -130,11 +130,13 @@ public :
    *
    * @param names Array with name for each point, e.g., station name.
    * @param nunNames Number of names in array.
+   * @param mesh Finite-element mesh. 
    *
    * Primarily used with OutputSolnPoints.
    */
   void writePointNames(const char* const* names,
-		       const int numNames);
+		       const int numNames,
+		       const topology::Mesh& mesh);
 
 // PRIVATE METHODS //////////////////////////////////////////////////////
 private :
diff --git a/libsrc/pylith/meshio/DataWriterHDF5Ext.cc b/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
index 48d951f..c5d176b 100644
--- a/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
+++ b/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
@@ -635,14 +635,23 @@ pylith::meshio::DataWriterHDF5Ext::writeCellField(const PylithScalar t,
 // Write dataset with names of points to file.
 void
 pylith::meshio::DataWriterHDF5Ext::writePointNames(const char* const* names,
-						   const int numNames)
+						   const int numNames,
+						   const topology::Mesh& mesh)
 { // writePointNames
   PYLITH_METHOD_BEGIN;
 
   assert(_h5);
 
   try {
-    _h5->writeDataset("/", "stations", names, numNames);
+    PetscDM dmMesh = mesh.dmMesh();assert(dmMesh);
+    MPI_Comm comm;
+    PetscMPIInt commRank;
+    PetscErrorCode err = PetscObjectGetComm((PetscObject) dmMesh, &comm);PYLITH_CHECK_ERROR(err);
+    err = MPI_Comm_rank(comm, &commRank);PYLITH_CHECK_ERROR(err);
+
+    if (!commRank) {
+      _h5->writeDataset("/", "stations", names, numNames);
+    } // if
   } catch (const std::exception& err) {
     std::ostringstream msg;
     msg << "Error while writing stations to HDF5 file '" << _hdf5Filename() << "'.\n" << err.what();
@@ -693,8 +702,7 @@ pylith::meshio::DataWriterHDF5Ext::_datasetFilename(const char* field) const
 // ----------------------------------------------------------------------
 // Write time stamp to file.
 void
-pylith::meshio::DataWriterHDF5Ext::_writeTimeStamp(
-						  const PylithScalar t)
+pylith::meshio::DataWriterHDF5Ext::_writeTimeStamp(const PylithScalar t)
 { // _writeTimeStamp
   PYLITH_METHOD_BEGIN;
 
diff --git a/libsrc/pylith/meshio/DataWriterHDF5Ext.hh b/libsrc/pylith/meshio/DataWriterHDF5Ext.hh
index 34dbd3e..dd1953f 100644
--- a/libsrc/pylith/meshio/DataWriterHDF5Ext.hh
+++ b/libsrc/pylith/meshio/DataWriterHDF5Ext.hh
@@ -125,11 +125,13 @@ public :
    *
    * @param names Array with name for each point, e.g., station name.
    * @param nunNames Number of names in array.
+   * @param mesh Finite-element mesh. 
    *
    * Primarily used with OutputSolnPoints.
    */
   void writePointNames(const char* const* names,
-		       const int numNames);
+		       const int numNames,
+		       const topology::Mesh& mesh);
 
 // PRIVATE METHODS //////////////////////////////////////////////////////
 private :
diff --git a/libsrc/pylith/meshio/OutputSolnPoints.cc b/libsrc/pylith/meshio/OutputSolnPoints.cc
index 9c6b3d5..f0a31e6 100644
--- a/libsrc/pylith/meshio/OutputSolnPoints.cc
+++ b/libsrc/pylith/meshio/OutputSolnPoints.cc
@@ -296,7 +296,7 @@ pylith::meshio::OutputSolnPoints::writePointNames(const char* const* names,
   PYLITH_METHOD_BEGIN;
 
   assert(_writer);
-  _writer->writePointNames(names, numNames);
+  _writer->writePointNames(names, numNames, *_pointsMesh);
 
   PYLITH_METHOD_END;
 } // writePointNames
diff --git a/modulesrc/meshio/DataWriter.i b/modulesrc/meshio/DataWriter.i
index ef9141d..1903ebb 100644
--- a/modulesrc/meshio/DataWriter.i
+++ b/modulesrc/meshio/DataWriter.i
@@ -120,12 +120,14 @@ namespace pylith {
        *
        * @param names Array with name for each point, e.g., station name.
        * @param nunNames Number of names in array.
+       * @param mesh Finite-element mesh. 
        *
        * Primarily used with OutputSolnPoints.
        */
       virtual
       void writePointNames(const char* const* names,
-			   const int numNames);
+			   const int numNames,
+			   const pylith::topology::Mesh& mesh);
 
     }; // DataWriter
 
diff --git a/modulesrc/meshio/DataWriterHDF5.i b/modulesrc/meshio/DataWriterHDF5.i
index a2acae2..043f468 100644
--- a/modulesrc/meshio/DataWriterHDF5.i
+++ b/modulesrc/meshio/DataWriterHDF5.i
@@ -95,11 +95,13 @@ namespace pylith {
        *
        * @param names Array with name for each point, e.g., station name.
        * @param nunNames Number of names in array.
+       * @param mesh Finite-element mesh. 
        *
        * Primarily used with OutputSolnPoints.
        */
       void writePointNames(const char* const* names,
-			   const int numNames);
+			   const int numNames,
+			   const pylith::topology::Mesh& mesh);
 
     }; // DataWriterHDF5
 
diff --git a/modulesrc/meshio/DataWriterHDF5Ext.i b/modulesrc/meshio/DataWriterHDF5Ext.i
index 2ebba29..c7365c5 100644
--- a/modulesrc/meshio/DataWriterHDF5Ext.i
+++ b/modulesrc/meshio/DataWriterHDF5Ext.i
@@ -95,11 +95,13 @@ namespace pylith {
        *
        * @param names Array with name for each point, e.g., station name.
        * @param nunNames Number of names in array.
+       * @param mesh Finite-element mesh. 
        *
        * Primarily used with OutputSolnPoints.
        */
       void writePointNames(const char* const* names,
-			   const int numNames);
+			   const int numNames,
+			   const pylith::topology::Mesh& mesh);
 
     }; // DataWriterHDF5Ext
 



More information about the CIG-COMMITS mailing list