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