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_RefCountPtr.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::RefCountPtr<Eigenproblem<ScalarType,MV,OP> > &problem,
00070 const Teuchos::RefCountPtr<SortManager<ScalarType,MV,OP> > &sorter,
00071 const Teuchos::RefCountPtr<OutputManager<ScalarType> > &printer,
00072 const Teuchos::RefCountPtr<StatusTest<ScalarType,MV,OP> > &tester,
00073 const Teuchos::RefCountPtr<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::RefCountPtr<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 const Eigenproblem<ScalarType,MV,OP>& getProblem() const = 0;
00154
00156 virtual int getBlockSize() const = 0;
00157
00159 virtual void setBlockSize(int blockSize) = 0;
00160
00162 virtual void setAuxVecs(const Teuchos::Array<Teuchos::RefCountPtr<const MV> > &auxvecs) = 0;
00163
00165 virtual Teuchos::Array<Teuchos::RefCountPtr<const MV> > getAuxVecs() const = 0;
00166
00168 virtual bool isInitialized() = 0;
00169
00171
00173
00174
00176 virtual void currentStatus(ostream &os) = 0;
00177
00179
00180 };
00181
00182 }
00183
00184 #endif