00001 #ifndef GENMATRIX 00002 #define GENMATRIX 00003 00015 #include "LinearOperator.hh" 00016 #include <iostream> 00017 00018 class ElementGather; 00019 00024 class GenMatrix : public LinearOperator { 00025 protected: 00026 GenMatrix() {}; 00027 public: 00029 virtual void mult( double alpha, const IotrVector & x, 00030 double beta, IotrVector & y ) const = 0; 00031 virtual void filteredMult( double alpha, const ElementGather & filter, 00032 const IotrVector & x, 00033 double beta, IotrVector & y ) const = 0; 00035 virtual void transposeMult( double alpha, const IotrVector & x, 00036 double beta, IotrVector & y ) const = 0; 00037 virtual void filteredTransposeMult( double alpha, const IotrVector & x, 00038 double beta, const ElementGather& filt, 00039 IotrVector & y ) const = 0; 00041 virtual int rows() const = 0; 00043 virtual int columns() const = 0; 00055 virtual void writefToStream( std::ostream& out, 00056 const char format[] ) const = 0; 00057 virtual void copyFromSparseCols( const int irow[], const int kcol[], 00058 const double M[] ) = 0; 00059 virtual void copyToSparseCols( int irow[], int len, 00060 int kcol[], 00061 double M[], int & morei ) const = 0; 00062 virtual void inspect( const char * name = 0, 00063 const char * filename = 0) const = 0; 00064 virtual void inspectAsMatlab( const char * name = 0, 00065 const char * filename = 0) const = 0; 00066 }; 00067 00068 00073 typedef Handle<GenMatrix> GenMatrixHandle; 00074 #endif