Lines Matching refs:pcis
120 PC_IS *pcis = (PC_IS *)fetidpmat_ctx->pc->data; in PCBDDCSetupFETIDPMatContext() local
233 PetscCall(VecSet(pcis->vec1_N, 0.0)); in PCBDDCSetupFETIDPMatContext()
243 dual_size = pcis->n_B - n_vertices; in PCBDDCSetupFETIDPMatContext()
251 PetscCall(PetscMalloc2(pcis->n, &count, pcis->n, &neighbours_set)); in PCBDDCSetupFETIDPMatContext()
252 for (i = 0, j = 0; i < pcis->n; i++) j += mat_graph->nodes[i].count; in PCBDDCSetupFETIDPMatContext()
253 if (pcis->n) PetscCall(PetscMalloc1(j, &neighbours_set[0])); in PCBDDCSetupFETIDPMatContext()
254 for (i = 0; i < pcis->n; i++) { in PCBDDCSetupFETIDPMatContext()
266 if (i != pcis->n - 1) neighbours_set[i + 1] = neighbours_set[i] + count[i]; in PCBDDCSetupFETIDPMatContext()
269 PetscCall(VecGetArray(pcis->vec1_N, &array)); in PCBDDCSetupFETIDPMatContext()
270 for (i = 0, s = 0; i < pcis->n; i++) { in PCBDDCSetupFETIDPMatContext()
297 PetscCall(VecRestoreArray(pcis->vec1_N, &array)); in PCBDDCSetupFETIDPMatContext()
304 PetscCall(ISLocalToGlobalMappingApplyIS(pcis->mapping, subset_n, &subset)); in PCBDDCSetupFETIDPMatContext()
311 PetscCall(VecSet(pcis->vec1_global, 0.0)); in PCBDDCSetupFETIDPMatContext()
312 …PetscCall(VecScatterBegin(matis->rctx, pcis->vec1_N, pcis->vec1_global, ADD_VALUES, SCATTER_REVERS… in PCBDDCSetupFETIDPMatContext()
313 …PetscCall(VecScatterEnd(matis->rctx, pcis->vec1_N, pcis->vec1_global, ADD_VALUES, SCATTER_REVERSE)… in PCBDDCSetupFETIDPMatContext()
314 PetscCall(VecSum(pcis->vec1_global, &scalar_value)); in PCBDDCSetupFETIDPMatContext()
327 PetscCall(PetscMalloc1(pcis->n_neigh, &ptrs_buffer)); in PCBDDCSetupFETIDPMatContext()
328 PetscCall(PetscMalloc1(PetscMax(pcis->n_neigh - 1, 0), &send_reqs)); in PCBDDCSetupFETIDPMatContext()
329 PetscCall(PetscMalloc1(PetscMax(pcis->n_neigh - 1, 0), &recv_reqs)); in PCBDDCSetupFETIDPMatContext()
330 PetscCall(PetscMalloc1(pcis->n + 1, &all_factors)); in PCBDDCSetupFETIDPMatContext()
331 if (pcis->n_neigh > 0) ptrs_buffer[0] = 0; in PCBDDCSetupFETIDPMatContext()
332 for (i = 1; i < pcis->n_neigh; i++) { in PCBDDCSetupFETIDPMatContext()
333 partial_sum += pcis->n_shared[i]; in PCBDDCSetupFETIDPMatContext()
334 ptrs_buffer[i] = ptrs_buffer[i - 1] + pcis->n_shared[i]; in PCBDDCSetupFETIDPMatContext()
339 for (i = 0; i < pcis->n - 1; i++) { in PCBDDCSetupFETIDPMatContext()
345 PetscCall(VecScatterBegin(pcis->N_to_B, pcis->D, pcis->vec1_N, INSERT_VALUES, SCATTER_REVERSE)); in PCBDDCSetupFETIDPMatContext()
346 PetscCall(VecScatterEnd(pcis->N_to_B, pcis->D, pcis->vec1_N, INSERT_VALUES, SCATTER_REVERSE)); in PCBDDCSetupFETIDPMatContext()
348 PetscCall(VecGetArrayRead(pcis->vec1_N, (const PetscScalar **)&array)); in PCBDDCSetupFETIDPMatContext()
349 for (i = 1; i < pcis->n_neigh; i++) { in PCBDDCSetupFETIDPMatContext()
350 …for (j = 0; j < pcis->n_shared[i]; j++) send_buffer[ptrs_buffer[i - 1] + j] = array[pcis->shared[i… in PCBDDCSetupFETIDPMatContext()
352 PetscCall(PetscMPIIntCast(pcis->neigh[i], &neigh)); in PCBDDCSetupFETIDPMatContext()
356 PetscCall(VecRestoreArrayRead(pcis->vec1_N, (const PetscScalar **)&array)); in PCBDDCSetupFETIDPMatContext()
357 PetscCall(PetscMPIIntCast(pcis->n_neigh - 1, &nreqs)); in PCBDDCSetupFETIDPMatContext()
358 if (pcis->n_neigh > 0) PetscCallMPI(MPI_Waitall(nreqs, recv_reqs, MPI_STATUSES_IGNORE)); in PCBDDCSetupFETIDPMatContext()
360 for (i = 1; i < pcis->n_neigh; i++) { in PCBDDCSetupFETIDPMatContext()
361 for (j = 0; j < pcis->n_shared[i]; j++) { in PCBDDCSetupFETIDPMatContext()
362 k = pcis->shared[i][j]; in PCBDDCSetupFETIDPMatContext()
364 while (neighbours_set[k][neigh_position] != pcis->neigh[i]) neigh_position++; in PCBDDCSetupFETIDPMatContext()
368 if (pcis->n_neigh > 0) PetscCallMPI(MPI_Waitall(nreqs, send_reqs, MPI_STATUSES_IGNORE)); in PCBDDCSetupFETIDPMatContext()
377 PetscCall(PetscMalloc1(pcis->n_neigh, &aux_sums)); in PCBDDCSetupFETIDPMatContext()
454 if (pcis->n) PetscCall(PetscFree(neighbours_set[0])); in PCBDDCSetupFETIDPMatContext()
459 …PetscCall(MatSetSizes(fetidpmat_ctx->B_delta, n_local_lambda, pcis->n_B, n_local_lambda, pcis->n_B… in PCBDDCSetupFETIDPMatContext()
483 …PetscCall(MatSetSizes(fetidpmat_ctx->B_Ddelta, n_local_lambda, pcis->n_B, n_local_lambda, pcis->n_… in PCBDDCSetupFETIDPMatContext()
502 PetscCall(PetscCalloc1(pcis->n_B, &nnz)); in PCBDDCSetupFETIDPMatContext()
515 PetscCall(MatSetSizes(T, pcis->n_B, pcis->n_B, pcis->n_B, pcis->n_B)); in PCBDDCSetupFETIDPMatContext()
697 PetscCall(VecScatterCreate(pcis->vec1_global, pP, fetidp_global, ais, &fetidpmat_ctx->g2g_p)); in PCBDDCSetupFETIDPMatContext()
711 PetscCall(VecDuplicate(pcis->vec1_B, &fetidpmat_ctx->temp_solution_B)); in PCBDDCSetupFETIDPMatContext()
712 PetscCall(VecDuplicate(pcis->vec1_D, &fetidpmat_ctx->temp_solution_D)); in PCBDDCSetupFETIDPMatContext()
720 PC_IS *pcis = (PC_IS *)fetidppc_ctx->pc->data; in PCBDDCSetupFETIDPPCContext() local
794 PetscCall(ISGetLocalSize(pcis->is_B_local, &nb)); in PCBDDCSetupFETIDPPCContext()
795 PetscCall(ISCreateStride(PetscObjectComm((PetscObject)pcis->A_II), nb, 0, 1, &aB)); in PCBDDCSetupFETIDPPCContext()
796 PetscCall(MatCreateSubMatrix(pcis->A_II, iV, iV, MAT_INITIAL_MATRIX, &A_II)); in PCBDDCSetupFETIDPPCContext()
797 PetscCall(MatCreateSubMatrix(pcis->A_IB, iV, aB, MAT_INITIAL_MATRIX, &A_IB)); in PCBDDCSetupFETIDPPCContext()
798 PetscCall(MatCreateSubMatrix(pcis->A_BI, aB, iV, MAT_INITIAL_MATRIX, &A_BI)); in PCBDDCSetupFETIDPPCContext()
801 …PetscCall(MatCreateSubMatrix(sub_schurs->A, pcis->is_I_local, pcis->is_B_local, MAT_INITIAL_MATRIX… in PCBDDCSetupFETIDPPCContext()
802 …PetscCall(MatCreateSubMatrix(sub_schurs->A, pcis->is_B_local, pcis->is_I_local, MAT_INITIAL_MATRIX… in PCBDDCSetupFETIDPPCContext()
803 PetscCall(PetscObjectReference((PetscObject)pcis->A_II)); in PCBDDCSetupFETIDPPCContext()
804 A_II = pcis->A_II; in PCBDDCSetupFETIDPPCContext()
806 PetscCall(MatCreateSchurComplement(A_II, A_II, A_IB, A_BI, pcis->A_BB, &fetidppc_ctx->S_j)); in PCBDDCSetupFETIDPPCContext()
810 PetscCall(KSPGetType(pcis->ksp_D, &ksptype)); in PCBDDCSetupFETIDPPCContext()
812 PetscCall(KSPGetPC(pcis->ksp_D, &pc)); in PCBDDCSetupFETIDPPCContext()
839 …PetscCall(MatCreateSchurComplement(pcis->A_II, pcis->A_II, pcis->A_IB, pcis->A_BI, pcis->A_BB, &fe… in PCBDDCSetupFETIDPPCContext()
840 PetscCall(MatSchurComplementSetKSP(fetidppc_ctx->S_j, pcis->ksp_D)); in PCBDDCSetupFETIDPPCContext()
843 PetscCall(PetscObjectReference((PetscObject)pcis->A_BB)); in PCBDDCSetupFETIDPPCContext()
844 fetidppc_ctx->S_j = pcis->A_BB; in PCBDDCSetupFETIDPPCContext()
860 PC_IS *pcis; in FETIDPMatMult_Kernel() local
864 pcis = (PC_IS *)mat_ctx->pc->data; in FETIDPMatMult_Kernel()
867 PetscCall(VecSet(pcis->vec1_B, 0.)); in FETIDPMatMult_Kernel()
870 PetscCall(MatMultTranspose(mat_ctx->B_delta, mat_ctx->lambda_local, pcis->vec1_B)); in FETIDPMatMult_Kernel()
878 PetscCall(MatMultTranspose(mat_ctx->B_BI, mat_ctx->vP, pcis->vec1_D)); in FETIDPMatMult_Kernel()
880 PetscCall(MatMult(mat_ctx->Bt_BI, mat_ctx->vP, pcis->vec1_D)); in FETIDPMatMult_Kernel()
884 PetscCall(MatMultTransposeAdd(mat_ctx->B_BB, mat_ctx->vP, pcis->vec1_B, pcis->vec1_B)); in FETIDPMatMult_Kernel()
886 PetscCall(MatMultAdd(mat_ctx->Bt_BB, mat_ctx->vP, pcis->vec1_B, pcis->vec1_B)); in FETIDPMatMult_Kernel()
889 if (pcbddc->switch_static) PetscCall(VecSet(pcis->vec1_D, 0.0)); in FETIDPMatMult_Kernel()
897 PetscCall(MatMult(mat_ctx->B_delta, pcis->vec1_B, mat_ctx->lambda_local)); in FETIDPMatMult_Kernel()
920 PetscCall(VecISSet(pcis->vec1_B, mat_ctx->lP_B, 0)); in FETIDPMatMult_Kernel()
922 PetscCall(MatMultTranspose(mat_ctx->Bt_BB, pcis->vec1_B, mat_ctx->vP)); in FETIDPMatMult_Kernel()
924 PetscCall(MatMult(mat_ctx->B_BB, pcis->vec1_B, mat_ctx->vP)); in FETIDPMatMult_Kernel()
927 PetscCall(VecISSet(pcis->vec1_D, mat_ctx->lP_I, 0)); in FETIDPMatMult_Kernel()
929 PetscCall(MatMultTransposeAdd(mat_ctx->Bt_BI, pcis->vec1_D, mat_ctx->vP, mat_ctx->vP)); in FETIDPMatMult_Kernel()
931 PetscCall(MatMultAdd(mat_ctx->B_BI, pcis->vec1_D, mat_ctx->vP, mat_ctx->vP)); in FETIDPMatMult_Kernel()
959 PC_IS *pcis; in FETIDPPCApply_Kernel() local
963 pcis = (PC_IS *)pc_ctx->pc->data; in FETIDPPCApply_Kernel()
967 PetscCall(VecSet(pcis->vec2_B, 0.0)); in FETIDPPCApply_Kernel()
968 PetscCall(MatMultTranspose(pc_ctx->B_Ddelta, pc_ctx->lambda_local, pcis->vec2_B)); in FETIDPPCApply_Kernel()
971 PetscCall(MatMultTranspose(pc_ctx->S_j, pcis->vec2_B, pcis->vec1_B)); in FETIDPPCApply_Kernel()
973 PetscCall(MatMult(pc_ctx->S_j, pcis->vec2_B, pcis->vec1_B)); in FETIDPPCApply_Kernel()
976 PetscCall(MatMult(pc_ctx->B_Ddelta, pcis->vec1_B, pc_ctx->lambda_local)); in FETIDPPCApply_Kernel()