Program listing for file numerics/src/tools/NumericsMatrix_internal.h#

  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