Changeset 1525 for trunk/Clp/src/ClpCholeskyDense.hpp
 Timestamp:
 Feb 26, 2010 12:27:59 PM (10 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/Clp/src/ClpCholeskyDense.hpp
r1502 r1525 11 11 12 12 public: 13 /**@name Virtual methods that the derived classes provides */14 /**@{*/15 /** Orders rows and saves pointer to matrix.and model.16 Returns nonzero if not enough memory */17 virtual int order(ClpInterior * model) ;18 /** Does Symbolic factorization given permutation.19 This is called immediately after order. If user provides this then20 user must provide factorize and solve. Otherwise the default factorization is used21 returns nonzero if not enough memory */22 virtual int symbolic();23 /** Factorize  filling in rowsDropped and returning number dropped.24 If return code negative then out of memory */25 virtual int factorize(const CoinWorkDouble * diagonal, int * rowsDropped) ;26 /** Uses factorization to solve. */27 virtual void solve (CoinWorkDouble * region) ;28 /**@}*/13 /**@name Virtual methods that the derived classes provides */ 14 /**@{*/ 15 /** Orders rows and saves pointer to matrix.and model. 16 Returns nonzero if not enough memory */ 17 virtual int order(ClpInterior * model) ; 18 /** Does Symbolic factorization given permutation. 19 This is called immediately after order. If user provides this then 20 user must provide factorize and solve. Otherwise the default factorization is used 21 returns nonzero if not enough memory */ 22 virtual int symbolic(); 23 /** Factorize  filling in rowsDropped and returning number dropped. 24 If return code negative then out of memory */ 25 virtual int factorize(const CoinWorkDouble * diagonal, int * rowsDropped) ; 26 /** Uses factorization to solve. */ 27 virtual void solve (CoinWorkDouble * region) ; 28 /**@}*/ 29 29 30 /**@name Non virtual methods for ClpCholeskyDense */31 /**@{*/32 /** Reserves space.33 If factor not NULL then just uses passed space34 Returns nonzero if not enough memory */35 int reserveSpace(const ClpCholeskyBase * factor, int numberRows) ;36 /** Returns space needed */37 CoinBigIndex space( int numberRows) const;38 /** part 2 of Factorize  filling in rowsDropped */39 void factorizePart2(int * rowsDropped) ;40 /** part 2 of Factorize  filling in rowsDropped  blocked */41 void factorizePart3(int * rowsDropped) ;42 /** Forward part of solve */43 void solveF1(longDouble * a, int n, CoinWorkDouble * region);44 void solveF2(longDouble * a, int n, CoinWorkDouble * region, CoinWorkDouble * region2);45 /** Backward part of solve */46 void solveB1(longDouble * a, int n, CoinWorkDouble * region);47 void solveB2(longDouble * a, int n, CoinWorkDouble * region, CoinWorkDouble * region2);48 int bNumber(const longDouble * array, int &, int&);49 /** A */50 inline longDouble * aMatrix() const {51 return sparseFactor_;52 }53 /** Diagonal */54 inline longDouble * diagonal() const {55 return diagonal_;56 }57 /**@}*/30 /**@name Non virtual methods for ClpCholeskyDense */ 31 /**@{*/ 32 /** Reserves space. 33 If factor not NULL then just uses passed space 34 Returns nonzero if not enough memory */ 35 int reserveSpace(const ClpCholeskyBase * factor, int numberRows) ; 36 /** Returns space needed */ 37 CoinBigIndex space( int numberRows) const; 38 /** part 2 of Factorize  filling in rowsDropped */ 39 void factorizePart2(int * rowsDropped) ; 40 /** part 2 of Factorize  filling in rowsDropped  blocked */ 41 void factorizePart3(int * rowsDropped) ; 42 /** Forward part of solve */ 43 void solveF1(longDouble * a, int n, CoinWorkDouble * region); 44 void solveF2(longDouble * a, int n, CoinWorkDouble * region, CoinWorkDouble * region2); 45 /** Backward part of solve */ 46 void solveB1(longDouble * a, int n, CoinWorkDouble * region); 47 void solveB2(longDouble * a, int n, CoinWorkDouble * region, CoinWorkDouble * region2); 48 int bNumber(const longDouble * array, int &, int&); 49 /** A */ 50 inline longDouble * aMatrix() const { 51 return sparseFactor_; 52 } 53 /** Diagonal */ 54 inline longDouble * diagonal() const { 55 return diagonal_; 56 } 57 /**@}*/ 58 58 59 59 60 /**@name Constructors, destructor */61 /**@{*/62 /** Default constructor. */63 ClpCholeskyDense();64 /** Destructor */65 virtual ~ClpCholeskyDense();66 /** Copy */67 ClpCholeskyDense(const ClpCholeskyDense&);68 /** Assignment */69 ClpCholeskyDense& operator=(const ClpCholeskyDense&);70 /** Clone */71 virtual ClpCholeskyBase * clone() const ;72 /**@}*/60 /**@name Constructors, destructor */ 61 /**@{*/ 62 /** Default constructor. */ 63 ClpCholeskyDense(); 64 /** Destructor */ 65 virtual ~ClpCholeskyDense(); 66 /** Copy */ 67 ClpCholeskyDense(const ClpCholeskyDense&); 68 /** Assignment */ 69 ClpCholeskyDense& operator=(const ClpCholeskyDense&); 70 /** Clone */ 71 virtual ClpCholeskyBase * clone() const ; 72 /**@}*/ 73 73 74 74 75 75 private: 76 /**@name Data members */77 /**@{*/78 /** Just borrowing space */79 bool borrowSpace_;80 /**@}*/76 /**@name Data members */ 77 /**@{*/ 78 /** Just borrowing space */ 79 bool borrowSpace_; 80 /**@}*/ 81 81 }; 82 82 83 83 /* structure for C */ 84 84 typedef struct { 85 longDouble * diagonal_;86 longDouble * a;87 longDouble * work;88 int * rowsDropped;89 double doubleParameters_[1]; /* corresponds to 10 */90 int integerParameters_[2]; /* corresponds to 34, nThreads */91 int n;92 int numberBlocks;85 longDouble * diagonal_; 86 longDouble * a; 87 longDouble * work; 88 int * rowsDropped; 89 double doubleParameters_[1]; /* corresponds to 10 */ 90 int integerParameters_[2]; /* corresponds to 34, nThreads */ 91 int n; 92 int numberBlocks; 93 93 } ClpCholeskyDenseC; 94 94 95 95 extern "C" { 96 void ClpCholeskySpawn(void *);96 void ClpCholeskySpawn(void *); 97 97 } 98 98 /**Non leaf recursive factor */ … … 137 137 void 138 138 ClpCholeskyCtriRecLeaf(/*ClpCholeskyDenseC * thisStruct,*/ 139 longDouble * aTri, longDouble * aUnder,140 longDouble * diagonal, longDouble * work,141 int nUnder);139 longDouble * aTri, longDouble * aUnder, 140 longDouble * diagonal, longDouble * work, 141 int nUnder); 142 142 /**Leaf recursive rectangle triangle update */ 143 143 void 144 144 ClpCholeskyCrecTriLeaf(/*ClpCholeskyDenseC * thisStruct, */ 145 longDouble * aUnder, longDouble * aTri,146 /*longDouble * diagonal,*/ longDouble * work, int nUnder);145 longDouble * aUnder, longDouble * aTri, 146 /*longDouble * diagonal,*/ longDouble * work, int nUnder); 147 147 /** Leaf recursive rectangle rectangle update, 148 148 nUnder is number of rows in iBlock, … … 151 151 void 152 152 ClpCholeskyCrecRecLeaf(/*ClpCholeskyDenseC * thisStruct, */ 153 const longDouble * COIN_RESTRICT above,154 const longDouble * COIN_RESTRICT aUnder,155 longDouble * COIN_RESTRICT aOther,156 const longDouble * COIN_RESTRICT work,157 int nUnder);153 const longDouble * COIN_RESTRICT above, 154 const longDouble * COIN_RESTRICT aUnder, 155 longDouble * COIN_RESTRICT aOther, 156 const longDouble * COIN_RESTRICT work, 157 int nUnder); 158 158 #endif
Note: See TracChangeset
for help on using the changeset viewer.