00001 /* @HEADER@ */ 00002 // 00003 /* @HEADER@ */ 00004 00005 #ifndef PLAYA_NOXSOLVER_HPP 00006 #define PLAYA_NOXSOLVER_HPP 00007 00008 #include "PlayaDefs.hpp" 00009 #include "PlayaNonlinearSolverBase.hpp" 00010 #include "NOX.H" 00011 #include "NOX_Common.H" 00012 #include "NOX_Utils.H" 00013 #include "NOX_Playa_Group.hpp" 00014 #include "NOX_Playa_StatusTestBuilder.hpp" 00015 #include "NOX_Multiphysics_Solver_Manager.H" 00016 #include "Teuchos_Assert.hpp" 00017 #include "Teuchos_ParameterList.hpp" 00018 00019 namespace Playa 00020 { 00021 using namespace Teuchos; 00022 00023 /** 00024 * Playa wrapper for NOX solver 00025 */ 00026 class NOXSolver : public NonlinearSolverBase<double> 00027 { 00028 public: 00029 /** */ 00030 NOXSolver(){;} 00031 /** */ 00032 NOXSolver(const ParameterList& params); 00033 /** */ 00034 NOXSolver(const ParameterList& nonlinParams, 00035 const LinearSolver<double>& linSolver); 00036 00037 /** */ 00038 SolverState<double> solve(const NonlinearOperator<double>& F, 00039 Vector<double>& soln) const ; 00040 00041 /** */ 00042 const LinearSolver<double>& linSolver() const 00043 {return linSolver_;} 00044 00045 /* */ 00046 GET_RCP(NonlinearSolverBase<double>); 00047 00048 00049 private: 00050 00051 LinearSolver<double> linSolver_; 00052 mutable RCP<NOX::StatusTest::Generic> statusTest_; 00053 mutable ParameterList params_; 00054 mutable ParameterList printParams_; 00055 }; 00056 } 00057 00058 #endif