• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

QCAD_CoupledPSObserver.hpp

Go to the documentation of this file.
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 
00007 #ifndef QCAD_COUPLEDPSOBSERVER_HPP
00008 #define QCAD_COUPLEDPSOBSERVER_HPP
00009 
00010 #include "Epetra_Vector.h"
00011 #include "NOX_Epetra_Observer.H"
00012 #include "Piro_ProviderBase.hpp"
00013 #include "Teuchos_RCP.hpp"
00014 #include "Teuchos_ParameterList.hpp"
00015 #include "QCAD_CoupledPoissonSchrodinger.hpp"
00016 
00017 namespace QCAD {
00018 
00019 
00021 class CoupledPS_NOXObserver : public NOX::Epetra::Observer
00022 {
00023 public:
00024    CoupledPS_NOXObserver (const Teuchos::RCP<CoupledPoissonSchrodinger> &psModel);
00025    ~CoupledPS_NOXObserver () { };
00026 
00028   void observeSolution( const Epetra_Vector& solution);
00029 
00031   void observeSolution( const Epetra_Vector& solution, double time_or_param_val);
00032 
00033 private:
00034   Teuchos::RCP<CoupledPoissonSchrodinger> psModel_;
00035 };
00036 
00037 
00038 
00039 
00041 class CoupledPS_NOXObserverFactory {
00042 public:
00043   explicit CoupledPS_NOXObserverFactory(const Teuchos::RCP<CoupledPoissonSchrodinger> &psModel);
00044   Teuchos::RCP<NOX::Epetra::Observer> createInstance();
00045 
00046 private:
00047   Teuchos::RCP<CoupledPoissonSchrodinger> psModel_;
00048 };
00049 
00050 
00051 
00052 
00054 class CoupledPS_NOXObserverConstructor : public Piro::ProviderBase<NOX::Epetra::Observer> {
00055 public:
00056   explicit CoupledPS_NOXObserverConstructor(const Teuchos::RCP<CoupledPoissonSchrodinger> &psModel) :
00057     factory_(psModel),
00058     instance_(Teuchos::null)
00059   {}
00060 
00061   virtual Teuchos::RCP<NOX::Epetra::Observer> getInstance(
00062       const Teuchos::RCP<Teuchos::ParameterList> &params);
00063 
00064 private:
00065   CoupledPS_NOXObserverFactory factory_;
00066   Teuchos::RCP<NOX::Epetra::Observer> instance_;
00067 };
00068 
00069 
00070 
00071 } // namespace QCAD
00072 
00073 #endif
00074 

Generated on Wed Mar 26 2014 18:36:43 for Albany: a Trilinos-based PDE code by  doxygen 1.7.1