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