PlayaEigensolverBase.hpp

00001 /* @HEADER@ */
00002 //   
00003 /* @HEADER@ */
00004 
00005 #ifndef PLAYA_EIGENSOLVERBASE_HPP
00006 #define PLAYA_EIGENSOLVERBASE_HPP
00007 
00008 #include "PlayaDefs.hpp"
00009 #include "PlayaVectorDecl.hpp" 
00010 #include "PlayaSolverState.hpp"
00011 #include "Teuchos_ParameterList.hpp"
00012 #include "PlayaLinearOperatorImpl.hpp"
00013 
00014 namespace Playa
00015 {
00016 using Teuchos::ParameterList;
00017 
00024 template <class Scalar>
00025 class EigensolverBase 
00026 {
00027 public:
00029   EigensolverBase() : params_() {;}
00030 
00032   EigensolverBase(const ParameterList& params) : params_(params) {;}
00033 
00035   virtual ~EigensolverBase(){;}
00036 
00040   virtual void solve(
00041     const LinearOperator<Scalar>& K,
00042     const LinearOperator<Scalar>& M,
00043     Array<Vector<Scalar> >& ev,
00044     Array<std::complex<Scalar> >& ew) const = 0 ;
00045 
00049   virtual void solve(
00050     const LinearOperator<Scalar>& K,
00051     Array<Vector<Scalar> >& ev,
00052     Array<std::complex<Scalar> >& ew) const 
00053     {
00054       LinearOperator<Scalar> M;
00055       solve(K,M,ev,ew);
00056     };
00057 
00061   const ParameterList& params() const {return params_;}
00062   
00063 private:
00064   ParameterList params_;
00065 };  
00066 
00067 }
00068 
00069 
00070 #endif

doxygen