xref: /petsc/src/ksp/pc/impls/pbjacobi/pbjacobi.h (revision 12facf1b2b728ba534ad2f7a1cbdf48236a5076e)
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