PlayaAnasaziEigensolverDecl.hpp

00001 /* @HEADER@ */
00002 //   
00003  /* @HEADER@ */
00004 
00005 #ifndef PLAYA_ANASAZIEIGENSOLVER_DECL_HPP
00006 #define PLAYA_ANASAZIEIGENSOLVER_DECL_HPP
00007 
00008 #include "PlayaDefs.hpp"
00009 #include "PlayaVectorDecl.hpp" 
00010 #include "PlayaSolverState.hpp"
00011 #include "Teuchos_ParameterList.hpp"
00012 #include "PlayaEigensolverBase.hpp"
00013 
00014 namespace Playa
00015 {
00016 using Teuchos::ParameterList;
00017 
00021 template <class Scalar>
00022 class AnasaziEigensolver
00023   : public EigensolverBase<Scalar>,
00024     public Playa::Handleable<EigensolverBase<Scalar> >
00025 {
00026 public:
00028   AnasaziEigensolver(const ParameterList& params) 
00029     : EigensolverBase<Scalar>(params) {;}
00030 
00034   virtual void solve(
00035     const LinearOperator<Scalar>& K,
00036     const LinearOperator<Scalar>& M,
00037     Array<Vector<Scalar> >& ev,
00038     Array<std::complex<Scalar> >& ew) const ;
00039 
00043   virtual RCP<EigensolverBase<Scalar> > getRcp() 
00044     {return rcp(this);}
00046   
00047 private:
00048 
00049   static Time& solveTimer() 
00050     {
00051       static RCP<Time> rtn 
00052         = TimeMonitor::getNewTimer("AnasaziEigensolver solve()"); 
00053       return *rtn;
00054     }
00055 
00056   static Time& precondBuildTimer() 
00057     {
00058       static RCP<Time> rtn 
00059         = TimeMonitor::getNewTimer("AnasaziEigensolver building preconditioner"); 
00060       return *rtn;
00061     }
00062 
00063 };
00064 
00065 
00066 
00067 
00068 }
00069 
00070 
00071 #endif

doxygen