xref: /petsc/src/mat/impls/sbaij/seq/cholmod/cholmodimpl.h (revision 519f805a543c2a7f195bcba21173bb2cdfadb956)
1*519f805aSKarl Rupp #if !defined(CHOLMODIMPL_H_)
2586621ddSJed Brown #define CHOLMODIMPL_H_
3586621ddSJed Brown 
4586621ddSJed Brown #include <petscsys.h>
5586621ddSJed Brown 
6586621ddSJed Brown #if defined(PETSC_USE_COMPLEX)
7586621ddSJed Brown #  define CHOLMOD_SCALAR_TYPE       CHOLMOD_COMPLEX
8586621ddSJed Brown #else
9586621ddSJed Brown #  define CHOLMOD_SCALAR_TYPE       CHOLMOD_REAL
10586621ddSJed Brown #endif
11586621ddSJed Brown 
12586621ddSJed Brown #if defined(PETSC_USE_64BIT_INDICES)
13586621ddSJed Brown #  define CHOLMOD_INT_TYPE          CHOLMOD_LONG
14586621ddSJed Brown #  define cholmod_X_start           cholmod_l_start
15586621ddSJed Brown #  define cholmod_X_analyze         cholmod_l_analyze
16586621ddSJed Brown #  define cholmod_X_analyze_p       cholmod_l_analyze_p
17586621ddSJed Brown #  define cholmod_X_copy            cholmod_l_copy
18586621ddSJed Brown #  define cholmod_X_factorize       cholmod_l_factorize
19586621ddSJed Brown #  define cholmod_X_finish          cholmod_l_finish
20586621ddSJed Brown #  define cholmod_X_free_factor     cholmod_l_free_factor
21586621ddSJed Brown #  define cholmod_X_free_dense      cholmod_l_free_dense
22586621ddSJed Brown #  define cholmod_X_resymbol        cholmod_l_resymbol
23586621ddSJed Brown #  define cholmod_X_solve           cholmod_l_solve
24586621ddSJed Brown #else
25586621ddSJed Brown #  define CHOLMOD_INT_TYPE          CHOLMOD_INT
26586621ddSJed Brown #  define cholmod_X_start           cholmod_start
27586621ddSJed Brown #  define cholmod_X_analyze         cholmod_analyze
28586621ddSJed Brown #  define cholmod_X_analyze_p       cholmod_analyze_p
29586621ddSJed Brown #  define cholmod_X_copy            cholmod_copy
30586621ddSJed Brown #  define cholmod_X_factorize       cholmod_factorize
31586621ddSJed Brown #  define cholmod_X_finish          cholmod_finish
32586621ddSJed Brown #  define cholmod_X_free_factor     cholmod_free_factor
33586621ddSJed Brown #  define cholmod_X_free_dense      cholmod_free_dense
34586621ddSJed Brown #  define cholmod_X_resymbol        cholmod_resymbol
35586621ddSJed Brown #  define cholmod_X_solve           cholmod_solve
36586621ddSJed Brown #endif
37586621ddSJed Brown 
38586621ddSJed Brown #define UF_long long long
39586621ddSJed Brown #define UF_long_max LONG_LONG_MAX
40586621ddSJed Brown #define UF_long_id "%lld"
41586621ddSJed Brown #undef I  /* complex.h defines I=_Complex_I, but cholmod_core.h uses I as a field member */
42586621ddSJed Brown 
43586621ddSJed Brown EXTERN_C_BEGIN
44586621ddSJed Brown #include <cholmod.h>
45586621ddSJed Brown EXTERN_C_END
46586621ddSJed Brown 
47586621ddSJed Brown typedef struct {
48ace3abfcSBarry Smith   PetscErrorCode (*Wrap)(Mat,PetscBool ,cholmod_sparse*,PetscBool *);
49586621ddSJed Brown   PetscErrorCode (*Destroy)(Mat);
50586621ddSJed Brown   cholmod_sparse *matrix;
51586621ddSJed Brown   cholmod_factor *factor;
52586621ddSJed Brown   cholmod_common *common;
53ace3abfcSBarry Smith   PetscBool      pack;
54586621ddSJed Brown } Mat_CHOLMOD;
55586621ddSJed Brown 
567087cfbeSBarry Smith extern PetscErrorCode  CholmodStart(Mat);
577087cfbeSBarry Smith extern PetscErrorCode  MatView_CHOLMOD(Mat,PetscViewer);
587087cfbeSBarry Smith extern PetscErrorCode  MatCholeskyFactorSymbolic_CHOLMOD(Mat,Mat,IS,const MatFactorInfo*);
597087cfbeSBarry Smith extern PetscErrorCode  MatDestroy_CHOLMOD(Mat);
60586621ddSJed Brown 
61586621ddSJed Brown #endif /* CHOLMODIMPL_H_ */
62