00001 00002 // @HEADER 00003 // *********************************************************************** 00004 // 00005 // Belos: Block Linear Solvers Package 00006 // Copyright (2004) Sandia Corporation 00007 // 00008 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00009 // license for use of this work by or on behalf of the U.S. Government. 00010 // 00011 // This library is free software; you can redistribute it and/or modify 00012 // it under the terms of the GNU Lesser General Public License as 00013 // published by the Free Software Foundation; either version 2.1 of the 00014 // License, or (at your option) any later version. 00015 // 00016 // This library is distributed in the hope that it will be useful, but 00017 // WITHOUT ANY WARRANTY; without even the implied warranty of 00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00019 // Lesser General Public License for more details. 00020 // 00021 // You should have received a copy of the GNU Lesser General Public 00022 // License along with this library; if not, write to the Free Software 00023 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00024 // USA 00025 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 00026 // 00027 // *********************************************************************** 00028 // @HEADER 00029 00030 #ifndef BELOS_SOLVERMANAGER_HPP 00031 #define BELOS_SOLVERMANAGER_HPP 00032 00037 #include "BelosConfigDefs.hpp" 00038 #include "BelosTypes.hpp" 00039 #include "BelosLinearProblem.hpp" 00040 00041 #include "Teuchos_ParameterList.hpp" 00042 #include "Teuchos_RCP.hpp" 00043 #include "Teuchos_Describable.hpp" 00044 00050 namespace Belos { 00051 00052 template<class ScalarType, class MV, class OP> 00053 class SolverManager : virtual public Teuchos::Describable { 00054 00055 public: 00056 00058 00059 00061 SolverManager() {}; 00062 00064 virtual ~SolverManager() {}; 00066 00068 00069 00070 virtual const LinearProblem<ScalarType,MV,OP>& getProblem() const = 0; 00071 00072 virtual Teuchos::RCP<const Teuchos::ParameterList> getValidParameters() const = 0; 00073 00074 virtual Teuchos::RCP<const Teuchos::ParameterList> getCurrentParameters() const = 0; 00075 00077 virtual int getNumIters() const = 0; 00078 00079 virtual bool isLOADetected() const = 0; 00080 00082 00084 00085 00086 virtual void setProblem( const Teuchos::RCP<LinearProblem<ScalarType,MV,OP> > &problem ) = 0; 00087 00088 virtual void setParameters( const Teuchos::RCP<Teuchos::ParameterList> ¶ms ) = 0; 00089 00091 00093 00094 00103 virtual ReturnType solve() = 0; 00105 00106 }; 00107 00108 } // end Belos namespace 00109 00110 #endif /* BELOS_SOLVERMANAGER_HPP */
1.4.7