00001 //*****************************************************************// 00002 // Albany 2.0: Copyright 2012 Sandia Corporation // 00003 // This Software is released under the BSD license detailed // 00004 // in the file "license.txt" in the top-level Albany directory // 00005 //*****************************************************************// 00006 #ifndef MOR_MULTIVECTORINPUTFILE_HPP 00007 #define MOR_MULTIVECTORINPUTFILE_HPP 00008 00009 #include "Epetra_MultiVector.h" 00010 #include "Epetra_Map.h" 00011 00012 #include "Teuchos_RCP.hpp" 00013 00014 #include <string> 00015 00016 namespace MOR { 00017 00018 class MultiVectorInputFile { 00019 public: 00020 std::string path() const { return path_; } 00021 00022 virtual int readVectorCount(const Epetra_Comm &comm) = 0; 00023 virtual Teuchos::RCP<Epetra_MultiVector> read(const Epetra_Map &map) = 0; 00024 00025 virtual ~MultiVectorInputFile(); 00026 00027 protected: 00028 explicit MultiVectorInputFile(const std::string &path); 00029 00030 private: 00031 std::string path_; 00032 00033 // Disallow copy and assignment 00034 MultiVectorInputFile(const MultiVectorInputFile &); 00035 MultiVectorInputFile &operator=(const MultiVectorInputFile &); 00036 }; 00037 00038 inline 00039 MultiVectorInputFile::MultiVectorInputFile(const std::string &path) : 00040 path_(path) 00041 { 00042 // Nothing to do 00043 } 00044 00045 inline 00046 MultiVectorInputFile::~MultiVectorInputFile() 00047 { 00048 // Nothing to do 00049 } 00050 00051 } // namespace MOR 00052 00053 #endif /* MOR_MULTIVECTORINPUTFILE_HPP */