xref: /petsc/src/ksp/pc/impls/vpbjacobi/vpbjacobi.h (revision f1be35001843913b137132cb0fff0c609e27f59e)
1*f1be3500SJunchao Zhang #if !defined(VPBJACOBI_H)
2*f1be3500SJunchao Zhang #define VPBJACOBI_H
3*f1be3500SJunchao Zhang 
4*f1be3500SJunchao Zhang #include <petsc/private/pcimpl.h>
5*f1be3500SJunchao Zhang 
6*f1be3500SJunchao Zhang /*
7*f1be3500SJunchao Zhang    Private context (data structure) for the VPBJacobi preconditioner.
8*f1be3500SJunchao Zhang */
9*f1be3500SJunchao Zhang typedef struct {
10*f1be3500SJunchao Zhang   MatScalar *diag; /* on host */
11*f1be3500SJunchao Zhang   void *spptr; /* offload to devices */
12*f1be3500SJunchao Zhang } PC_VPBJacobi;
13*f1be3500SJunchao Zhang 
14*f1be3500SJunchao Zhang #if defined(PETSC_HAVE_CUDA)
15*f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_CUDA(PC);
16*f1be3500SJunchao Zhang #endif
17*f1be3500SJunchao Zhang 
18*f1be3500SJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
19*f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Kokkos(PC);
20*f1be3500SJunchao Zhang #endif
21*f1be3500SJunchao Zhang 
22*f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Host(PC);
23*f1be3500SJunchao Zhang PETSC_INTERN PetscErrorCode PCDestroy_VPBJacobi(PC);
24*f1be3500SJunchao Zhang 
25*f1be3500SJunchao Zhang #endif
26