xref: /honee/include/mat-ceed.h (revision 58600ac3b26c12c428243f1945a2fbe2d8f3ffe2)
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