xref: /libCEED/examples/petsc/include/matops.h (revision 24a65d3da2f623912f26b42c0b9ba6f37de25307)
198285ab4SZach Atkins // Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors.
298285ab4SZach Atkins // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
398285ab4SZach Atkins //
498285ab4SZach Atkins // SPDX-License-Identifier: BSD-2-Clause
598285ab4SZach Atkins //
698285ab4SZach Atkins // This file is part of CEED:  http://github.com/ceed
798285ab4SZach Atkins 
898285ab4SZach Atkins /// @file
998285ab4SZach Atkins /// Operations for PETSc MatShell
10*24a65d3dSJeremy L Thompson #pragma once
11e83e87a5Sjeremylt 
12e83e87a5Sjeremylt #include <ceed.h>
13e83e87a5Sjeremylt #include <petsc.h>
14e83e87a5Sjeremylt 
15e83e87a5Sjeremylt #include "structs.h"
16e83e87a5Sjeremylt 
172b730f8bSJeremy L Thompson PetscErrorCode SetupApplyOperatorCtx(MPI_Comm comm, DM dm, Ceed ceed, CeedData ceed_data, Vec X_loc, OperatorApplyContext op_apply_ctx);
182b730f8bSJeremy L Thompson PetscErrorCode SetupErrorOperatorCtx(MPI_Comm comm, DM dm, Ceed ceed, CeedData ceed_data, Vec X_loc, CeedOperator op_error,
196c88e6a2Srezgarshakeri                                      OperatorApplyContext op_error_ctx);
20e83e87a5Sjeremylt PetscErrorCode MatGetDiag(Mat A, Vec D);
21d4d45553Srezgarshakeri PetscErrorCode ApplyLocal_Ceed(Vec X, Vec Y, OperatorApplyContext op_apply_ctx);
22e83e87a5Sjeremylt PetscErrorCode MatMult_Ceed(Mat A, Vec X, Vec Y);
23e83e87a5Sjeremylt PetscErrorCode FormResidual_Ceed(SNES snes, Vec X, Vec Y, void *ctx);
24e83e87a5Sjeremylt PetscErrorCode MatMult_Prolong(Mat A, Vec X, Vec Y);
25e83e87a5Sjeremylt PetscErrorCode MatMult_Restrict(Mat A, Vec X, Vec Y);
262b730f8bSJeremy L Thompson PetscErrorCode ComputeL2Error(Vec X, PetscScalar *l2_error, OperatorApplyContext op_error_ctx);
27