Lines Matching refs:diagVPB
208 PETSC_INTERN PetscErrorCode PCSetUp_VPBJacobi_Host(PC pc, Mat diagVPB)
211 Mat A = diagVPB ? diagVPB : pc->pmat;
244 Mat diagVPB = NULL;
249 // pmat (e.g., MatCEED from libCEED) might have its own method to provide a matrix (diagVPB)
250 // made of the diagonal blocks. So we check both pmat and diagVPB.
252 if (flg) PetscUseTypeMethod(pc->pmat, getvblockdiagonal, &diagVPB); // diagVPB's reference count is increased upon return
257 if (!isCuda && diagVPB) PetscCall(PetscObjectTypeCompareAny((PetscObject)diagVPB, &isCuda, MATSEQAIJCUSPARSE, MATMPIAIJCUSPARSE, ""));
262 if (!isKok && diagVPB) PetscCall(PetscObjectTypeCompareAny((PetscObject)diagVPB, &isKok, MATSEQAIJKOKKOS, MATMPIAIJKOKKOS, ""));
266 if (isCuda) PetscCall(PCSetUp_VPBJacobi_CUDA(pc, diagVPB));
271 PetscCall(PCSetUp_VPBJacobi_Kokkos(pc, diagVPB));
275 PetscCall(PCSetUp_VPBJacobi_Host(pc, diagVPB));
277 PetscCall(MatDestroy(&diagVPB)); // since we don't need it anymore, we don't need to stash it in PC_VPBJacobi
304 PetscCall(MatDestroy(&jac->diagVPB));