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