1 #ifndef libceed_petsc_examples_matops_h 2 #define libceed_petsc_examples_matops_h 3 4 #include <ceed.h> 5 #include <petsc.h> 6 #include <petscdmplex.h> 7 8 #include "structs.h" 9 10 PetscErrorCode SetupApplyOperatorCtx(MPI_Comm comm, DM dm, Ceed ceed, 11 CeedData ceed_data, Vec X_loc, 12 OperatorApplyContext op_apply_ctx); 13 PetscErrorCode SetupErrorOperatorCtx(MPI_Comm comm, DM dm, Ceed ceed, 14 CeedData ceed_data, Vec X_loc, CeedOperator op_error, 15 OperatorApplyContext op_error_ctx); 16 PetscErrorCode MatGetDiag(Mat A, Vec D); 17 PetscErrorCode ApplyLocal_Ceed(Vec X, Vec Y, OperatorApplyContext op_apply_ctx); 18 PetscErrorCode MatMult_Ceed(Mat A, Vec X, Vec Y); 19 PetscErrorCode FormResidual_Ceed(SNES snes, Vec X, Vec Y, void *ctx); 20 PetscErrorCode MatMult_Prolong(Mat A, Vec X, Vec Y); 21 PetscErrorCode MatMult_Restrict(Mat A, Vec X, Vec Y); 22 PetscErrorCode ComputeL2Error(Vec X, PetscScalar *l2_error, 23 OperatorApplyContext op_error_ctx); 24 25 #endif // libceed_petsc_examples_matops_h 26