00001 // eigensolvers 00002 00003 #ifndef eigens_hh 00004 #define eigens_hh 00005 00006 #include "basics/outputOperator.hh" 00007 #include "basics/typedefs.hh" 00008 #include "function/vector.hh" 00009 #include "toolbox/array.hh" 00010 00011 namespace eigensolver { 00012 00013 // *********************************************************** EigenSolver ** 00014 00019 template <typename F> 00020 class EigenSolver : public concepts::OutputOperator { 00021 public: 00026 virtual const concepts::Array<F>& getEV() = 0; 00027 /* Returns an array with the eigen functions 00028 * @deprecated: this interface requires that the returned array 00029 * must be hold as a member variable of the class. (use std::auto_pointer or similar) 00030 */ 00031 virtual const concepts::Array<concepts::Vector<F>*>& getEF() = 0; 00032 00034 virtual uint converged() const = 0; 00036 virtual uint iterations() const = 0; 00037 protected: 00038 virtual std::ostream& info(std::ostream& os) const; 00039 }; 00040 00041 } 00042 00043 #endif // eigens_hh