xref: /libCEED/examples/petsc/include/matops.h (revision 98285ab464d104dd6040959f61a83e9969073ceb)
1*98285ab4SZach Atkins // Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors.
2*98285ab4SZach Atkins // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3*98285ab4SZach Atkins //
4*98285ab4SZach Atkins // SPDX-License-Identifier: BSD-2-Clause
5*98285ab4SZach Atkins //
6*98285ab4SZach Atkins // This file is part of CEED:  http://github.com/ceed
7*98285ab4SZach Atkins 
8*98285ab4SZach Atkins /// @file
9*98285ab4SZach Atkins /// Operations for PETSc MatShell
10*98285ab4SZach Atkins 
11b7c563b6SJeremy L Thompson #ifndef libceed_petsc_examples_matops_h
12b7c563b6SJeremy L Thompson #define libceed_petsc_examples_matops_h
13e83e87a5Sjeremylt 
14e83e87a5Sjeremylt #include <ceed.h>
15e83e87a5Sjeremylt #include <petsc.h>
16e83e87a5Sjeremylt 
17e83e87a5Sjeremylt #include "structs.h"
18e83e87a5Sjeremylt 
192b730f8bSJeremy L Thompson PetscErrorCode SetupApplyOperatorCtx(MPI_Comm comm, DM dm, Ceed ceed, CeedData ceed_data, Vec X_loc, OperatorApplyContext op_apply_ctx);
202b730f8bSJeremy L Thompson PetscErrorCode SetupErrorOperatorCtx(MPI_Comm comm, DM dm, Ceed ceed, CeedData ceed_data, Vec X_loc, CeedOperator op_error,
216c88e6a2Srezgarshakeri                                      OperatorApplyContext op_error_ctx);
22e83e87a5Sjeremylt PetscErrorCode MatGetDiag(Mat A, Vec D);
23d4d45553Srezgarshakeri PetscErrorCode ApplyLocal_Ceed(Vec X, Vec Y, OperatorApplyContext op_apply_ctx);
24e83e87a5Sjeremylt PetscErrorCode MatMult_Ceed(Mat A, Vec X, Vec Y);
25e83e87a5Sjeremylt PetscErrorCode FormResidual_Ceed(SNES snes, Vec X, Vec Y, void *ctx);
26e83e87a5Sjeremylt PetscErrorCode MatMult_Prolong(Mat A, Vec X, Vec Y);
27e83e87a5Sjeremylt PetscErrorCode MatMult_Restrict(Mat A, Vec X, Vec Y);
282b730f8bSJeremy L Thompson PetscErrorCode ComputeL2Error(Vec X, PetscScalar *l2_error, OperatorApplyContext op_error_ctx);
29e83e87a5Sjeremylt 
30b7c563b6SJeremy L Thompson #endif  // libceed_petsc_examples_matops_h
31