00001
00002
00003 #ifndef ClpDummyMatrix_H
00004 #define ClpDummyMatrix_H
00005
00006
00007 #include "CoinPragma.hpp"
00008
00009 #include "ClpMatrixBase.hpp"
00010
00017 class ClpDummyMatrix : public ClpMatrixBase {
00018
00019 public:
00022
00023 virtual CoinPackedMatrix * getPackedMatrix() const;
00025 virtual bool isColOrdered() const { return true; }
00027 virtual CoinBigIndex getNumElements() const
00028 { return numberElements_; }
00030 virtual int getNumCols() const { return numberColumns_; }
00032 virtual int getNumRows() const { return numberRows_; }
00033
00038 virtual const double * getElements() const;
00044 virtual const int * getIndices() const;
00045
00046 virtual const CoinBigIndex * getVectorStarts() const;
00048 virtual const int * getVectorLengths() const;
00049
00051 virtual void deleteCols(const int numDel, const int * indDel);
00053 virtual void deleteRows(const int numDel, const int * indDel);
00055 virtual ClpMatrixBase * reverseOrderedCopy() const;
00057 virtual CoinBigIndex countBasis(ClpSimplex * model,
00058 const int * whichColumn,
00059 int numberRowBasic,
00060 int & numberColumnBasic);
00062 virtual void fillBasis(ClpSimplex * model,
00063 const int * whichColumn,
00064 int & numberColumnBasic,
00065 int * row, int * start,
00066 int * rowCount, int * columnCount,
00067 double * element);
00070 virtual void unpack(const ClpSimplex * model,CoinIndexedVector * rowArray,
00071 int column) const ;
00076 virtual void unpackPacked(ClpSimplex * model,
00077 CoinIndexedVector * rowArray,
00078 int column) const;
00081 virtual void add(const ClpSimplex * model,CoinIndexedVector * rowArray,
00082 int column, double multiplier) const ;
00084 virtual void add(const ClpSimplex * model,double * array,
00085 int column, double multiplier) const;
00088 virtual void releasePackedMatrix() const {}
00090
00096 virtual void times(double scalar,
00097 const double * x, double * y) const;
00099 virtual void times(double scalar,
00100 const double * x, double * y,
00101 const double * rowScale,
00102 const double * columnScale) const;
00106 virtual void transposeTimes(double scalar,
00107 const double * x, double * y) const;
00109 virtual void transposeTimes(double scalar,
00110 const double * x, double * y,
00111 const double * rowScale,
00112 const double * columnScale) const;
00113
00114 using ClpMatrixBase::transposeTimes ;
00118 virtual void transposeTimes(const ClpSimplex * model, double scalar,
00119 const CoinIndexedVector * x,
00120 CoinIndexedVector * y,
00121 CoinIndexedVector * z) const;
00126 virtual void subsetTransposeTimes(const ClpSimplex * model,
00127 const CoinIndexedVector * x,
00128 const CoinIndexedVector * y,
00129 CoinIndexedVector * z) const;
00131
00134
00135
00136
00140 ClpDummyMatrix();
00142 ClpDummyMatrix(int numberColumns, int numberRows,
00143 int numberElements);
00145 virtual ~ClpDummyMatrix();
00147
00151 ClpDummyMatrix(const ClpDummyMatrix&);
00153 ClpDummyMatrix(const CoinPackedMatrix&);
00154
00155 ClpDummyMatrix& operator=(const ClpDummyMatrix&);
00157 virtual ClpMatrixBase * clone() const ;
00159
00160
00161 protected:
00165
00166 int numberRows_;
00168 int numberColumns_;
00170 int numberElements_;
00171
00173 };
00174
00175 #endif