Lines Matching refs:pc_gamg
29 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCReset_GAMG() local
32 PetscCall(PetscFree(pc_gamg->data)); in PCReset_GAMG()
33 pc_gamg->data_sz = 0; in PCReset_GAMG()
34 PetscCall(PetscFree(pc_gamg->orig_data)); in PCReset_GAMG()
39 pc_gamg->emin = 0; in PCReset_GAMG()
40 pc_gamg->emax = 0; in PCReset_GAMG()
42 PetscCall(MatCoarsenDestroy(&pc_gamg->asm_crs)); in PCReset_GAMG()
64 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGCreateLevel_GAMG() local
80 if (pc_gamg->data_cell_rows > 0) { in PCGAMGCreateLevel_GAMG()
81 ncrs = pc_gamg->data_sz / pc_gamg->data_cell_cols / pc_gamg->data_cell_rows; in PCGAMGCreateLevel_GAMG()
88 …if (pc_gamg->level_reduction_factors[pc_gamg->current_level] == 0 && PetscDefined(HAVE_CUDA) && pc… in PCGAMGCreateLevel_GAMG()
116 } else if (pc_gamg->level_reduction_factors[pc_gamg->current_level] > 0) { in PCGAMGCreateLevel_GAMG()
117 if (nactive < pc_gamg->level_reduction_factors[pc_gamg->current_level]) { in PCGAMGCreateLevel_GAMG()
121 …pc_gamg->level_reduction_factors[pc_gamg->current_level] == 0, PETSC_COMM_SELF, PETSC_ERR_PLIB, "o… in PCGAMGCreateLevel_GAMG()
122 new_size = nactive / pc_gamg->level_reduction_factors[pc_gamg->current_level]; in PCGAMGCreateLevel_GAMG()
123 …MT ")\n", ((PetscObject)pc)->prefix, new_size, nactive, pc_gamg->level_reduction_factors[pc_gamg->… in PCGAMGCreateLevel_GAMG()
125 } else if (is_last && !pc_gamg->use_parallel_coarse_grid_solver) { in PCGAMGCreateLevel_GAMG()
134 …new_size = (PetscMPIInt)((float)ncrs_eq_glob / (float)pc_gamg->min_eq_proc + 0.5); /* hardwire min… in PCGAMGCreateLevel_GAMG()
143 …PetscCall(PetscLogEventBegin(petsc_gamg_setup_matmat_events[pc_gamg->current_level][1], 0, 0, 0, 0… in PCGAMGCreateLevel_GAMG()
145 …PetscCall(PetscLogEventEnd(petsc_gamg_setup_matmat_events[pc_gamg->current_level][1], 0, 0, 0, 0)); in PCGAMGCreateLevel_GAMG()
150 if (pc_gamg->cpu_pin_coarse_grids) { in PCGAMGCreateLevel_GAMG()
162 if (pc_gamg->layout_type == PCGAMG_LAYOUT_SPREAD || !pc_gamg->repart) { in PCGAMGCreateLevel_GAMG()
180 if (pc_gamg->layout_type == PCGAMG_LAYOUT_COMPACT) expand_factor = 1; in PCGAMGCreateLevel_GAMG()
188 …PetscCall(PetscLogEventBegin(petsc_gamg_setup_matmat_events[pc_gamg->current_level][1], 0, 0, 0, 0… in PCGAMGCreateLevel_GAMG()
190 …PetscCall(PetscLogEventEnd(petsc_gamg_setup_matmat_events[pc_gamg->current_level][1], 0, 0, 0, 0)); in PCGAMGCreateLevel_GAMG()
196 …if (pc_gamg->repart) { /* Repartition Cmat_{k} and move columns of P^{k}_{k-1} and coordinates of … in PCGAMGCreateLevel_GAMG()
200 …PetscCall(PetscLogEventBegin(petsc_gamg_setup_matmat_events[pc_gamg->current_level][1], 0, 0, 0, 0… in PCGAMGCreateLevel_GAMG()
202 …PetscCall(PetscLogEventEnd(petsc_gamg_setup_matmat_events[pc_gamg->current_level][1], 0, 0, 0, 0)); in PCGAMGCreateLevel_GAMG()
205 …yout\n", ((PetscObject)pc)->prefix, *a_nactive_proc, new_size, ncrs_eq, (pc_gamg->layout_type == P… in PCGAMGCreateLevel_GAMG()
338 …const PetscInt *idx, ndata_rows = pc_gamg->data_cell_rows, ndata_cols = pc_gamg->data_cell_cols, n… in PCGAMGCreateLevel_GAMG()
365 const PetscInt stride0 = ncrs * pc_gamg->data_cell_rows; in PCGAMGCreateLevel_GAMG()
369 PetscScalar tt = pc_gamg->data[ix]; in PCGAMGCreateLevel_GAMG()
389 PetscCall(PetscFree(pc_gamg->data)); in PCGAMGCreateLevel_GAMG()
390 PetscCall(PetscMalloc1(node_data_sz * ncrs_new, &pc_gamg->data)); in PCGAMGCreateLevel_GAMG()
392 pc_gamg->data_sz = node_data_sz * ncrs_new; in PCGAMGCreateLevel_GAMG()
400 pc_gamg->data[ix] = PetscRealPart(array[jx]); in PCGAMGCreateLevel_GAMG()
465 …PetscCall(PetscLogEventBegin(petsc_gamg_setup_matmat_events[pc_gamg->current_level][1], 0, 0, 0, 0… in PCGAMGCreateLevel_GAMG()
467 …PetscCall(PetscLogEventEnd(petsc_gamg_setup_matmat_events[pc_gamg->current_level][1], 0, 0, 0, 0)); in PCGAMGCreateLevel_GAMG()
476 if (pc_gamg->cpu_pin_coarse_grids) { in PCGAMGCreateLevel_GAMG()
505 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSquareGraph_GAMG() local
509 …Square Graph on level %" PetscInt_FMT "\n", ((PetscObject)a_pc)->prefix, pc_gamg->current_level + … in PCGAMGSquareGraph_GAMG()
512 …PetscCall(PetscSNPrintf(addp, sizeof(addp), "pc_gamg_square_%" PetscInt_FMT "_", pc_gamg->current_… in PCGAMGSquareGraph_GAMG()
521 …PetscCall(PetscLogEventBegin(petsc_gamg_setup_matmat_events[pc_gamg->current_level][0], 0, 0, 0, 0… in PCGAMGSquareGraph_GAMG()
523 …PetscCall(PetscLogEventEnd(petsc_gamg_setup_matmat_events[pc_gamg->current_level][0], 0, 0, 0, 0)); in PCGAMGSquareGraph_GAMG()
541 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCSetUp_GAMG() local
560 if (!pc_gamg->reuse_prol || pc->flag == DIFFERENT_NONZERO_PATTERN) { in PCSetUp_GAMG()
568 if (pc_gamg->Nlevels > 1) { in PCSetUp_GAMG()
571 PetscCall(KSPGetOperators(mglevels[pc_gamg->Nlevels - 1]->smoothd, &dA, &dB)); in PCSetUp_GAMG()
573 PetscCall(KSPSetOperators(mglevels[pc_gamg->Nlevels - 1]->smoothd, dA, dB)); in PCSetUp_GAMG()
575 for (level = pc_gamg->Nlevels - 2, gl = 0; level >= 0; level--, gl++) { in PCSetUp_GAMG()
597 if (pc_gamg->recompute_esteig) { in PCSetUp_GAMG()
623 if (!pc_gamg->data) { in PCSetUp_GAMG()
624 if (pc_gamg->orig_data) { in PCSetUp_GAMG()
628 … pc_gamg->data_sz = (qq / bs) * pc_gamg->orig_data_cell_rows * pc_gamg->orig_data_cell_cols; in PCSetUp_GAMG()
629 pc_gamg->data_cell_rows = pc_gamg->orig_data_cell_rows; in PCSetUp_GAMG()
630 pc_gamg->data_cell_cols = pc_gamg->orig_data_cell_cols; in PCSetUp_GAMG()
632 PetscCall(PetscMalloc1(pc_gamg->data_sz, &pc_gamg->data)); in PCSetUp_GAMG()
633 for (qq = 0; qq < pc_gamg->data_sz; qq++) pc_gamg->data[qq] = pc_gamg->orig_data[qq]; in PCSetUp_GAMG()
635 …PetscCheck(pc_gamg->ops->createdefaultdata, comm, PETSC_ERR_PLIB, "'createdefaultdata' not set(?) … in PCSetUp_GAMG()
636 PetscCall(pc_gamg->ops->createdefaultdata(pc, Pmat)); in PCSetUp_GAMG()
641 if (!pc_gamg->orig_data && (PetscBool)(!pc_gamg->reuse_prol)) { in PCSetUp_GAMG()
642 PetscCall(PetscMalloc1(pc_gamg->data_sz, &pc_gamg->orig_data)); in PCSetUp_GAMG()
643 for (qq = 0; qq < pc_gamg->data_sz; qq++) pc_gamg->orig_data[qq] = pc_gamg->data[qq]; in PCSetUp_GAMG()
644 pc_gamg->orig_data_cell_rows = pc_gamg->data_cell_rows; in PCSetUp_GAMG()
645 pc_gamg->orig_data_cell_cols = pc_gamg->data_cell_cols; in PCSetUp_GAMG()
657 …, block size %" PetscInt_FMT ", np=%d\n", ((PetscObject)pc)->prefix, 0, M, pc_gamg->data_cell_rows, in PCSetUp_GAMG()
658 pc_gamg->data_cell_cols, (PetscInt)(nnz0 / (PetscReal)M + 0.5), bs, size)); in PCSetUp_GAMG()
661 …el = 0, Aarr[0] = Pmat, nactivepe = size; level < (pc_gamg->Nlevels - 1) && (level == 0 || M > pc_… in PCSetUp_GAMG()
662 pc_gamg->current_level = level; in PCSetUp_GAMG()
673 if (level == 0 && pc_gamg->injection_index_size > 0) { in PCSetUp_GAMG()
676 … PetscInt prol_m, prol_n, Prol_N = (M / bs) * pc_gamg->injection_index_size, Istart, Iend, nn, row; in PCSetUp_GAMG()
677 …ce prolongation %" PetscInt_FMT " x %" PetscInt_FMT ". %s\n", M, Prol_N, pc_gamg->data ? "delete n… in PCSetUp_GAMG()
680 prol_n = (prol_m / bs) * pc_gamg->injection_index_size; in PCSetUp_GAMG()
681 …pc_gamg->injection_index_size < bs, PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_INCOMP, "Injec… in PCSetUp_GAMG()
684 PetscCall(MatSetBlockSizes(Prol, bs, pc_gamg->injection_index_size)); in PCSetUp_GAMG()
696 …for (PetscInt ii = Istart, col = (Istart / bs) * pc_gamg->injection_index_size; ii < Iend; ii += b… in PCSetUp_GAMG()
698 for (PetscInt jj = 0; jj < pc_gamg->injection_index_size; jj++, col++) { in PCSetUp_GAMG()
699 PetscInt row = ii + pc_gamg->injection_index[jj]; in PCSetUp_GAMG()
709 if (pc_gamg->data) { in PCSetUp_GAMG()
710 pc_gamg->data_cell_cols = pc_gamg->injection_index_size; in PCSetUp_GAMG()
711 pc_gamg->data_cell_rows = pc_gamg->injection_index_size; in PCSetUp_GAMG()
712 pc_gamg->orig_data_cell_cols = 0; in PCSetUp_GAMG()
713 pc_gamg->orig_data_cell_rows = 0; in PCSetUp_GAMG()
714 PetscCall(PetscFree(pc_gamg->data)); in PCSetUp_GAMG()
715 pc_gamg->data_sz = pc_gamg->injection_index_size * prol_n; in PCSetUp_GAMG()
716 PetscCall(PetscMalloc1(pc_gamg->data_sz, &pc_gamg->data)); in PCSetUp_GAMG()
717 for (row = nn = 0; row < prol_n; row += pc_gamg->injection_index_size) { in PCSetUp_GAMG()
718 for (PetscInt jj = 0; jj < pc_gamg->injection_index_size; jj++) { in PCSetUp_GAMG()
719 PetscInt idx = row * pc_gamg->injection_index_size + jj * pc_gamg->injection_index_size; in PCSetUp_GAMG()
720 …for (PetscInt kk = 0; kk < pc_gamg->injection_index_size; kk++, nn++) pc_gamg->data[idx + kk] = (j… in PCSetUp_GAMG()
723 …PetscCheck(nn == pc_gamg->data_sz, PETSC_COMM_SELF, PETSC_ERR_PLIB, "nn != pc_gamg->data_sz %" Pet… in PCSetUp_GAMG()
731 …PetscCall(pc_gamg->ops->coarsen(pc, &Gmat, &agg_lists)); // Gmat may have ghosts for QR aggregates… in PCSetUp_GAMG()
734 PetscCall(pc_gamg->ops->prolongator(pc, Aarr[level], agg_lists, &Prol11)); in PCSetUp_GAMG()
743 if (pc_gamg->ops->optprolongator) { in PCSetUp_GAMG()
745 PetscCall(pc_gamg->ops->optprolongator(pc, Aarr[level], &Prol11)); in PCSetUp_GAMG()
748 if (pc_gamg->use_aggs_in_asm) { in PCSetUp_GAMG()
753 } else if (pc_gamg->asm_hem_aggs) { in PCSetUp_GAMG()
764 PetscCall(PetscInfo(pc, "HEM ASM passes = %" PetscInt_FMT "\n", pc_gamg->asm_hem_aggs)); in PCSetUp_GAMG()
765 PetscCall(MatCoarsenDestroy(&pc_gamg->asm_crs)); in PCSetUp_GAMG()
766 PetscCall(MatCoarsenCreate(PetscObjectComm((PetscObject)pc), &pc_gamg->asm_crs)); in PCSetUp_GAMG()
768 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)pc_gamg->asm_crs, prefix)); in PCSetUp_GAMG()
769 PetscCall(MatCoarsenSetFromOptions(pc_gamg->asm_crs)); // get strength args in PCSetUp_GAMG()
770 PetscCall(MatCoarsenSetType(pc_gamg->asm_crs, MATCOARSENHEM)); in PCSetUp_GAMG()
771 PetscCall(MatCoarsenSetMaximumIterations(pc_gamg->asm_crs, pc_gamg->asm_hem_aggs)); in PCSetUp_GAMG()
772 PetscCall(MatCoarsenSetAdjacency(pc_gamg->asm_crs, Gmat)); in PCSetUp_GAMG()
773 PetscCall(MatCoarsenSetStrictAggs(pc_gamg->asm_crs, PETSC_TRUE)); in PCSetUp_GAMG()
774 PetscCall(MatCoarsenApply(pc_gamg->asm_crs)); in PCSetUp_GAMG()
775 PetscCall(MatCoarsenGetData(pc_gamg->asm_crs, &agg_lists)); /* output */ in PCSetUp_GAMG()
805 if (N <= pc_gamg->coarse_eq_limit) is_last = PETSC_TRUE; in PCSetUp_GAMG()
806 if (level1 == pc_gamg->Nlevels - 1) is_last = PETSC_TRUE; in PCSetUp_GAMG()
809 …PetscCall(pc_gamg->ops->createlevel(pc, Aarr[level], cr_bs, &Parr[level1], &Aarr[level1], &nactive… in PCSetUp_GAMG()
817 … PetscInt_FMT ", %d active pes\n", ((PetscObject)pc)->prefix, level1, M, pc_gamg->data_cell_cols, … in PCSetUp_GAMG()
823 …if ((pc_gamg->data_cell_cols && M / pc_gamg->data_cell_cols < 2) || (!pc_gamg->data_cell_cols && M… in PCSetUp_GAMG()
833 PetscCall(PetscFree(pc_gamg->data)); in PCSetUp_GAMG()
836 pc_gamg->Nlevels = level + 1; in PCSetUp_GAMG()
838 PetscCall(PCMGSetLevels(pc, pc_gamg->Nlevels, NULL)); in PCSetUp_GAMG()
840 if (pc_gamg->Nlevels > 1) { /* don't setup MG if one level */ in PCSetUp_GAMG()
843 for (lidx = 1, level = pc_gamg->Nlevels - 2; lidx <= fine_level; lidx++, level--) { in PCSetUp_GAMG()
859 if (pc_gamg->use_aggs_in_asm || pc_gamg->asm_hem_aggs) { in PCSetUp_GAMG()
890 Mat Lmat = Aarr[pc_gamg->Nlevels - 1]; in PCSetUp_GAMG()
895 if (!pc_gamg->use_parallel_coarse_grid_solver) { in PCSetUp_GAMG()
917 if (pc_gamg->use_sa_esteig) { in PCSetUp_GAMG()
918 for (lidx = 1, level = pc_gamg->Nlevels - 2; level >= 0; lidx++, level--) { in PCSetUp_GAMG()
946 for (level = 1; level < pc_gamg->Nlevels; level++) { in PCSetUp_GAMG()
975 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCDestroy_GAMG() local
979 if (pc_gamg->ops->destroy) PetscCall((*pc_gamg->ops->destroy)(pc)); in PCDestroy_GAMG()
980 PetscCall(PetscFree(pc_gamg->ops)); in PCDestroy_GAMG()
981 PetscCall(PetscFree(pc_gamg->gamg_type_name)); in PCDestroy_GAMG()
982 PetscCall(PetscFree(pc_gamg)); in PCDestroy_GAMG()
1041 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetProcEqLim_GAMG() local
1044 if (n > 0) pc_gamg->min_eq_proc = n; in PCGAMGSetProcEqLim_GAMG()
1080 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetCoarseEqLim_GAMG() local
1083 if (n > 0) pc_gamg->coarse_eq_limit = n; in PCGAMGSetCoarseEqLim_GAMG()
1118 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetRepartition_GAMG() local
1121 pc_gamg->repart = n; in PCGAMGSetRepartition_GAMG()
1160 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetUseSAEstEig_GAMG() local
1163 pc_gamg->use_sa_esteig = b; in PCGAMGSetUseSAEstEig_GAMG()
1198 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetRecomputeEstEig_GAMG() local
1201 pc_gamg->recompute_esteig = b; in PCGAMGSetRecomputeEstEig_GAMG()
1233 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetEigenvalues_GAMG() local
1238 pc_gamg->emax = emax; in PCGAMGSetEigenvalues_GAMG()
1239 pc_gamg->emin = emin; in PCGAMGSetEigenvalues_GAMG()
1274 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetReuseInterpolation_GAMG() local
1277 pc_gamg->reuse_prol = n; in PCGAMGSetReuseInterpolation_GAMG()
1312 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGASMSetUseAggs_GAMG() local
1315 pc_gamg->use_aggs_in_asm = flg; in PCGAMGASMSetUseAggs_GAMG()
1346 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetParallelCoarseGridSolve_GAMG() local
1349 pc_gamg->use_parallel_coarse_grid_solver = flg; in PCGAMGSetParallelCoarseGridSolve_GAMG()
1380 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetCpuPinCoarseGrids_GAMG() local
1383 pc_gamg->cpu_pin_coarse_grids = flg; in PCGAMGSetCpuPinCoarseGrids_GAMG()
1414 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetCoarseGridLayoutType_GAMG() local
1417 pc_gamg->layout_type = flg; in PCGAMGSetCoarseGridLayoutType_GAMG()
1451 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetNlevels_GAMG() local
1454 pc_gamg->Nlevels = n; in PCGAMGSetNlevels_GAMG()
1488 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGASMSetHEM_GAMG() local
1491 pc_gamg->asm_hem_aggs = n; in PCGAMGASMSetHEM_GAMG()
1532 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetThreshold_GAMG() local
1536 for (i = 0; i < PetscMin(n, PETSC_MG_MAXLEVELS); i++) pc_gamg->threshold[i] = v[i]; in PCGAMGSetThreshold_GAMG()
1537 …for (; i < PETSC_MG_MAXLEVELS; i++) pc_gamg->threshold[i] = pc_gamg->threshold[i - 1] * pc_gamg->t… in PCGAMGSetThreshold_GAMG()
1570 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetRankReductionFactors_GAMG() local
1574 for (i = 0; i < PetscMin(n, PETSC_MG_MAXLEVELS); i++) pc_gamg->level_reduction_factors[i] = v[i]; in PCGAMGSetRankReductionFactors_GAMG()
1575 …for (; i < PETSC_MG_MAXLEVELS; i++) pc_gamg->level_reduction_factors[i] = -1; /* 0 stop putting on… in PCGAMGSetRankReductionFactors_GAMG()
1610 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetThresholdScale_GAMG() local
1613 pc_gamg->threshold_scale = v; in PCGAMGSetThresholdScale_GAMG()
1667 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGGetType_GAMG() local
1670 *type = pc_gamg->type; in PCGAMGGetType_GAMG()
1677 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetType_GAMG() local
1681 pc_gamg->type = type; in PCGAMGSetType_GAMG()
1684 if (pc_gamg->ops->destroy) { in PCGAMGSetType_GAMG()
1685 PetscCall((*pc_gamg->ops->destroy)(pc)); in PCGAMGSetType_GAMG()
1686 PetscCall(PetscMemzero(pc_gamg->ops, sizeof(struct _PCGAMGOps))); in PCGAMGSetType_GAMG()
1687 pc_gamg->ops->createlevel = PCGAMGCreateLevel_GAMG; in PCGAMGSetType_GAMG()
1689 pc_gamg->data_cell_cols = 0; in PCGAMGSetType_GAMG()
1690 pc_gamg->data_cell_rows = 0; in PCGAMGSetType_GAMG()
1691 pc_gamg->orig_data_cell_cols = 0; in PCGAMGSetType_GAMG()
1692 pc_gamg->orig_data_cell_rows = 0; in PCGAMGSetType_GAMG()
1693 PetscCall(PetscFree(pc_gamg->data)); in PCGAMGSetType_GAMG()
1694 pc_gamg->data_sz = 0; in PCGAMGSetType_GAMG()
1696 PetscCall(PetscFree(pc_gamg->gamg_type_name)); in PCGAMGSetType_GAMG()
1697 PetscCall(PetscStrallocpy(type, &pc_gamg->gamg_type_name)); in PCGAMGSetType_GAMG()
1706 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCView_GAMG() local
1712 … mg->nlevels; i++) PetscCall(PetscViewerASCIIPrintf(viewer, " %g", (double)pc_gamg->threshold[i])); in PCView_GAMG()
1714 … Threshold scaling factor for each level not specified = %g\n", (double)pc_gamg->threshold_scale)… in PCView_GAMG()
1715 …if (pc_gamg->use_aggs_in_asm) PetscCall(PetscViewerASCIIPrintf(viewer, " Using aggregates fro… in PCView_GAMG()
1716 else if (pc_gamg->asm_hem_aggs) { in PCView_GAMG()
1717 …plications of heavy edge matching (HEM) to define subdomains for PCASM\n", pc_gamg->asm_hem_aggs)); in PCView_GAMG()
1722 PetscCall(MatCoarsenView(pc_gamg->asm_crs, viewer)); in PCView_GAMG()
1727 …if (pc_gamg->use_parallel_coarse_grid_solver) PetscCall(PetscViewerASCIIPrintf(viewer, " Usin… in PCView_GAMG()
1728 if (pc_gamg->injection_index_size) { in PCView_GAMG()
1730 …for (int i = 0; i < pc_gamg->injection_index_size; i++) PetscCall(PetscViewerASCIIPrintf(viewer, "… in PCView_GAMG()
1733 if (pc_gamg->ops->view) PetscCall((*pc_gamg->ops->view)(pc, viewer)); in PCView_GAMG()
1793 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGSetInjectionIndex_GAMG() local
1796 pc_gamg->injection_index_size = n; in PCGAMGSetInjectionIndex_GAMG()
1798 for (PetscInt i = 0; i < n; i++) pc_gamg->injection_index[i] = idx[i]; in PCGAMGSetInjectionIndex_GAMG()
1805 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCSetFromOptions_GAMG() local
1818 …MG method (only 'agg' supported and useful)", "PCGAMGSetType", GAMGList, pc_gamg->gamg_type_name, … in PCSetFromOptions_GAMG()
1820 …repartition", "Repartion coarse grids", "PCGAMGSetRepartition", pc_gamg->repart, &pc_gamg->repart,… in PCSetFromOptions_GAMG()
1821 …smoothed aggregation for smoother", "PCGAMGSetUseSAEstEig", pc_gamg->use_sa_esteig, &pc_gamg->use_… in PCSetFromOptions_GAMG()
1822 …hebyshev when matrix changes", "PCGAMGSetRecomputeEstEig", pc_gamg->recompute_esteig, &pc_gamg->re… in PCSetFromOptions_GAMG()
1823 …", "Reuse prolongation operator", "PCGAMGReuseInterpolation", pc_gamg->reuse_prol, &pc_gamg->reuse… in PCSetFromOptions_GAMG()
1824 …ation aggregates for ASM smoother", "PCGAMGASMSetUseAggs", pc_gamg->use_aggs_in_asm, &pc_gamg->use… in PCSetFromOptions_GAMG()
1825 …one process)", "PCGAMGSetParallelCoarseGridSolve", pc_gamg->use_parallel_coarse_grid_solver, &pc_g… in PCSetFromOptions_GAMG()
1826 … coarse grids to the CPU", "PCGAMGSetCpuPinCoarseGrids", pc_gamg->cpu_pin_coarse_grids, &pc_gamg->… in PCSetFromOptions_GAMG()
1828 … (PetscEnum)pc_gamg->layout_type, (PetscEnum *)&pc_gamg->layout_type, NULL)); in PCSetFromOptions_GAMG()
1829 …quations per process on coarse grids", "PCGAMGSetProcEqLim", pc_gamg->min_eq_proc, &pc_gamg->min_e… in PCSetFromOptions_GAMG()
1830 …of equations for the coarse grid", "PCGAMGSetCoarseEqLim", pc_gamg->coarse_eq_limit, &pc_gamg->coa… in PCSetFromOptions_GAMG()
1831 …g passed in aggregates for ASM smoother", "PCGAMGASMSetHEM", pc_gamg->asm_hem_aggs, &pc_gamg->asm_… in PCSetFromOptions_GAMG()
1832 … for each level not specified", "PCGAMGSetThresholdScale", pc_gamg->threshold_scale, &pc_gamg->thr… in PCSetFromOptions_GAMG()
1834 …d to use for dropping edges in aggregation graph", "PCGAMGSetThreshold", pc_gamg->threshold, &n, &… in PCSetFromOptions_GAMG()
1839 pc_gamg->threshold[i] = pc_gamg->threshold[i - 1] * pc_gamg->threshold_scale; in PCSetFromOptions_GAMG()
1842 …f MG levels (should get from base class)", "PCGAMGSetNlevels", pc_gamg->Nlevels, &pc_gamg->Nlevels… in PCSetFromOptions_GAMG()
1843 …pc_gamg->Nlevels <= PETSC_MG_MAXLEVELS, PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_INCOMP, "-… in PCSetFromOptions_GAMG()
1845 …st reduction puts one process/device)", "PCGAMGSetRankReductionFactors", pc_gamg->level_reduction_… in PCSetFromOptions_GAMG()
1849 pc_gamg->level_reduction_factors[i] = -1; in PCSetFromOptions_GAMG()
1860 pc_gamg->injection_index_size = MAT_COARSEN_STRENGTH_INDEX_SIZE; in PCSetFromOptions_GAMG()
1861 …e injection coarse grid space", "PCGAMGSetInjectionIndex", pc_gamg->injection_index, &pc_gamg->inj… in PCSetFromOptions_GAMG()
1863 PetscCall((*pc_gamg->ops->setfromoptions)(pc, PetscOptionsObject)); in PCSetFromOptions_GAMG()
1917 PC_GAMG *pc_gamg; in PCCreate_GAMG() local
1929 PetscCall(PetscNew(&pc_gamg)); in PCCreate_GAMG()
1932 mg->innerctx = pc_gamg; in PCCreate_GAMG()
1934 PetscCall(PetscNew(&pc_gamg->ops)); in PCCreate_GAMG()
1937 pc_gamg->data_sz = 0; in PCCreate_GAMG()
1938 pc_gamg->data = NULL; in PCCreate_GAMG()
1966 pc_gamg->repart = PETSC_FALSE; in PCCreate_GAMG()
1967 pc_gamg->reuse_prol = PETSC_TRUE; in PCCreate_GAMG()
1968 pc_gamg->use_aggs_in_asm = PETSC_FALSE; in PCCreate_GAMG()
1969 pc_gamg->use_parallel_coarse_grid_solver = PETSC_FALSE; in PCCreate_GAMG()
1970 pc_gamg->cpu_pin_coarse_grids = PETSC_FALSE; in PCCreate_GAMG()
1971 pc_gamg->layout_type = PCGAMG_LAYOUT_SPREAD; in PCCreate_GAMG()
1972 pc_gamg->min_eq_proc = 50; in PCCreate_GAMG()
1973 pc_gamg->asm_hem_aggs = 0; in PCCreate_GAMG()
1974 pc_gamg->coarse_eq_limit = 50; in PCCreate_GAMG()
1975 for (int i = 0; i < PETSC_MG_MAXLEVELS; i++) pc_gamg->threshold[i] = -1; in PCCreate_GAMG()
1976 pc_gamg->threshold_scale = 1.; in PCCreate_GAMG()
1977 pc_gamg->Nlevels = PETSC_MG_MAXLEVELS; in PCCreate_GAMG()
1978 pc_gamg->current_level = 0; /* don't need to init really */ in PCCreate_GAMG()
1979 pc_gamg->use_sa_esteig = PETSC_TRUE; in PCCreate_GAMG()
1980 pc_gamg->recompute_esteig = PETSC_TRUE; in PCCreate_GAMG()
1981 pc_gamg->emin = 0; in PCCreate_GAMG()
1982 pc_gamg->emax = 0; in PCCreate_GAMG()
1984 pc_gamg->ops->createlevel = PCGAMGCreateLevel_GAMG; in PCCreate_GAMG()
2100 PC_GAMG *pc_gamg = (PC_GAMG *)mg->innerctx; in PCGAMGCreateGraph() local
2103 PetscCall(pc_gamg->ops->creategraph(pc, A, G)); in PCGAMGCreateGraph()