Clp trunk
|
00001 /* $Id$ */ 00002 // Copyright (C) 2003, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 // This code is licensed under the terms of the Eclipse Public License (EPL). 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