00001 // interface to UMFPACK 00002 00003 #ifndef UMFPACK_HH 00004 #define UMFPACK_HH 00005 00006 #include "basics/typedefs.hh" 00007 #include "compositions.hh" 00008 00009 namespace concepts { 00010 00011 // forwards 00012 template<typename F> 00013 class SparseMatrix; 00014 00015 // *************************************************************** Umfpack ** 00016 00036 class Umfpack : public Operator<Real> { 00037 public: 00045 Umfpack(const SparseMatrix<Real>& A, bool symmetric = false); 00046 virtual ~Umfpack(); 00047 virtual void operator()(const Function<Real>& fncY, Function<Real>& fncX); 00048 void operator()(const Vector<Real>& fncY, Vector<Real>& fncX); 00049 uint iterations() const { return 0; } 00050 protected: 00051 virtual std::ostream& info(std::ostream& os) const; 00052 private: 00054 const uint n_; 00055 00057 concepts::Array<long int> Ap_, Ai_; 00059 concepts::Array<Real> Ax_; 00061 void* symbolic_, * numeric_; 00062 00064 bool factored_; 00065 }; 00066 00067 } // namespace concepts 00068 00069 #endif // UMFPACK_HH