PlayaEigensolver.hpp

00001 /* @HEADER@ */
00002 //   
00003 /* @HEADER@ */
00004 
00005 #ifndef PLAYA_EIGENSOLVER_HPP
00006 #define PLAYA_EIGENSOLVER_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 Eigensolver : public Playa::Handle<EigensolverBase<Scalar> >
00023 {
00024 public:
00026   Eigensolver() : Handle<EigensolverBase<Scalar> >() {;}
00028   Eigensolver( Playa::Handleable<EigensolverBase<Scalar> >* rawPtr) 
00029     : Handle<EigensolverBase<Scalar> >(rawPtr) {;}
00031   Eigensolver(const RCP<EigensolverBase<Scalar> >& smartPtr)
00032     : Handle<EigensolverBase<Scalar> >(smartPtr) {;}
00033   
00034 
00036   void solve(
00037     const LinearOperator<Scalar>& K,
00038     const LinearOperator<Scalar>& M,
00039     Array<Vector<Scalar> >& ev,
00040     Array<std::complex<Scalar> >& ew) const 
00041     {
00042       this->ptr()->solve(K, M, ev, ew);
00043     }
00044 
00046   void solve(
00047     const LinearOperator<Scalar>& K,
00048     Array<Vector<Scalar> >& ev,
00049     Array<std::complex<Scalar> >& ew) const 
00050     {
00051       this->ptr()->solve(K, ev, ew);
00052     }
00053 
00055   const ParameterList& params() const 
00056     {
00057       TEUCHOS_TEST_FOR_EXCEPTION(this->ptr().get()==0, std::runtime_error,
00058                        "null pointer in Eigensolver::parameters()");
00059       return this->ptr()->params();
00060     }
00061   
00063   ParameterList& params() 
00064     {
00065       TEUCHOS_TEST_FOR_EXCEPTION(this->ptr().get()==0, std::runtime_error,
00066                        "null pointer in Eigensolver::parameters()");
00067       return this->ptr()->params();
00068     }
00069   
00070 
00071   static FancyOStream& os()
00072     {
00073       return Out::os();
00074     }
00075 };
00076 
00077 
00078   
00079 }
00080 
00081 
00082 #endif

doxygen