xref: /libCEED/examples/petsc/include/matops.h (revision 6c88e6a2c47a72cd5c3efacc26a364b9cb7d40db)
1b7c563b6SJeremy L Thompson #ifndef libceed_petsc_examples_matops_h
2b7c563b6SJeremy L Thompson #define libceed_petsc_examples_matops_h
3e83e87a5Sjeremylt 
4e83e87a5Sjeremylt #include <ceed.h>
5e83e87a5Sjeremylt #include <petsc.h>
6e83e87a5Sjeremylt #include <petscdmplex.h>
7e83e87a5Sjeremylt 
8e83e87a5Sjeremylt #include "structs.h"
9e83e87a5Sjeremylt 
10*6c88e6a2Srezgarshakeri PetscErrorCode SetupApplyOperatorCtx(MPI_Comm comm, DM dm, Ceed ceed,
11*6c88e6a2Srezgarshakeri                                      CeedData ceed_data, Vec X_loc,
12*6c88e6a2Srezgarshakeri                                      OperatorApplyContext op_apply_ctx);
13*6c88e6a2Srezgarshakeri PetscErrorCode SetupErrorOperatorCtx(MPI_Comm comm, DM dm, Ceed ceed,
14*6c88e6a2Srezgarshakeri                                      CeedData ceed_data, Vec X_loc, CeedOperator op_error,
15*6c88e6a2Srezgarshakeri                                      OperatorApplyContext op_error_ctx);
16e83e87a5Sjeremylt PetscErrorCode MatGetDiag(Mat A, Vec D);
17d4d45553Srezgarshakeri PetscErrorCode ApplyLocal_Ceed(Vec X, Vec Y, OperatorApplyContext op_apply_ctx);
18e83e87a5Sjeremylt PetscErrorCode MatMult_Ceed(Mat A, Vec X, Vec Y);
19e83e87a5Sjeremylt PetscErrorCode FormResidual_Ceed(SNES snes, Vec X, Vec Y, void *ctx);
20e83e87a5Sjeremylt PetscErrorCode MatMult_Prolong(Mat A, Vec X, Vec Y);
21e83e87a5Sjeremylt PetscErrorCode MatMult_Restrict(Mat A, Vec X, Vec Y);
22*6c88e6a2Srezgarshakeri PetscErrorCode ComputeErrorMax(OperatorApplyContext op_error_ctx,
239b072555Sjeremylt                                Vec X, CeedVector target, PetscReal *max_error);
24e83e87a5Sjeremylt 
25b7c563b6SJeremy L Thompson #endif // libceed_petsc_examples_matops_h
26