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_PROJECTIONERROR_HPP 00007 #define MOR_PROJECTIONERROR_HPP 00008 00009 #include "Teuchos_RCP.hpp" 00010 00011 #include "Epetra_MultiVector.h" 00012 00013 #include <deque> 00014 00015 namespace MOR { 00016 00017 class ReducedSpace; 00018 class MultiVectorOutputFile; 00019 00020 class ProjectionError { 00021 public: 00022 ProjectionError( 00023 const Teuchos::RCP<ReducedSpace> &projectionSpace, 00024 const Teuchos::RCP<MultiVectorOutputFile> &errorFile); 00025 00026 const Epetra_Comm &projectionBasisComm() const; 00027 00028 ~ProjectionError(); 00029 00030 void process(const Epetra_MultiVector &v); 00031 00032 private: 00033 Teuchos::RCP<ReducedSpace> projectionSpace_; 00034 Teuchos::RCP<MultiVectorOutputFile> errorFile_; 00035 00036 std::deque<double> relativeErrorNorms_; 00037 00038 // Disallow copy & assignment 00039 ProjectionError(const ProjectionError &); 00040 ProjectionError &operator=(const ProjectionError &); 00041 }; 00042 00043 } // namespace MOR 00044 00045 #endif /* MOR_PROJECTIONERROR_HPP */