Lines Matching refs:level
35 for (PetscInt level = 0; level < PETSC_MG_MAXLEVELS; level++) { in PCReset_GAMG() local
36 mg->min_eigen_DinvA[level] = 0; in PCReset_GAMG()
37 mg->max_eigen_DinvA[level] = 0; in PCReset_GAMG()
543 …PetscInt fine_level, level, level1, bs, M, N, qq, lidx, nASMBlocksArr[PETSC_MG_MAXLEVELS], cr_b… in PCSetUp_GAMG() local
575 for (level = pc_gamg->Nlevels - 2, gl = 0; level >= 0; level--, gl++) { in PCSetUp_GAMG()
581 PetscCall(KSPGetOperators(mglevels[level]->smoothd, NULL, &B)); in PCSetUp_GAMG()
583 …if (B->product->A == dB && B->product->B == mglevels[level + 1]->interpolate) reuse = MAT_REUSE_MA… in PCSetUp_GAMG()
585 if (reuse == MAT_INITIAL_MATRIX) PetscCall(MatDestroy(&mglevels[level]->A)); in PCSetUp_GAMG()
587 …P after initial setup, reuse matrix level %" PetscInt_FMT "\n", ((PetscObject)pc)->prefix, level)); in PCSetUp_GAMG()
589 …p, with repartitioning (new matrix) level %" PetscInt_FMT "\n", ((PetscObject)pc)->prefix, level)); in PCSetUp_GAMG()
592 PetscCall(MatPtAP(dB, mglevels[level + 1]->interpolate, reuse, PETSC_DETERMINE, &B)); in PCSetUp_GAMG()
594 if (reuse == MAT_INITIAL_MATRIX) mglevels[level]->A = B; in PCSetUp_GAMG()
595 PetscCall(KSPSetOperators(mglevels[level]->smoothd, B, B)); in PCSetUp_GAMG()
600 PetscCall(PCMGGetSmoother(pc, level + 1, &smoother)); in PCSetUp_GAMG()
661 …for (level = 0, Aarr[0] = Pmat, nactivepe = size; level < (pc_gamg->Nlevels - 1) && (level == 0 ||… in PCSetUp_GAMG()
662 pc_gamg->current_level = level; in PCSetUp_GAMG()
663 level1 = level + 1; in PCSetUp_GAMG()
665 if (!gamg_stages[level]) { in PCSetUp_GAMG()
667 … PetscCall(PetscSNPrintf(str, PETSC_STATIC_ARRAY_LENGTH(str), "GAMG Level %" PetscInt_FMT, level)); in PCSetUp_GAMG()
668 PetscCall(PetscLogStageRegister(str, &gamg_stages[level])); in PCSetUp_GAMG()
670 PetscCall(PetscLogStagePush(gamg_stages[level])); in PCSetUp_GAMG()
673 if (level == 0 && pc_gamg->injection_index_size > 0) { in PCSetUp_GAMG()
730 PetscCall(PCGAMGCreateGraph(pc, Aarr[level], &Gmat)); in PCSetUp_GAMG()
734 PetscCall(pc_gamg->ops->prolongator(pc, Aarr[level], agg_lists, &Prol11)); in PCSetUp_GAMG()
745 PetscCall(pc_gamg->ops->optprolongator(pc, Aarr[level], &Prol11)); in PCSetUp_GAMG()
751 … PetscCall(PetscCDGetASMBlocks(agg_lists, bs, &nASMBlocksArr[level], &ASMLocalIDsArr[level])); in PCSetUp_GAMG()
752 …%" PetscInt_FMT " ASM local domains, bs = %" PetscInt_FMT "\n", level, nASMBlocksArr[level], bs)); in PCSetUp_GAMG()
777 PetscCall(MatGetBlockSizes(Aarr[level], &bs, NULL)); // row block size in PCSetUp_GAMG()
778 … PetscCall(PetscCDGetASMBlocks(agg_lists, bs, &nASMBlocksArr[level], &ASMLocalIDsArr[level])); in PCSetUp_GAMG()
782 … PetscCall(PetscSNPrintf(addp, sizeof(addp), "pc_gamg_prolongator_%" PetscInt_FMT "_", level)); in PCSetUp_GAMG()
795 if (level == 0) Aarr[0] = Pmat; /* use Pmat for finest level setup */ in PCSetUp_GAMG()
797 …l(PetscInfo(pc, "%s: Stop gridding, level %" PetscInt_FMT "\n", ((PetscObject)pc)->prefix, level)); in PCSetUp_GAMG()
807 if (level == PETSC_MG_MAXLEVELS - 2) 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()
824 …T ". Grid too small: %" PetscInt_FMT " block nodes\n", ((PetscObject)pc)->prefix, level, M / bs)); in PCSetUp_GAMG()
825 level++; in PCSetUp_GAMG()
827 } else if (level == PETSC_MG_MAXLEVELS - 2) { /* stop if we are limited by PC_MG_MAXLEVELS */ in PCSetUp_GAMG()
828 …sening on level %" PetscInt_FMT ". PC_MG_MAXLEVELS reached\n", ((PetscObject)pc)->prefix, level)); in PCSetUp_GAMG()
829 level++; in PCSetUp_GAMG()
835 …Int_FMT " levels, operator complexity = %g\n", ((PetscObject)pc)->prefix, level + 1, nnztot / nnz0… in PCSetUp_GAMG()
836 pc_gamg->Nlevels = level + 1; in PCSetUp_GAMG()
837 fine_level = level; in PCSetUp_GAMG()
843 for (lidx = 1, level = pc_gamg->Nlevels - 2; lidx <= fine_level; lidx++, level--) { in PCSetUp_GAMG()
852 PetscCall(KSPSetOperators(smoother, Aarr[level], Aarr[level])); in PCSetUp_GAMG()
853 PetscCall(PCMGSetInterpolation(pc, lidx, Parr[level + 1])); in PCSetUp_GAMG()
863 sz = nASMBlocksArr[level]; in PCSetUp_GAMG()
864 iss = ASMLocalIDsArr[level]; in PCSetUp_GAMG()
879 ASMLocalIDsArr[level] = NULL; in PCSetUp_GAMG()
880 nASMBlocksArr[level] = 0; in PCSetUp_GAMG()
918 for (lidx = 1, level = pc_gamg->Nlevels - 2; level >= 0; lidx++, level--) { in PCSetUp_GAMG()
928 if (mg->max_eigen_DinvA[level] > 0) { in PCSetUp_GAMG()
933 emin = mg->min_eigen_DinvA[level]; in PCSetUp_GAMG()
934 emax = mg->max_eigen_DinvA[level]; in PCSetUp_GAMG()
935 …cInt_FMT ") with emax = %g emin = %g\n", ((PetscObject)pc)->prefix, level, Aarr[level]->rmap->N, (… in PCSetUp_GAMG()
946 for (level = 1; level < pc_gamg->Nlevels; level++) { in PCSetUp_GAMG()
947 PetscCall(MatDestroy(&Parr[level])); in PCSetUp_GAMG()
948 PetscCall(MatDestroy(&Aarr[level])); in PCSetUp_GAMG()