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