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 ALBANY_OBSERVERIMPL_HPP 00007 #define ALBANY_OBSERVERIMPL_HPP 00008 00009 #include "Albany_Application.hpp" 00010 #include "Albany_DataTypes.hpp" 00011 00012 #include "Epetra_Map.h" 00013 #include "Epetra_Vector.h" 00014 00015 #include "Teuchos_RCP.hpp" 00016 #include "Teuchos_Ptr.hpp" 00017 00018 #include "Teuchos_Time.hpp" 00019 00020 namespace Albany { 00021 00022 class ObserverImpl { 00023 public: 00024 explicit ObserverImpl(const Teuchos::RCP<Application> &app); 00025 00026 RealType getTimeParamValueOrDefault(RealType defaultValue) const; 00027 00028 Epetra_Map getNonOverlappedMap() const; 00029 00030 void observeSolution( 00031 double stamp, 00032 const Epetra_Vector &nonOverlappedSolution, 00033 Teuchos::Ptr<const Epetra_Vector> nonOverlappedSolutionDot); 00034 00035 private: 00036 Teuchos::RCP<Application> app_; 00037 00038 Teuchos::RCP<Teuchos::Time> solOutTime_; 00039 00040 // Disallow copy and assignment 00041 ObserverImpl(const ObserverImpl &); 00042 ObserverImpl &operator=(const ObserverImpl &); 00043 }; 00044 00045 } // namespace Albany 00046 00047 #endif //ALBANY_OBSERVERIMPL_HPP