00001
00002
00003
00004
00005
00006 #ifndef ClpDummyMatrix_H
00007 #define ClpDummyMatrix_H
00008
00009
00010 #include "CoinPragma.hpp"
00011
00012 #include "ClpMatrixBase.hpp"
00013
00020 class ClpDummyMatrix : public ClpMatrixBase {
00021
00022 public:
00025
00026 virtual CoinPackedMatrix * getPackedMatrix() const;
00028 virtual bool isColOrdered() const {
00029 return true;
00030 }
00032 virtual CoinBigIndex getNumElements() const {
00033 return numberElements_;
00034 }
00036 virtual int getNumCols() const {
00037 return numberColumns_;
00038 }
00040 virtual int getNumRows() const {
00041 return numberRows_;
00042 }
00043
00048 virtual const double * getElements() const;
00054 virtual const int * getIndices() const;
00055
00056 virtual const CoinBigIndex * getVectorStarts() const;
00058 virtual const int * getVectorLengths() const;
00059
00061 virtual void deleteCols(const int numDel, const int * indDel);
00063 virtual void deleteRows(const int numDel, const int * indDel);
00065 virtual ClpMatrixBase * reverseOrderedCopy() const;
00067 virtual CoinBigIndex countBasis(const int * whichColumn,
00068 int & numberColumnBasic);
00070 virtual void fillBasis(ClpSimplex * model,
00071 const int * whichColumn,
00072 int & numberColumnBasic,
00073 int * row, int * start,
00074 int * rowCount, int * columnCount,
00075 CoinFactorizationDouble * element);
00078 virtual void unpack(const ClpSimplex * model, CoinIndexedVector * rowArray,
00079 int column) const ;
00084 virtual void unpackPacked(ClpSimplex * model,
00085 CoinIndexedVector * rowArray,
00086 int column) const;
00089 virtual void add(const ClpSimplex * model, CoinIndexedVector * rowArray,
00090 int column, double multiplier) const ;
00092 virtual void add(const ClpSimplex * model, double * array,
00093 int column, double multiplier) const;
00096 virtual void releasePackedMatrix() const {}
00098
00104 virtual void times(double scalar,
00105 const double * x, double * y) const;
00107 virtual void times(double scalar,
00108 const double * x, double * y,
00109 const double * rowScale,
00110 const double * columnScale) const;
00114 virtual void transposeTimes(double scalar,
00115 const double * x, double * y) const;
00117 virtual void transposeTimes(double scalar,
00118 const double * x, double * y,
00119 const double * rowScale,
00120 const double * columnScale) const;
00121
00122 using ClpMatrixBase::transposeTimes ;
00126 virtual void transposeTimes(const ClpSimplex * model, double scalar,
00127 const CoinIndexedVector * x,
00128 CoinIndexedVector * y,
00129 CoinIndexedVector * z) const;
00134 virtual void subsetTransposeTimes(const ClpSimplex * model,
00135 const CoinIndexedVector * x,
00136 const CoinIndexedVector * y,
00137 CoinIndexedVector * z) const;
00139
00142
00143
00144
00148 ClpDummyMatrix();
00150 ClpDummyMatrix(int numberColumns, int numberRows,
00151 int numberElements);
00153 virtual ~ClpDummyMatrix();
00155
00159 ClpDummyMatrix(const ClpDummyMatrix&);
00161 ClpDummyMatrix(const CoinPackedMatrix&);
00162
00163 ClpDummyMatrix& operator=(const ClpDummyMatrix&);
00165 virtual ClpMatrixBase * clone() const ;
00167
00168
00169 protected:
00173
00174 int numberRows_;
00176 int numberColumns_;
00178 int numberElements_;
00179
00181 };
00182
00183 #endif