PlayaIterativeSolver.hpp

00001 /* @HEADER@ */
00002 //   
00003 /* @HEADER@ */
00004 
00005 #ifndef PLAYA_ITERATIVESOLVER_HPP
00006 #define PLAYA_ITERATIVESOLVER_HPP
00007 
00008 #include "PlayaDefs.hpp"
00009 #include "PlayaLinearSolverBaseDecl.hpp"
00010 
00011 namespace Playa
00012 {
00013   using namespace Teuchos;
00014 
00018   template <class Scalar>
00019   class IterativeSolver : public LinearSolverBase<Scalar>
00020   {
00021   public:
00023     IterativeSolver(const ParameterList& params = ParameterList());
00024 
00026     virtual ~IterativeSolver(){;}
00027     
00029     int getMaxiters() const 
00030     {return this->parameters().template get<int>(maxitersParam());}
00031 
00033     Scalar getTol() const 
00034     {return this->parameters().template get<double>(tolParam());}
00035 
00037     virtual void updateTolerance(const double& tol)
00038     {getParameter<double>(this->parameters(), tolParam())=tol;}
00039 
00041     static std::string maxitersParam() {return "Max Iterations";}
00042 
00044     static std::string tolParam() {return "Tolerance";}
00045 
00047     static int defaultMaxiters() {return 500;}
00048 
00050     static Scalar defaultTol() {return 1.0e-10;}
00051   };
00052 
00053   
00054   template <class Scalar> inline
00055   IterativeSolver<Scalar>::IterativeSolver(const ParameterList& params)
00056     : LinearSolverBase<Scalar>(params)
00057   {;}
00058   
00059 }
00060 
00061 #endif

doxygen