Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

eigensolver/ARPACKsymm.hh
Go to the documentation of this file.
00001 // ArPackSymm eigensolver using dsaupd
00002 
00003 #ifndef ArPackSymmdsymm_hh
00004 #define ArPackSymmdsymm_hh
00005 
00006 #include <cfloat>
00007 #include "eigens.hh"
00008 
00009 namespace concepts {
00010   // forward declaration
00011   template<typename F>
00012   class Operator;
00013 } // namespace concepts
00014 
00015 namespace eigensolver {
00016 
00017 using concepts::Real;
00018 
00019   // **************************************************************** ArPackSymm **
00020 
00062   class ArPackSymm : public EigenSolver<Real> {
00063   public:
00067     enum which { LA, SA, LM, SM, BE };
00084     enum modus { NORMAL = 1, REGINV = 2, SHIFTINV = 3, BUCKLING = 4,
00085      CAYLEY = 5 };
00118     ArPackSymm(concepts::Operator<Real>& OP,
00119                concepts::Operator<Real>& A,
00120                concepts::Operator<Real>& B,
00121                const int kmax = 1, const Real tol = 0.0,
00122                const int maxiter = 300,
00123                enum which target = SM, enum modus mode = REGINV,
00124                const Real sigma = 0.0,
00125                const concepts::Vector<Real>* start = 0);
00126     virtual ~ArPackSymm();
00127     virtual const concepts::Array<Real>& getEV();
00128     virtual const concepts::Array<concepts::Vector<Real>*>& getEF();
00129     virtual uint iterations() const { return (uint)iter_; }
00130     virtual uint converged() const { return (uint)k_conv_; }
00131   protected:
00132     virtual std::ostream& info(std::ostream& os) const;
00133   private:
00135     concepts::Operator<Real>& OP_;
00137     concepts::Operator<Real>& A_;
00139     concepts::Operator<Real>& B_;
00141     int kmax_;
00143     int maxiter_;
00145     Real tol_;
00146     int numop_, numopb_, numreo_, k_conv_, iter_;
00148     concepts::Array<Real> eigenvalues_;
00150     concepts::Array<Real> eigenvectors_;
00152     concepts::Array<concepts::Vector<Real>*> ev_;
00154     enum which target_;
00156     enum modus mode_;
00158     const Real sigma_;
00160     const concepts::Vector<Real>* start_;
00161     bool computed_;
00162     void compute_();
00163   };
00164 
00165 } // namespace eigensolver
00166 
00167 #endif // ArPackSymm_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)