PlayaNewtonArmijoSolverDecl.hpp

00001 /* @HEADER@ */
00002 //   
00003 /* @HEADER@ */
00004 
00005 #ifndef PLAYA_NEWTON_ARMIJO_SOLVER_DECL_HPP
00006 #define PLAYA_NEWTON_ARMIJO_SOLVER_DECL_HPP
00007 
00008 #include "PlayaDefs.hpp"
00009 #include "PlayaNonlinearSolverBase.hpp"
00010 #include "PlayaLinearSolverDecl.hpp"
00011 #include "Teuchos_ScalarTraits.hpp"
00012 
00013 namespace Playa
00014 {
00015 using namespace Teuchos;
00016 
00031 template <class Scalar>
00032 class NewtonArmijoSolver : public NonlinearSolverBase<Scalar> 
00033 {
00034 public:
00036   typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType ScalarMag;
00037 
00039   NewtonArmijoSolver(const ParameterList& params, 
00040     const LinearSolver<Scalar>& linSolver);
00041 
00043   virtual ~NewtonArmijoSolver(){;}
00044 
00046   SolverState<Scalar> solve(const NonlinearOperator<Scalar>& F,
00047     Vector<Scalar>& soln) const ;
00048 
00049   /* */
00050   GET_RCP(NonlinearSolverBase<Scalar>);
00051 
00052 private:
00053   LinearSolver<Scalar> linSolver_;
00054   ScalarMag tauR_;
00055   ScalarMag tauA_;
00056   ScalarMag alpha_;
00057   ScalarMag stepReduction_;
00058   int maxIters_;
00059   int maxLineSearch_;
00060   int verb_;
00061     
00062 };
00063 
00064   
00065 }
00066 
00067 #endif

doxygen