PlayaBICGSTABSolverDecl.hpp
Go to the documentation of this file.
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 
00020 /**
00021  *
00022  */
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:
00030   /** */
00031   BICGSTABSolver(const ParameterList& params = ParameterList());
00032 
00033   /** */
00034   BICGSTABSolver(const ParameterList& params,
00035     const PreconditionerFactory<Scalar>& precond);
00036 
00037   /** */
00038   virtual ~BICGSTABSolver(){;}
00039 
00040   /** \name Printable interface */
00041   //@{
00042   /** Write to a stream  */
00043   void print(std::ostream& os) const ;
00044   //@}
00045     
00046   /** \name Describable interface */
00047   //@{
00048   /** Write a brief description */
00049   std::string description() const {return "BICGSTABSolver";}
00050   //@}
00051 
00052   /** \name Handleable interface */
00053   //@{
00054   /** Return a ref count pointer to a newly created object */
00055   virtual RCP<LinearSolverBase<Scalar> > getRcp() 
00056     {return rcp(this);}
00057   //@}
00058     
00059 protected:
00060 
00061   /** */
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

Site Contact