Actual source code: vpbjacobi.h

      1: #pragma once

      3: #include <petsc/private/pcimpl.h>

      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;

     15: #if defined(PETSC_HAVE_CUDA)
     16: PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_CUDA(PC, Mat);
     17: #endif

     19: #if defined(PETSC_HAVE_KOKKOS_KERNELS)
     20: PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Kokkos(PC, Mat);
     21: #endif

     23: PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Host(PC, Mat);
     24: PETSC_INTERN PetscErrorCode PCDestroy_VPBJacobi(PC);