xref: /petsc/src/ksp/pc/impls/vpbjacobi/vpbjacobi.h (revision 4a9974635a2580e0cbff88854d61b4e213d7618d)
1 #pragma once
2 
3 #include <petsc/private/pcimpl.h>
4 
5 /*
6    Private context (data structure) for the VPBJacobi preconditioner.
7 */
8 typedef struct {
9   PetscInt   nblocks, min_bs, max_bs; // Stats recorded during setup for viewing
10   MatScalar *diag;                    /* on host */
11   Mat        diagVPB;                 /* the matrix made of the diagonal blocks if some shell matrix provided it; otherwise, NULL. Need to destroy it after use */
12   void      *spptr;                   /* offload to devices */
13 } PC_VPBJacobi;
14 
15 #if defined(PETSC_HAVE_CUDA)
16 PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_CUDA(PC, Mat);
17 #endif
18 
19 #if defined(PETSC_HAVE_KOKKOS_KERNELS)
20 PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Kokkos(PC, Mat);
21 #endif
22 
23 PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Host(PC, Mat);
24 PETSC_INTERN PetscErrorCode PCDestroy_VPBJacobi(PC);
25