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