• Main Page
  • Classes
  • Files
  • File List
  • File Members

/build/buildd/clp-1.11.1/Clp/src/ClpCholeskyDense.hpp

Go to the documentation of this file.
00001 /* $Id: ClpCholeskyDense.hpp 1458 2009-11-05 12:34:07Z forrest $ */
00002 /* Copyright (C) 2003, International Business Machines Corporation 
00003    and others.  All Rights Reserved. */
00004 #ifndef ClpCholeskyDense_H
00005 #define ClpCholeskyDense_H
00006 
00007 #include "ClpCholeskyBase.hpp"
00008 class ClpMatrixBase;
00009 
00010 class ClpCholeskyDense : public ClpCholeskyBase {
00011   
00012 public:
00017   virtual int order(ClpInterior * model) ;
00022   virtual int symbolic();
00025   virtual int factorize(const CoinWorkDouble * diagonal, int * rowsDropped) ;
00027   virtual void solve (CoinWorkDouble * region) ;
00035    int reserveSpace(const ClpCholeskyBase * factor, int numberRows) ;
00037    CoinBigIndex space( int numberRows) const;
00039   void factorizePart2(int * rowsDropped) ;
00041   void factorizePart3(int * rowsDropped) ;
00043   void solveF1(longDouble * a,int n,CoinWorkDouble * region);
00044   void solveF2(longDouble * a,int n,CoinWorkDouble * region,CoinWorkDouble * region2);
00046   void solveB1(longDouble * a,int n,CoinWorkDouble * region);
00047   void solveB2(longDouble * a,int n,CoinWorkDouble * region,CoinWorkDouble * region2);
00048   int bNumber(const longDouble * array,int &, int&);
00050   inline longDouble * aMatrix() const
00051   { return sparseFactor_;}
00053   inline longDouble * diagonal() const
00054   { return diagonal_;}
00061   ClpCholeskyDense();
00063   virtual ~ClpCholeskyDense();
00065   ClpCholeskyDense(const ClpCholeskyDense&);
00067   ClpCholeskyDense& operator=(const ClpCholeskyDense&);
00069   virtual ClpCholeskyBase * clone() const ;
00073 private:
00077   bool borrowSpace_;
00079 };
00080 
00081 /* structure for C */
00082 typedef struct{
00083   longDouble * diagonal_;
00084   longDouble * a;
00085   longDouble * work;
00086   int * rowsDropped;
00087   double doubleParameters_[1]; /* corresponds to 10 */
00088   int integerParameters_[2]; /* corresponds to 34, nThreads */
00089   int n;
00090   int numberBlocks;
00091 } ClpCholeskyDenseC;
00092 
00093 extern "C" {
00094   void ClpCholeskySpawn(void *);
00095 }
00097   void 
00098   ClpCholeskyCfactor(ClpCholeskyDenseC * thisStruct, 
00099                      longDouble * a, int n, int numberBlocks,
00100                      longDouble * diagonal, longDouble * work, int * rowsDropped);
00101   
00103   void 
00104   ClpCholeskyCtriRec(ClpCholeskyDenseC * thisStruct, 
00105                      longDouble * aTri, int nThis, 
00106                      longDouble * aUnder, longDouble * diagonal, 
00107                      longDouble * work,
00108                      int nLeft, int iBlock, int jBlock,
00109                      int numberBlocks);
00111   void 
00112   ClpCholeskyCrecTri(ClpCholeskyDenseC * thisStruct, 
00113                      longDouble * aUnder, int nTri, int nDo,
00114                      int iBlock, int jBlock,longDouble * aTri,
00115                      longDouble * diagonal, longDouble * work, 
00116                      int numberBlocks);
00121   void 
00122   ClpCholeskyCrecRec(ClpCholeskyDenseC * thisStruct, 
00123                      longDouble * above, int nUnder, int nUnderK,
00124                      int nDo, longDouble * aUnder, longDouble *aOther,
00125                      longDouble * work,
00126                      int iBlock, int jBlock,
00127                      int numberBlocks);
00129   void 
00130   ClpCholeskyCfactorLeaf(ClpCholeskyDenseC * thisStruct, 
00131                          longDouble * a, int n, 
00132                          longDouble * diagonal, longDouble * work, 
00133                          int * rowsDropped);
00135   void 
00136   ClpCholeskyCtriRecLeaf(/*ClpCholeskyDenseC * thisStruct,*/ 
00137                          longDouble * aTri, longDouble * aUnder,
00138                          longDouble * diagonal, longDouble * work,
00139                          int nUnder);
00141   void 
00142   ClpCholeskyCrecTriLeaf(/*ClpCholeskyDenseC * thisStruct, */
00143                          longDouble * aUnder, longDouble * aTri, 
00144                          /*longDouble * diagonal,*/ longDouble * work, int nUnder);
00149   void 
00150   ClpCholeskyCrecRecLeaf(/*ClpCholeskyDenseC * thisStruct, */
00151                          const longDouble * COIN_RESTRICT above, 
00152                          const longDouble * COIN_RESTRICT aUnder, 
00153                          longDouble * COIN_RESTRICT aOther, 
00154                          const longDouble * COIN_RESTRICT work,
00155                          int nUnder);
00156 #endif

Generated on Fri Aug 20 2010 06:29:28 by  doxygen 1.7.1