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