- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# /home/coin/SVN-release/Alps-1.2.1/Clp/src/ClpCholeskyDense.hpp

Go to the documentation of this file.

    00001 /* $Id: ClpCholeskyDense.hpp 1525 2010-02-26 17:27:59Z mjs $ */
    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_;
    00052      }
    00054      inline longDouble * diagonal() const {
    00055           return diagonal_;
    00056      }
    00063      ClpCholeskyDense();
    00065      virtual ~ClpCholeskyDense();
    00067      ClpCholeskyDense(const ClpCholeskyDense&);
    00069      ClpCholeskyDense& operator=(const ClpCholeskyDense&);
    00071      virtual ClpCholeskyBase * clone() const ;
    00075 private:
    00079      bool borrowSpace_;
    00081 };
    00082
    00083 /* structure for C */
    00084 typedef struct {
    00085      longDouble * diagonal_;
    00086      longDouble * a;
    00087      longDouble * work;
    00088      int * rowsDropped;
    00089      double doubleParameters_[1]; /* corresponds to 10 */
    00090      int integerParameters_[2]; /* corresponds to 34, nThreads */
    00091      int n;
    00092      int numberBlocks;
    00093 } ClpCholeskyDenseC;
    00094
    00095 extern "C" {
    00096      void ClpCholeskySpawn(void *);
    00097 }
    00099 void
    00100 ClpCholeskyCfactor(ClpCholeskyDenseC * thisStruct,
    00101                    longDouble * a, int n, int numberBlocks,
    00102                    longDouble * diagonal, longDouble * work, int * rowsDropped);
    00103
    00105 void
    00106 ClpCholeskyCtriRec(ClpCholeskyDenseC * thisStruct,
    00107                    longDouble * aTri, int nThis,
    00108                    longDouble * aUnder, longDouble * diagonal,
    00109                    longDouble * work,
    00110                    int nLeft, int iBlock, int jBlock,
    00111                    int numberBlocks);
    00113 void
    00114 ClpCholeskyCrecTri(ClpCholeskyDenseC * thisStruct,
    00115                    longDouble * aUnder, int nTri, int nDo,
    00116                    int iBlock, int jBlock, longDouble * aTri,
    00117                    longDouble * diagonal, longDouble * work,
    00118                    int numberBlocks);
    00123 void
    00124 ClpCholeskyCrecRec(ClpCholeskyDenseC * thisStruct,
    00125                    longDouble * above, int nUnder, int nUnderK,
    00126                    int nDo, longDouble * aUnder, longDouble *aOther,
    00127                    longDouble * work,
    00128                    int iBlock, int jBlock,
    00129                    int numberBlocks);
    00131 void
    00132 ClpCholeskyCfactorLeaf(ClpCholeskyDenseC * thisStruct,
    00133                        longDouble * a, int n,
    00134                        longDouble * diagonal, longDouble * work,
    00135                        int * rowsDropped);
    00137 void
    00138 ClpCholeskyCtriRecLeaf(/*ClpCholeskyDenseC * thisStruct,*/
    00139      longDouble * aTri, longDouble * aUnder,
    00140      longDouble * diagonal, longDouble * work,
    00141      int nUnder);
    00143 void
    00144 ClpCholeskyCrecTriLeaf(/*ClpCholeskyDenseC * thisStruct, */
    00145      longDouble * aUnder, longDouble * aTri,
    00146      /*longDouble * diagonal,*/ longDouble * work, int nUnder);
    00151 void
    00152 ClpCholeskyCrecRecLeaf(/*ClpCholeskyDenseC * thisStruct, */
    00153      const longDouble * COIN_RESTRICT above,
    00154      const longDouble * COIN_RESTRICT aUnder,
    00155      longDouble * COIN_RESTRICT aOther,
    00156      const longDouble * COIN_RESTRICT work,
    00157      int nUnder);
    00158 #endif