PlayaNonlinearSolverBase.hpp
00001
00002
00003
00004
00005 #ifndef PLAYA_NONLINEARSOLVERBASE_HPP
00006 #define PLAYA_NONLINEARSOLVERBASE_HPP
00007
00008 #include "PlayaDefs.hpp"
00009 #include "PlayaLinearSolverBaseDecl.hpp"
00010
00011 namespace Playa
00012 {
00013 using namespace Teuchos;
00014 template<class Scalar>
00015 class NonlinearOperator;
00016
00020 template <class Scalar>
00021 class NonlinearSolverBase : public Handleable<NonlinearSolverBase<Scalar> >
00022 {
00023 public:
00025 NonlinearSolverBase(const ParameterList& params = ParameterList());
00026
00028 virtual ~NonlinearSolverBase(){;}
00029
00031 virtual SolverState<Scalar> solve(const NonlinearOperator<Scalar>& F,
00032 Vector<Scalar>& soln) const = 0 ;
00033
00034 protected:
00035
00036 const ParameterList& params() const {return params_;}
00037
00038 private:
00039 ParameterList params_;
00040 };
00041
00042
00043 template <class Scalar> inline
00044 NonlinearSolverBase<Scalar>
00045 ::NonlinearSolverBase(const ParameterList& params)
00046 : params_(params)
00047 {;}
00048
00049 }
00050
00051 #endif