AnasaziEigensolver.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
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 ¶ms );
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 }
00189
00190 #endif