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