[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