xref: /petsc/src/mat/impls/sbaij/seq/cholmod/cholmodimpl.h (revision 009bbdc485cd9ad46be9940d3549e2dde9cdc322)
1 #if !defined(CHOLMODIMPL_H_)
2 #define CHOLMODIMPL_H_
3 
4 #include <petscsys.h>
5 
6 #if defined(PETSC_USE_COMPLEX)
7 #  define CHOLMOD_SCALAR_TYPE       CHOLMOD_COMPLEX
8 #else
9 #  define CHOLMOD_SCALAR_TYPE       CHOLMOD_REAL
10 #endif
11 
12 #if defined(PETSC_USE_64BIT_INDICES)
13 #  define CHOLMOD_INT_TYPE          CHOLMOD_LONG
14 #  define cholmod_X_start           cholmod_l_start
15 #  define cholmod_X_analyze         cholmod_l_analyze
16 #  define cholmod_X_analyze_p       cholmod_l_analyze_p
17 #  define cholmod_X_copy            cholmod_l_copy
18 #  define cholmod_X_factorize       cholmod_l_factorize
19 #  define cholmod_X_finish          cholmod_l_finish
20 #  define cholmod_X_free_factor     cholmod_l_free_factor
21 #  define cholmod_X_free_dense      cholmod_l_free_dense
22 #  define cholmod_X_resymbol        cholmod_l_resymbol
23 #  define cholmod_X_solve           cholmod_l_solve
24 #else
25 #  define CHOLMOD_INT_TYPE          CHOLMOD_INT
26 #  define cholmod_X_start           cholmod_start
27 #  define cholmod_X_analyze         cholmod_analyze
28 #  define cholmod_X_analyze_p       cholmod_analyze_p
29 #  define cholmod_X_copy            cholmod_copy
30 #  define cholmod_X_factorize       cholmod_factorize
31 #  define cholmod_X_finish          cholmod_finish
32 #  define cholmod_X_free_factor     cholmod_free_factor
33 #  define cholmod_X_free_dense      cholmod_free_dense
34 #  define cholmod_X_resymbol        cholmod_resymbol
35 #  define cholmod_X_solve           cholmod_solve
36 #endif
37 
38 #define UF_long long long
39 #define UF_long_max LONG_LONG_MAX
40 #define UF_long_id "%lld"
41 #undef I  /* complex.h defines I=_Complex_I, but cholmod_core.h uses I as a field member */
42 
43 EXTERN_C_BEGIN
44 #include <cholmod.h>
45 EXTERN_C_END
46 
47 typedef struct {
48   PetscErrorCode (*Wrap)(Mat,PetscBool ,cholmod_sparse*,PetscBool *);
49   PetscErrorCode (*Destroy)(Mat);
50   cholmod_sparse *matrix;
51   cholmod_factor *factor;
52   cholmod_common *common;
53   PetscBool      pack;
54 } Mat_CHOLMOD;
55 
56 extern PetscErrorCode  CholmodStart(Mat);
57 extern PetscErrorCode  MatView_CHOLMOD(Mat,PetscViewer);
58 extern PetscErrorCode  MatCholeskyFactorSymbolic_CHOLMOD(Mat,Mat,IS,const MatFactorInfo*);
59 extern PetscErrorCode  MatDestroy_CHOLMOD(Mat);
60 
61 #endif /* CHOLMODIMPL_H_ */
62