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