1*c8564c30SJames Wright #ifndef MAT_CEED_H 2*c8564c30SJames Wright #define MAT_CEED_H 3*c8564c30SJames Wright 4*c8564c30SJames Wright #include <ceed.h> 5*c8564c30SJames Wright #include <petscdm.h> 6*c8564c30SJames Wright #include <petscmat.h> 7*c8564c30SJames Wright 8*c8564c30SJames Wright #define MATCEED "ceed" 9*c8564c30SJames Wright 10*c8564c30SJames Wright #if defined(__clang_analyzer__) 11*c8564c30SJames Wright #define MATCEED_EXTERN extern 12*c8564c30SJames Wright #elif defined(__cplusplus) 13*c8564c30SJames Wright #define MATCEED_EXTERN extern "C" 14*c8564c30SJames Wright #else 15*c8564c30SJames Wright #define MATCEED_EXTERN extern 16*c8564c30SJames Wright #endif 17*c8564c30SJames Wright 18*c8564c30SJames Wright #if defined(__clang_analyzer__) 19*c8564c30SJames Wright #define MATCEED_INTERN 20*c8564c30SJames Wright #else 21*c8564c30SJames Wright #define MATCEED_INTERN MATCEED_EXTERN __attribute__((visibility("hidden"))) 22*c8564c30SJames Wright #endif 23*c8564c30SJames Wright 24*c8564c30SJames Wright // Context data 25*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedCreate(DM dm_x, DM dm_y, CeedOperator op_mult, CeedOperator op_mult_transpose, Mat *mat); 26*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedCopy(Mat mat_ceed, Mat mat_other); 27*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedAssembleCOO(Mat mat_ceed, Mat mat_coo); 28*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetContext(Mat mat, PetscErrorCode (*f)(void *), void *ctx); 29*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetContext(Mat mat, void *ctx); 30*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetInnerMatType(Mat mat, MatType type); 31*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetInnerMatType(Mat mat, MatType *type); 32*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetOperation(Mat mat, MatOperation op, void (*g)(void)); 33*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetLocalVectors(Mat mat, Vec X_loc, Vec Y_loc_transpose); 34*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetLocalVectors(Mat mat, Vec *X_loc, Vec *Y_loc_transpose); 35*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedRestoreLocalVectors(Mat mat, Vec *X_loc, Vec *Y_loc_transpose); 36*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetCeedOperators(Mat mat, CeedOperator *op_mult, CeedOperator *op_mult_transpose); 37*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedRestoreCeedOperators(Mat mat, CeedOperator *op_mult, CeedOperator *op_mult_transpose); 38*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetLogEvents(Mat mat, PetscLogEvent log_event_mult, PetscLogEvent log_event_mult_transpose); 39*c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetLogEvents(Mat mat, PetscLogEvent *log_event_mult, PetscLogEvent *log_event_mult_transpose); 40*c8564c30SJames Wright 41*c8564c30SJames Wright #endif // MAT_CEED_H 42