10#ifndef THYRA_DEFAULT_SPMD_MULTI_VECTOR_FILE_IO_HPP 
   11#define THYRA_DEFAULT_SPMD_MULTI_VECTOR_FILE_IO_HPP 
   13#include "Thyra_MultiVectorFileIOBase.hpp" 
   14#include "Thyra_SpmdMultiVectorSerializer.hpp" 
   15#include "Teuchos_Utils.hpp" 
   48    const std::string      &extensionTagName  = 
"" 
   49    ,
const  int            numProcs           = -1
 
   50    ,
const  int            procRank           = -1
 
   70    const std::string      &extensionTagName  = 
"" 
   71    ,
const  int            numProcs           = -1
 
   72    ,
const  int            procRank           = -1
 
   86    const std::string                 &fileNameBase
 
   92    ,
const std::string                     &fileNameBase
 
   98  std::string    localFileNameExtension_;
 
 
  108template<
class Scalar>
 
  110  const std::string      &extensionTagName
 
  114  :useBinaryMode_(false) 
 
  115  ,mvSerializer_(useBinaryMode_)
 
 
  120template<
class Scalar>
 
  122  const std::string      &extensionTagName
 
  129  if(extensionTagName.length())
 
  130    localFileNameExtension_ = extensionTagName+
"."+endExtension;
 
  132    localFileNameExtension_ = endExtension;
 
 
  135template<
class Scalar>
 
  138  const std::string &fileNameBase
 
  141  std::ostringstream parallelFileName;
 
  142  parallelFileName << fileNameBase;
 
  143  if(localFileNameExtension_.length())
 
  144    parallelFileName << 
"." << localFileNameExtension_;
 
  145  return parallelFileName.str();
 
 
  148template<
class Scalar>
 
  153  return mvSerializer_.isCompatible(mv);
 
 
  156template<
class Scalar>
 
  158  const std::string                 &fileNameBase
 
  163  const std::string fileName = getLocalFileName(fileNameBase);
 
  164  std::ifstream in_file(fileName.c_str());
 
  166    in_file.eof(), std::logic_error
 
  167    ,
"Error, the file \""<<fileName<<
"\" could not be opened for input!" 
  169  mvSerializer_.binaryMode(useBinaryMode_);
 
  170  mvSerializer_.deserialize(in_file,mv);
 
 
  173template<
class Scalar>
 
  176  ,
const std::string                     &fileNameBase
 
  179  const std::string fileName = getLocalFileName(fileNameBase);
 
  180  std::ofstream out_file(fileName.c_str());
 
  181  mvSerializer_.binaryMode(useBinaryMode_);
 
  182  mvSerializer_.serialize(mv,out_file);
 
 
static std::string getParallelExtension(int procRank=-1, int numProcs=-1)
 
Concrete implementation of MultiVectorFileIO that reads and writes SPMD-based (multi)vectors to and f...
 
std::string getLocalFileName(const std::string &fileNameBase) const
 
DefaultSpmdMultiVectorFileIO(const std::string &extensionTagName="", const int numProcs=-1, const int procRank=-1)
Construct with file extension information (calls setFileNameExtension()).
 
void readMultiVectorFromFile(const std::string &fileNameBase, Thyra::MultiVectorBase< Scalar > *mv) const
 
bool isCompatible(const MultiVectorBase< Scalar > &mv) const
 
void setFileNameExtension(const std::string &extensionTagName="", const int numProcs=-1, const int procRank=-1)
Set file name extension information to disambiguate files on different processes and from other files...
 
void writeMultiVectorToFile(const Thyra::MultiVectorBase< Scalar > &mv, const std::string &fileNameBase) const
 
Interface for a collection of column vectors called a multi-vector.
 
Abstract strategy interface for reading and writing (multi)vector objects to and from files.
 
Concrete utility class for reading and writing SPMD-based MultiVectorBase objects to and from standar...
 
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)