PlayaBICGSTABSolverDecl.hpp

00001 /* @HEADER@ */
00002 //   
00003  /* @HEADER@ */
00004 
00005 #ifndef PLAYA_BICGSTABSOLVER_DECL_HPP
00006 #define PLAYA_BICGSTABSOLVER_DECL_HPP
00007 
00008 #include "PlayaDefs.hpp"
00009 #include "PlayaKrylovSolver.hpp"
00010 #include "PlayaHandleable.hpp"
00011 #include "PlayaPrintable.hpp"
00012 #include "PlayaOut.hpp"
00013 #include "Teuchos_Describable.hpp"
00014 
00015 
00016 namespace Playa
00017 {
00018 using namespace Teuchos;
00019 
00023 template <class Scalar>
00024 class BICGSTABSolver : public KrylovSolver<Scalar>,
00025                        public Playa::Handleable<LinearSolverBase<Scalar> >,
00026                        public Printable,
00027                        public Describable
00028 {
00029 public:
00031   BICGSTABSolver(const ParameterList& params = ParameterList());
00032 
00034   BICGSTABSolver(const ParameterList& params,
00035     const PreconditionerFactory<Scalar>& precond);
00036 
00038   virtual ~BICGSTABSolver(){;}
00039 
00043   void print(std::ostream& os) const ;
00045     
00049   std::string description() const {return "BICGSTABSolver";}
00051 
00055   virtual RCP<LinearSolverBase<Scalar> > getRcp() 
00056     {return rcp(this);}
00058     
00059 protected:
00060 
00062   virtual SolverState<Scalar> solveUnprec(const LinearOperator<Scalar>& op,
00063     const Vector<Scalar>& rhs,
00064     Vector<Scalar>& soln) const ;
00065 
00066     
00067 };
00068 
00069 
00070 }
00071 
00072 #endif

doxygen