xref: /libCEED/examples/fluids/include/mat-ceed.h (revision c8564c30f55def119ddd4dd977f1131cd364f231)
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