Anasazi Version of the Day
AnasaziEigensolver.hpp
Go to the documentation of this file.
00001 // @HEADER
00002 // ***********************************************************************
00003 //
00004 //                 Anasazi: Block Eigensolvers Package
00005 //                 Copyright (2004) Sandia Corporation
00006 //
00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00008 // license for use of this work by or on behalf of the U.S. Government.
00009 //
00010 // This library is free software; you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as
00012 // published by the Free Software Foundation; either version 2.1 of the
00013 // License, or (at your option) any later version.
00014 //
00015 // This library is distributed in the hope that it will be useful, but
00016 // WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 // Lesser General Public License for more details.
00019 //
00020 // You should have received a copy of the GNU Lesser General Public
00021 // License along with this library; if not, write to the Free Software
00022 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
00023 // USA
00024 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
00025 //
00026 // ***********************************************************************
00027 // @HEADER
00028 
00029 #ifndef ANASAZI_EIGENSOLVER_HPP
00030 #define ANASAZI_EIGENSOLVER_HPP
00031 
00036 #include "AnasaziConfigDefs.hpp"
00037 #include "AnasaziTypes.hpp"
00038 
00039 #include "AnasaziEigensolverDecl.hpp"
00040 #include "AnasaziStatusTestDecl.hpp"
00041 
00042 #include "AnasaziEigenproblem.hpp"
00043 #include "AnasaziSortManager.hpp"
00044 #include "AnasaziOutputManager.hpp"
00045 #include "AnasaziOrthoManager.hpp"
00046 #include "Teuchos_ParameterList.hpp"
00047 #include "Teuchos_RCP.hpp"
00048 #include "Teuchos_Array.hpp"
00049 
00050 
00051 namespace Anasazi {
00052 
00053 template<class ScalarType, class MV, class OP>
00054 class Eigensolver {
00055 
00056   public:
00057 
00059 
00060 
00062   Eigensolver() {};
00063 
00065 
00069   Eigensolver( const Teuchos::RCP<Eigenproblem<ScalarType,MV,OP> > &problem, 
00070                const Teuchos::RCP<SortManager<ScalarType> >        &sorter,
00071                const Teuchos::RCP<OutputManager<ScalarType> >      &printer,
00072                const Teuchos::RCP<StatusTest<ScalarType,MV,OP> >   &tester,
00073                const Teuchos::RCP<OrthoManager<ScalarType,MV> >    &ortho,
00074                Teuchos::ParameterList &params );
00075 
00077   virtual ~Eigensolver() {};
00079 
00080 
00082 
00083   
00087   virtual void iterate() = 0;
00088 
00092   virtual void initialize() = 0;
00093 
00095 
00096     
00098 
00099 
00101   virtual int getNumIters() const = 0;
00102 
00104   virtual void resetNumIters() = 0;
00105 
00110   virtual Teuchos::RCP<const MV> getRitzVectors() = 0;
00111 
00113   virtual std::vector<Value<ScalarType> > getRitzValues() = 0;
00114 
00123   virtual std::vector<int> getRitzIndex() = 0;
00124 
00126 
00129   virtual std::vector<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> getResNorms() = 0;
00130 
00133   virtual std::vector<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> getRes2Norms() = 0;
00134 
00137   virtual std::vector<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> getRitzRes2Norms() = 0;
00138 
00140   virtual int getCurSubspaceDim() const = 0;
00141 
00143   virtual int getMaxSubspaceDim() const = 0;
00144 
00146 
00147 
00148   
00150 
00151 
00153   virtual void setStatusTest(Teuchos::RCP<StatusTest<ScalarType,MV,OP> > test) = 0;
00154 
00156   virtual Teuchos::RCP<StatusTest<ScalarType,MV,OP> > getStatusTest() const = 0;
00157 
00159   virtual const Eigenproblem<ScalarType,MV,OP>& getProblem() const = 0;
00160 
00162   virtual int getBlockSize() const = 0;
00163   
00165   virtual void setBlockSize(int blockSize) = 0;
00166 
00168   virtual void setAuxVecs(const Teuchos::Array<Teuchos::RCP<const MV> > &auxvecs) = 0;
00169 
00171   virtual Teuchos::Array<Teuchos::RCP<const MV> > getAuxVecs() const = 0;
00172 
00174   virtual bool isInitialized() const = 0;
00175 
00177 
00179 
00180 
00182   virtual void currentStatus(std::ostream &os) = 0;
00183 
00185   
00186 };
00187 
00188 } // end Anasazi namespace
00189 
00190 #endif /* ANASAZI_EIGENSOLVER_HPP */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends