PlayaEigensolverBase.hpp
00001
00002
00003
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