1 | /* $Id: ClpCholeskyPardiso.hpp 1665 2011-01-04 17:55:54Z lou $ */ |
---|

2 | // Copyright (C) 2003, International Business Machines |
---|

3 | // Corporation and others. All Rights Reserved. |
---|

4 | // This code is licensed under the terms of the Eclipse Public License (EPL). |
---|

5 | |
---|

6 | #ifndef ClpCholeskyPardiso_H |
---|

7 | #define ClpCholeskyPardiso_H |
---|

8 | #ifdef PARDISO_BARRIER |
---|

9 | |
---|

10 | #include "ClpCholeskyBase.hpp" |
---|

11 | #include "mkl_pardiso.h" |
---|

12 | #include "mkl_types.h" |
---|

13 | |
---|

14 | class ClpMatrixBase; |
---|

15 | class ClpCholeskyDense; |
---|

16 | |
---|

17 | /** Pardiso class for Clp Cholesky factorization |
---|

18 | |
---|

19 | */ |
---|

20 | class ClpCholeskyPardiso : public ClpCholeskyBase { |
---|

21 | |
---|

22 | public: |
---|

23 | /**@name Virtual methods that the derived classes provides */ |
---|

24 | //@{ |
---|

25 | /** Orders rows and saves pointer to matrix.and model. |
---|

26 | Returns non-zero if not enough memory */ |
---|

27 | virtual int order(ClpInterior *model); |
---|

28 | /** Does Symbolic factorization given permutation. |
---|

29 | This is called immediately after order. If user provides this then |
---|

30 | user must provide factorize and solve. Otherwise the default factorization is used |
---|

31 | returns non-zero if not enough memory */ |
---|

32 | virtual int symbolic(); |
---|

33 | /** Factorize - filling in rowsDropped and returning number dropped. |
---|

34 | If return code negative then out of memory */ |
---|

35 | virtual int factorize(const double *diagonal, int *rowsDropped); |
---|

36 | /** Uses factorization to solve. */ |
---|

37 | virtual void solve(double *region); |
---|

38 | //@} |
---|

39 | |
---|

40 | /**@name Constructors, destructor */ |
---|

41 | //@{ |
---|

42 | /** Constructor which has dense columns activated. |
---|

43 | Default is off. */ |
---|

44 | ClpCholeskyPardiso(int denseThreshold = -1); |
---|

45 | /** Destructor */ |
---|

46 | virtual ~ClpCholeskyPardiso(); |
---|

47 | // Copy |
---|

48 | ClpCholeskyPardiso(const ClpCholeskyPardiso &); |
---|

49 | // Assignment |
---|

50 | ClpCholeskyPardiso &operator=(const ClpCholeskyPardiso &); |
---|

51 | /// Clone |
---|

52 | virtual ClpCholeskyBase *clone() const; |
---|

53 | //@} |
---|

54 | |
---|

55 | private: |
---|

56 | /**@name Data members */ |
---|

57 | //@{ |
---|

58 | int lastNumberDropped_; |
---|

59 | //MKL_INT iparm_[64]; |
---|

60 | //@} |
---|

61 | }; |
---|

62 | |
---|

63 | #endif |
---|

64 | #endif |
---|

65 | |
---|

66 | /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2 |
---|

67 | */ |
---|