1*12facf1bSJunchao Zhang #ifndef PBJACOBI_H 2*12facf1bSJunchao Zhang #define PBJACOBI_H 3*12facf1bSJunchao Zhang 4*12facf1bSJunchao Zhang #include <petsc/private/pcimpl.h> 5*12facf1bSJunchao Zhang 6*12facf1bSJunchao Zhang /* 7*12facf1bSJunchao Zhang Private context (data structure) for the PBJacobi preconditioner. 8*12facf1bSJunchao Zhang */ 9*12facf1bSJunchao Zhang typedef struct { 10*12facf1bSJunchao Zhang const MatScalar *diag; 11*12facf1bSJunchao Zhang PetscInt bs, mbs; /* block size (bs), and number of blocks (mbs) */ 12*12facf1bSJunchao Zhang void *spptr; /* opaque pointer to a device data structure */ 13*12facf1bSJunchao Zhang } PC_PBJacobi; 14*12facf1bSJunchao Zhang 15*12facf1bSJunchao Zhang #if defined(PETSC_HAVE_CUDA) 16*12facf1bSJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_PBJacobi_CUDA(PC); 17*12facf1bSJunchao Zhang #endif 18*12facf1bSJunchao Zhang 19*12facf1bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 20*12facf1bSJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_PBJacobi_Kokkos(PC); 21*12facf1bSJunchao Zhang #endif 22*12facf1bSJunchao Zhang 23*12facf1bSJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_PBJacobi_Host(PC); 24*12facf1bSJunchao Zhang PETSC_INTERN PetscErrorCode PCDestroy_PBJacobi(PC); 25*12facf1bSJunchao Zhang 26*12facf1bSJunchao Zhang #endif 27