xref: /libCEED/examples/fluids/include/mat-ceed.h (revision 24a65d3da2f623912f26b42c0b9ba6f37de25307)
1*24a65d3dSJeremy L Thompson // Copyright (c) 2017-2023, Lawrence Livermore National Security, LLC and other CEED contributors.
2*24a65d3dSJeremy L Thompson // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3*24a65d3dSJeremy L Thompson //
4*24a65d3dSJeremy L Thompson // SPDX-License-Identifier: BSD-2-Clause
5*24a65d3dSJeremy L Thompson //
6*24a65d3dSJeremy L Thompson // This file is part of CEED:  http://github.com/ceed
7*24a65d3dSJeremy L Thompson #pragma once
8c8564c30SJames Wright 
9c8564c30SJames Wright #include <ceed.h>
10c8564c30SJames Wright #include <petscdm.h>
11c8564c30SJames Wright #include <petscmat.h>
12c8564c30SJames Wright 
13c8564c30SJames Wright #define MATCEED "ceed"
14c8564c30SJames Wright 
15c8564c30SJames Wright #if defined(__clang_analyzer__)
16c8564c30SJames Wright #define MATCEED_EXTERN extern
17c8564c30SJames Wright #elif defined(__cplusplus)
18c8564c30SJames Wright #define MATCEED_EXTERN extern "C"
19c8564c30SJames Wright #else
20c8564c30SJames Wright #define MATCEED_EXTERN extern
21c8564c30SJames Wright #endif
22c8564c30SJames Wright 
23c8564c30SJames Wright #if defined(__clang_analyzer__)
24c8564c30SJames Wright #define MATCEED_INTERN
25c8564c30SJames Wright #else
26c8564c30SJames Wright #define MATCEED_INTERN MATCEED_EXTERN __attribute__((visibility("hidden")))
27c8564c30SJames Wright #endif
28c8564c30SJames Wright 
29c8564c30SJames Wright // Context data
30c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedCreate(DM dm_x, DM dm_y, CeedOperator op_mult, CeedOperator op_mult_transpose, Mat *mat);
31c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedCopy(Mat mat_ceed, Mat mat_other);
32c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedAssembleCOO(Mat mat_ceed, Mat mat_coo);
33c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetContext(Mat mat, PetscErrorCode (*f)(void *), void *ctx);
34c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetContext(Mat mat, void *ctx);
35c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetInnerMatType(Mat mat, MatType type);
36c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetInnerMatType(Mat mat, MatType *type);
37c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetOperation(Mat mat, MatOperation op, void (*g)(void));
38c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetLocalVectors(Mat mat, Vec X_loc, Vec Y_loc_transpose);
39c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetLocalVectors(Mat mat, Vec *X_loc, Vec *Y_loc_transpose);
40c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedRestoreLocalVectors(Mat mat, Vec *X_loc, Vec *Y_loc_transpose);
41c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetCeedOperators(Mat mat, CeedOperator *op_mult, CeedOperator *op_mult_transpose);
42c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedRestoreCeedOperators(Mat mat, CeedOperator *op_mult, CeedOperator *op_mult_transpose);
43c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedSetLogEvents(Mat mat, PetscLogEvent log_event_mult, PetscLogEvent log_event_mult_transpose);
44c8564c30SJames Wright MATCEED_INTERN PetscErrorCode MatCeedGetLogEvents(Mat mat, PetscLogEvent *log_event_mult, PetscLogEvent *log_event_mult_transpose);
45