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