forked from coin-or/Clp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ClpCholeskyPardiso.hpp
66 lines (56 loc) · 1.87 KB
/
ClpCholeskyPardiso.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Copyright (C) 2003, International Business Machines
// Corporation and others. All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).
#ifndef ClpCholeskyPardiso_H
#define ClpCholeskyPardiso_H
#ifdef PARDISO_BARRIER
#include "ClpCholeskyBase.hpp"
#include "mkl_pardiso.h"
#include "mkl_types.h"
class ClpMatrixBase;
class ClpCholeskyDense;
/** Pardiso class for Clp Cholesky factorization
*/
class CLPLIB_EXPORT ClpCholeskyPardiso : public ClpCholeskyBase {
public:
/**@name Virtual methods that the derived classes provides */
//@{
/** Orders rows and saves pointer to matrix.and model.
Returns non-zero if not enough memory */
virtual int order(ClpInterior *model);
/** Does Symbolic factorization given permutation.
This is called immediately after order. If user provides this then
user must provide factorize and solve. Otherwise the default factorization is used
returns non-zero if not enough memory */
virtual int symbolic();
/** Factorize - filling in rowsDropped and returning number dropped.
If return code negative then out of memory */
virtual int factorize(const double *diagonal, int *rowsDropped);
/** Uses factorization to solve. */
virtual void solve(double *region);
//@}
/**@name Constructors, destructor */
//@{
/** Constructor which has dense columns activated.
Default is off. */
ClpCholeskyPardiso(int denseThreshold = -1);
/** Destructor */
virtual ~ClpCholeskyPardiso();
// Copy
ClpCholeskyPardiso(const ClpCholeskyPardiso &);
// Assignment
ClpCholeskyPardiso &operator=(const ClpCholeskyPardiso &);
/// Clone
virtual ClpCholeskyBase *clone() const;
//@}
private:
/**@name Data members */
//@{
int lastNumberDropped_;
//MKL_INT iparm_[64];
//@}
};
#endif
#endif
/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
*/