1*a4963045SJacob Faibussowitsch #pragma once 212facf1bSJunchao Zhang 312facf1bSJunchao Zhang #include <petsc/private/pcimpl.h> 412facf1bSJunchao Zhang 512facf1bSJunchao Zhang /* 612facf1bSJunchao Zhang Private context (data structure) for the PBJacobi preconditioner. 712facf1bSJunchao Zhang */ 812facf1bSJunchao Zhang typedef struct { 912facf1bSJunchao Zhang const MatScalar *diag; 1012facf1bSJunchao Zhang PetscInt bs, mbs; /* block size (bs), and number of blocks (mbs) */ 1112facf1bSJunchao Zhang void *spptr; /* opaque pointer to a device data structure */ 1212facf1bSJunchao Zhang } PC_PBJacobi; 1312facf1bSJunchao Zhang 1412facf1bSJunchao Zhang #if defined(PETSC_HAVE_CUDA) 1512facf1bSJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_PBJacobi_CUDA(PC); 1612facf1bSJunchao Zhang #endif 1712facf1bSJunchao Zhang 1812facf1bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS) 1912facf1bSJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_PBJacobi_Kokkos(PC); 2012facf1bSJunchao Zhang #endif 2112facf1bSJunchao Zhang 2212facf1bSJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_PBJacobi_Host(PC); 2312facf1bSJunchao Zhang PETSC_INTERN PetscErrorCode PCDestroy_PBJacobi(PC); 24