xref: /petsc/src/ksp/pc/impls/pbjacobi/pbjacobi.h (revision 4a9974635a2580e0cbff88854d61b4e213d7618d)
1a4963045SJacob 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) */
11*42ce410bSJunchao Zhang   Mat              diagPB;  /* the matrix made of the diagonal blocks if some shell smatrix provided it; otherwise, NULL. Need to destroy it after use */
1212facf1bSJunchao Zhang   void            *spptr;   /* opaque pointer to a device data structure */
1312facf1bSJunchao Zhang } PC_PBJacobi;
1412facf1bSJunchao Zhang 
1512facf1bSJunchao Zhang #if defined(PETSC_HAVE_CUDA)
16*42ce410bSJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_PBJacobi_CUDA(PC, Mat);
1712facf1bSJunchao Zhang #endif
1812facf1bSJunchao Zhang 
1912facf1bSJunchao Zhang #if defined(PETSC_HAVE_KOKKOS_KERNELS)
20*42ce410bSJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_PBJacobi_Kokkos(PC, Mat);
2112facf1bSJunchao Zhang #endif
2212facf1bSJunchao Zhang 
23*42ce410bSJunchao Zhang PETSC_INTERN PetscErrorCode PCSetUp_PBJacobi_Host(PC, Mat);
2412facf1bSJunchao Zhang PETSC_INTERN PetscErrorCode PCDestroy_PBJacobi(PC);
25