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