Program listing for file numerics/src/tools/NumericsMatrix_internal.h#
Return to documentation for this file
1#ifndef NumericsMatrix_internal_H
2#define NumericsMatrix_internal_H
3
4
5
6#include "SiconosConfig.h"
7#include "NumericsMatrix.h"
8
9#if defined(__cplusplus) && !defined(BUILD_AS_CPP)
10extern "C"
11{
12#endif
13
14
15 void NM_internalData_free(NumericsMatrix* m);
16
17
18#ifdef WITH_UMFPACK
19#include <umfpack.h>
20
21
22#ifdef SICONOS_INT64
23#define UMFPACKPREFIX(X) umfpack_dl ## X
24#else
25#define UMFPACKPREFIX(X) umfpack_di ## X
26#endif
27
28#define UMFPACK_FN(X) UMFPACKPREFIX(_ ## X)
29
30
31typedef struct {
32 void* symbolic;
33 void* numeric;
34 double control[UMFPACK_CONTROL];
35 double info[UMFPACK_INFO];
36 CS_INT* wi;
37 double* wd;
38 double* x;
39} NM_UMFPACK_WS;
40
41
42 NM_UMFPACK_WS* NM_UMFPACK_ws(NumericsMatrix* A);
43
44
45 void NM_UMFPACK_free(void* p);
46
47
48 void NM_UMFPACK_extra_display(NM_UMFPACK_WS* umfpack_ws);
49
50
51 NM_UMFPACK_WS* NM_UMFPACK_factorize(NumericsMatrix* A);
52
53#endif
54
55#ifdef WITH_SUPERLU
56
57typedef struct NM_SuperLU_WS NM_SuperLU_WS;
58
59
60 NM_SuperLU_WS* NM_SuperLU_ws(NumericsMatrix* A);
61
62
63 void NM_SuperLU_free(void* p);
64
65
66 void NM_SuperLU_extra_display(NM_SuperLU_WS* superlu_ws);
67
68
69 NM_SuperLU_WS* NM_SuperLU_factorize(NumericsMatrix* A);
70
71
72 int NM_SuperLU_solve(NumericsMatrix* A, double* b, NM_SuperLU_WS* superlu_ws);
73
74
75#endif
76
77
78#ifdef WITH_SUPERLU_MT
79
80typedef struct NM_SuperLU_MT_WS NM_SuperLU_MT_WS;
81
82
83 NM_SuperLU_MT_WS* NM_SuperLU_MT_ws(NumericsMatrix* A);
84
85
86 void NM_SuperLU_MT_free(void* p);
87
88
89 void NM_SuperLU_MT_extra_display(NM_SuperLU_MT_WS* superlu_mt_ws);
90
91
92 NM_SuperLU_MT_WS* NM_SuperLU_MT_factorize(NumericsMatrix* A);
93
94
95 int NM_SuperLU_MT_solve(NumericsMatrix* A, double* b, NM_SuperLU_MT_WS* superlu_mt_ws);
96
97
98#endif
99
100
101#ifdef WITH_MKL_PARDISO
102
103typedef struct NM_MKL_pardiso_WS NM_MKL_pardiso_WS;
104
105
106 NM_MKL_pardiso_WS* NM_MKL_pardiso_ws(NumericsMatrix* A);
107
108
109 void NM_MKL_pardiso_free(void* p);
110
111
112 void NM_MKL_pardiso_extra_display(NM_MKL_pardiso_WS* MKL_pardiso_ws);
113
114
115 NM_MKL_pardiso_WS* NM_MKL_pardiso_factorize(NumericsMatrix* A);
116
117
118 int NM_MKL_pardiso_solve(NumericsMatrix* A, double* b, NM_MKL_pardiso_WS* superlu_ws);
119
120
121#endif
122
123#if defined(__cplusplus) && !defined(BUILD_AS_CPP)
124}
125#endif
126
127#endif