Lines Matching refs:fetidpmat_ctx
42 PetscErrorCode PCBDDCCreateFETIDPMatContext(PC pc, FETIDPMat_ctx *fetidpmat_ctx) in PCBDDCCreateFETIDPMatContext() argument
51 *fetidpmat_ctx = newctx; in PCBDDCCreateFETIDPMatContext()
118 PetscErrorCode PCBDDCSetupFETIDPMatContext(FETIDPMat_ctx fetidpmat_ctx) in PCBDDCSetupFETIDPMatContext() argument
120 PC_IS *pcis = (PC_IS *)fetidpmat_ctx->pc->data; in PCBDDCSetupFETIDPMatContext()
121 PC_BDDC *pcbddc = (PC_BDDC *)fetidpmat_ctx->pc->data; in PCBDDCSetupFETIDPMatContext()
123 Mat_IS *matis = (Mat_IS *)fetidpmat_ctx->pc->pmat->data; in PCBDDCSetupFETIDPMatContext()
151 PetscCall(PetscObjectGetComm((PetscObject)fetidpmat_ctx->pc, &comm)); in PCBDDCSetupFETIDPMatContext()
163 PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_pP", (PetscObject *)&pP)); in PCBDDCSetupFETIDPMatContext()
166 … PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_gP", (PetscObject *)&gP)); in PCBDDCSetupFETIDPMatContext()
169 PetscCall(VecCreate(PETSC_COMM_SELF, &fetidpmat_ctx->vP)); in PCBDDCSetupFETIDPMatContext()
170 PetscCall(VecSetSizes(fetidpmat_ctx->vP, nPl, nPl)); in PCBDDCSetupFETIDPMatContext()
171 PetscCall(VecSetType(fetidpmat_ctx->vP, VECSTANDARD)); in PCBDDCSetupFETIDPMatContext()
172 PetscCall(VecSetUp(fetidpmat_ctx->vP)); in PCBDDCSetupFETIDPMatContext()
175 …PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_C", (PetscObject *)&fetidp… in PCBDDCSetupFETIDPMatContext()
176 …if (!fetidpmat_ctx->C) { /* null pressure block, compute layout and global numbering for pressures… in PCBDDCSetupFETIDPMatContext()
189 PetscCall(PetscObjectReference((PetscObject)fetidpmat_ctx->C)); in PCBDDCSetupFETIDPMatContext()
190 PetscCall(MatISGetLocalToGlobalMapping(fetidpmat_ctx->C, &l2gmap_p, NULL)); in PCBDDCSetupFETIDPMatContext()
192 PetscCall(MatGetSize(fetidpmat_ctx->C, &nPg, NULL)); in PCBDDCSetupFETIDPMatContext()
193 PetscCall(MatGetLocalSize(fetidpmat_ctx->C, NULL, &nPgl)); in PCBDDCSetupFETIDPMatContext()
194 PetscCall(MatGetLayouts(fetidpmat_ctx->C, NULL, &llay)); in PCBDDCSetupFETIDPMatContext()
197 PetscCall(VecCreateMPIWithArray(comm, 1, nPgl, nPg, NULL, &fetidpmat_ctx->xPg)); in PCBDDCSetupFETIDPMatContext()
198 PetscCall(VecCreateMPIWithArray(comm, 1, nPgl, nPg, NULL, &fetidpmat_ctx->yPg)); in PCBDDCSetupFETIDPMatContext()
201 …PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_B_BI", (PetscObject *)&fet… in PCBDDCSetupFETIDPMatContext()
202 PetscCheck(fetidpmat_ctx->B_BI, PETSC_COMM_SELF, PETSC_ERR_PLIB, "B_BI not present"); in PCBDDCSetupFETIDPMatContext()
203 PetscCall(PetscObjectReference((PetscObject)fetidpmat_ctx->B_BI)); in PCBDDCSetupFETIDPMatContext()
205 …PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_B_BB", (PetscObject *)&fet… in PCBDDCSetupFETIDPMatContext()
206 PetscCheck(fetidpmat_ctx->B_BB, PETSC_COMM_SELF, PETSC_ERR_PLIB, "B_BB not present"); in PCBDDCSetupFETIDPMatContext()
207 PetscCall(PetscObjectReference((PetscObject)fetidpmat_ctx->B_BB)); in PCBDDCSetupFETIDPMatContext()
209 …PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_Bt_BI", (PetscObject *)&fe… in PCBDDCSetupFETIDPMatContext()
210 PetscCheck(fetidpmat_ctx->Bt_BI, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Bt_BI not present"); in PCBDDCSetupFETIDPMatContext()
211 PetscCall(PetscObjectReference((PetscObject)fetidpmat_ctx->Bt_BI)); in PCBDDCSetupFETIDPMatContext()
213 …PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_Bt_BB", (PetscObject *)&fe… in PCBDDCSetupFETIDPMatContext()
214 PetscCheck(fetidpmat_ctx->Bt_BB, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Bt_BB not present"); in PCBDDCSetupFETIDPMatContext()
215 PetscCall(PetscObjectReference((PetscObject)fetidpmat_ctx->Bt_BB)); in PCBDDCSetupFETIDPMatContext()
217 …PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_flip", (PetscObject *)&fet… in PCBDDCSetupFETIDPMatContext()
218 …if (fetidpmat_ctx->rhs_flip) PetscCall(PetscObjectReference((PetscObject)fetidpmat_ctx->rhs_flip)); in PCBDDCSetupFETIDPMatContext()
220 …PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_lP_I", (PetscObject *)&fet… in PCBDDCSetupFETIDPMatContext()
221 PetscCheck(fetidpmat_ctx->lP_I, PETSC_COMM_SELF, PETSC_ERR_PLIB, "lP_I not present"); in PCBDDCSetupFETIDPMatContext()
222 PetscCall(PetscObjectReference((PetscObject)fetidpmat_ctx->lP_I)); in PCBDDCSetupFETIDPMatContext()
224 …PetscCall(PetscObjectQuery((PetscObject)fetidpmat_ctx->pc, "__KSPFETIDP_lP_B", (PetscObject *)&fet… in PCBDDCSetupFETIDPMatContext()
225 PetscCheck(fetidpmat_ctx->lP_B, PETSC_COMM_SELF, PETSC_ERR_PLIB, "lP_B not present"); in PCBDDCSetupFETIDPMatContext()
226 PetscCall(PetscObjectReference((PetscObject)fetidpmat_ctx->lP_B)); in PCBDDCSetupFETIDPMatContext()
230 fully_redundant = fetidpmat_ctx->fully_redundant; in PCBDDCSetupFETIDPMatContext()
307 PetscCall(ISRenumber(subset, subset_mult, &fetidpmat_ctx->n_lambda, &subset_n)); in PCBDDCSetupFETIDPMatContext()
316 …fetidpmat_ctx->n_lambda, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "Global number of multipliers mismatch!… in PCBDDCSetupFETIDPMatContext()
458 PetscCall(MatCreate(PETSC_COMM_SELF, &fetidpmat_ctx->B_delta)); in PCBDDCSetupFETIDPMatContext()
459 …PetscCall(MatSetSizes(fetidpmat_ctx->B_delta, n_local_lambda, pcis->n_B, n_local_lambda, pcis->n_B… in PCBDDCSetupFETIDPMatContext()
460 PetscCall(MatSetType(fetidpmat_ctx->B_delta, MATSEQAIJ)); in PCBDDCSetupFETIDPMatContext()
461 PetscCall(MatSeqAIJSetPreallocation(fetidpmat_ctx->B_delta, 1, NULL)); in PCBDDCSetupFETIDPMatContext()
462 PetscCall(MatSetOption(fetidpmat_ctx->B_delta, MAT_IGNORE_ZERO_ENTRIES, PETSC_TRUE)); in PCBDDCSetupFETIDPMatContext()
463 …for (i = 0; i < n_local_lambda; i++) PetscCall(MatSetValue(fetidpmat_ctx->B_delta, i, cols_B_delta… in PCBDDCSetupFETIDPMatContext()
465 PetscCall(MatAssemblyBegin(fetidpmat_ctx->B_delta, MAT_FINAL_ASSEMBLY)); in PCBDDCSetupFETIDPMatContext()
466 PetscCall(MatAssemblyEnd(fetidpmat_ctx->B_delta, MAT_FINAL_ASSEMBLY)); in PCBDDCSetupFETIDPMatContext()
479 …PetscCall(MatMatMult(ScalingMat, fetidpmat_ctx->B_delta, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &fet… in PCBDDCSetupFETIDPMatContext()
482 PetscCall(MatCreate(PETSC_COMM_SELF, &fetidpmat_ctx->B_Ddelta)); in PCBDDCSetupFETIDPMatContext()
483 …PetscCall(MatSetSizes(fetidpmat_ctx->B_Ddelta, n_local_lambda, pcis->n_B, n_local_lambda, pcis->n_… in PCBDDCSetupFETIDPMatContext()
485 PetscCall(MatSetType(fetidpmat_ctx->B_Ddelta, MATSEQAIJ)); in PCBDDCSetupFETIDPMatContext()
486 PetscCall(MatSeqAIJSetPreallocation(fetidpmat_ctx->B_Ddelta, 1, NULL)); in PCBDDCSetupFETIDPMatContext()
487 …for (i = 0; i < n_local_lambda; i++) PetscCall(MatSetValue(fetidpmat_ctx->B_Ddelta, i, cols_B_delt… in PCBDDCSetupFETIDPMatContext()
488 PetscCall(MatAssemblyBegin(fetidpmat_ctx->B_Ddelta, MAT_FINAL_ASSEMBLY)); in PCBDDCSetupFETIDPMatContext()
489 PetscCall(MatAssemblyEnd(fetidpmat_ctx->B_Ddelta, MAT_FINAL_ASSEMBLY)); in PCBDDCSetupFETIDPMatContext()
557 …PetscCall(MatMatTransposeMult(T, fetidpmat_ctx->B_delta, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &BD1… in PCBDDCSetupFETIDPMatContext()
558 PetscCall(MatMatMult(fetidpmat_ctx->B_delta, BD1, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &BD2)); in PCBDDCSetupFETIDPMatContext()
570 PetscCall(PetscLayoutSetSize(llay, fetidpmat_ctx->n_lambda)); in PCBDDCSetupFETIDPMatContext()
572 PetscCall(PetscLayoutGetLocalSize(llay, &fetidpmat_ctx->n)); in PCBDDCSetupFETIDPMatContext()
575 PetscCall(VecCreate(PETSC_COMM_SELF, &fetidpmat_ctx->lambda_local)); in PCBDDCSetupFETIDPMatContext()
576 PetscCall(VecSetSizes(fetidpmat_ctx->lambda_local, n_local_lambda, n_local_lambda)); in PCBDDCSetupFETIDPMatContext()
577 PetscCall(VecSetType(fetidpmat_ctx->lambda_local, VECSEQ)); in PCBDDCSetupFETIDPMatContext()
609 PetscCall(MatSetType(fetidpmat_ctx->B_Ddelta, MATSHELL)); in PCBDDCSetupFETIDPMatContext()
610 PetscCall(MatShellSetContext(fetidpmat_ctx->B_Ddelta, ctx)); in PCBDDCSetupFETIDPMatContext()
611 …PetscCall(MatShellSetOperation(fetidpmat_ctx->B_Ddelta, MATOP_MULT, (PetscErrorCodeFn *)MatMult_BD… in PCBDDCSetupFETIDPMatContext()
612 …PetscCall(MatShellSetOperation(fetidpmat_ctx->B_Ddelta, MATOP_MULT_TRANSPOSE, (PetscErrorCodeFn *)… in PCBDDCSetupFETIDPMatContext()
613 …PetscCall(MatShellSetOperation(fetidpmat_ctx->B_Ddelta, MATOP_DESTROY, (PetscErrorCodeFn *)MatDest… in PCBDDCSetupFETIDPMatContext()
614 PetscCall(MatSetUp(fetidpmat_ctx->B_Ddelta)); in PCBDDCSetupFETIDPMatContext()
619 PetscCall(KSPSetNestLevel(ctx->kBD, fetidpmat_ctx->pc->kspnestlevel)); in PCBDDCSetupFETIDPMatContext()
621 PetscCall(VecDuplicate(fetidpmat_ctx->lambda_local, &ctx->work)); in PCBDDCSetupFETIDPMatContext()
622 fetidpmat_ctx->deluxe_nonred = PETSC_TRUE; in PCBDDCSetupFETIDPMatContext()
628 fetidpmat_ctx->n += nPgl; in PCBDDCSetupFETIDPMatContext()
629 fetidpmat_ctx->N = fetidpmat_ctx->n_lambda + nPg; in PCBDDCSetupFETIDPMatContext()
633 PetscCall(VecSetSizes(fetidp_global, fetidpmat_ctx->n, fetidpmat_ctx->N)); in PCBDDCSetupFETIDPMatContext()
655 …ct)fetidp_global), pranges[rank + 1] - pranges[rank], aranges[rank], 1, &fetidpmat_ctx->pressure)); in PCBDDCSetupFETIDPMatContext()
656 PetscCall(PetscObjectSetName((PetscObject)fetidpmat_ctx->pressure, "F_P")); in PCBDDCSetupFETIDPMatContext()
657 … - lranges[rank], aranges[rank] + pranges[rank + 1] - pranges[rank], 1, &fetidpmat_ctx->lagrange)); in PCBDDCSetupFETIDPMatContext()
658 PetscCall(PetscObjectSetName((PetscObject)fetidpmat_ctx->lagrange, "F_L")); in PCBDDCSetupFETIDPMatContext()
671 …PetscCall(VecScatterCreate(fetidpmat_ctx->vP, NULL, fetidp_global, IS_l2g_p, &fetidpmat_ctx->l2g_p… in PCBDDCSetupFETIDPMatContext()
680 …PetscCall(VecScatterCreate(fetidpmat_ctx->lambda_local, NULL, v, ais, &fetidpmat_ctx->l2g_lambda_o… in PCBDDCSetupFETIDPMatContext()
697 PetscCall(VecScatterCreate(pcis->vec1_global, pP, fetidp_global, ais, &fetidpmat_ctx->g2g_p)); in PCBDDCSetupFETIDPMatContext()
705 …PetscCall(VecScatterCreate(fetidpmat_ctx->lambda_local, NULL, fetidp_global, IS_l2g_lambda, &fetid… 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()