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_PROJECTIONERROROBSERVER_HPP 00007 #define MOR_PROJECTIONERROROBSERVER_HPP 00008 00009 #include "NOX_Epetra_Observer.H" 00010 00011 #include "MOR_ProjectionError.hpp" 00012 00013 #include "Teuchos_RCP.hpp" 00014 00015 namespace MOR { 00016 00017 class ReducedSpace; 00018 class MultiVectorOutputFile; 00019 00020 class ProjectionErrorObserver : public NOX::Epetra::Observer 00021 { 00022 public: 00023 ProjectionErrorObserver( 00024 const Teuchos::RCP<ReducedSpace> &projectionSpace, 00025 const Teuchos::RCP<MultiVectorOutputFile> &errorFile); 00026 00027 virtual void observeSolution(const Epetra_Vector& solution); 00028 virtual void observeSolution(const Epetra_Vector& solution, double time_or_param_val); 00029 00030 private: 00031 ProjectionError projectionError_; 00032 00033 // Disallow copy & assignment 00034 ProjectionErrorObserver(const ProjectionErrorObserver &); 00035 ProjectionErrorObserver operator=(const ProjectionErrorObserver &); 00036 }; 00037 00038 } // namespace MOR 00039 00040 #endif /*MOR_PROJECTIONERROROBSERVER_HPP*/