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