PlayaNonlinearSolverBase.hpp

00001 /* @HEADER@ */
00002 //   
00003 /* @HEADER@ */
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

doxygen