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_SORTMANAGER_HPP
00030 #define ANASAZI_SORTMANAGER_HPP
00031
00047 #include "AnasaziConfigDefs.hpp"
00048 #include "AnasaziTypes.hpp"
00049 #include "Teuchos_TestForException.hpp"
00050
00051
00052
00053 namespace Anasazi {
00054
00056
00057
00060 class SortManagerError : public AnasaziError
00061 {public: SortManagerError(const std::string& what_arg) : AnasaziError(what_arg) {}};
00062
00064
00065 template<class ScalarType, class MV, class OP>
00066 class Eigensolver;
00067
00068 template<class ScalarType, class MV, class OP>
00069 class SortManager {
00070
00071 public:
00072
00074 SortManager() {};
00075
00077 virtual ~SortManager() {};
00078
00080
00089 virtual void sort(Eigensolver<ScalarType,MV,OP>* solver, const int n, std::vector<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> &evals, std::vector<int> *perm = 0) const = 0;
00090
00107 virtual void sort(Eigensolver<ScalarType,MV,OP>* solver,
00108 const int n,
00109 std::vector<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> &r_evals,
00110 std::vector<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> &i_evals,
00111 std::vector<int> *perm = 0) const = 0;
00112
00113 };
00114
00115 }
00116
00117 #endif // ANASAZI_SORTMANAGER_HPP
00118