#pragma once #include #if defined(PETSC_HAVE_LIBCEED) #include #if defined(PETSC_CLANG_STATIC_ANALYZER) void PetscCallCEED(CeedErrorType); #else #define PetscCallCEED(...) \ do { \ CeedErrorType ierr_ceed_ = __VA_ARGS__; \ PetscCheck(ierr_ceed_ == CEED_ERROR_SUCCESS, PETSC_COMM_SELF, PETSC_ERR_LIB, "libCEED error: %s", CeedErrorTypes[ierr_ceed_]); \ } while (0) #endif /* PETSC_CLANG_STATIC_ANALYZER */ #define CHKERRQ_CEED(...) PetscCallCEED(__VA_ARGS__) PETSC_EXTERN PetscErrorCode DMGetCeed(DM, Ceed *); PETSC_EXTERN PetscErrorCode VecGetCeedVector(Vec, Ceed, CeedVector *); PETSC_EXTERN PetscErrorCode VecGetCeedVectorRead(Vec, Ceed, CeedVector *); PETSC_EXTERN PetscErrorCode VecRestoreCeedVector(Vec, CeedVector *); PETSC_EXTERN PetscErrorCode VecRestoreCeedVectorRead(Vec, CeedVector *); #endif