Lines Matching full:mg
16 PC_MG *mg = (PC_MG *)pc->data; in PCMGMCycle_Private() local
49 if (mglevels->level == mglevels->levels - 1 && mg->ttol && reason) { in PCMGMCycle_Private()
53 if (rnorm <= mg->ttol) { in PCMGMCycle_Private()
54 if (rnorm < mg->abstol) { in PCMGMCycle_Private()
56 …erged. Residual norm %g is less than absolute tolerance %g\n", (double)rnorm, (double)mg->abstol)); in PCMGMCycle_Private()
59 … less than relative tolerance times initial residual norm %g\n", (double)rnorm, (double)mg->ttol)); in PCMGMCycle_Private()
126 PC_MG *mg = (PC_MG *)pc->data; in PCApplyRichardson_MG() local
127 PC_MG_Levels **mglevels = mg->levels; in PCApplyRichardson_MG()
160 mg->rtol = rtol; in PCApplyRichardson_MG()
161 mg->abstol = abstol; in PCApplyRichardson_MG()
162 mg->dtol = dtol; in PCApplyRichardson_MG()
173 mg->ttol = PetscMax(rtol * rnorm, abstol); in PCApplyRichardson_MG()
174 } else if (abstol) mg->ttol = abstol; in PCApplyRichardson_MG()
175 else mg->ttol = 0.0; in PCApplyRichardson_MG()
201 PC_MG *mg = (PC_MG *)pc->data; in PCReset_MG() local
202 PC_MG_Levels **mglevels = mg->levels; in PCReset_MG()
236 mg->Nc = 0; in PCReset_MG()
274 PC mg; /* The PCMG object */ member
287 PetscCall(PCMGGetInjection(ctx->mg, ctx->l, &It)); in CRSetup_Private()
327 ctx->mg = pc; in CreateCR_Private()
341 PC_MG *mg = (PC_MG *)pc->data; in PCMGSetLevels_MG() local
343 PC_MG_Levels **mglevels = mg->levels; in PCMGSetLevels_MG()
344 PCMGType mgtype = mg->am; in PCMGSetLevels_MG()
355 if (mg->nlevels == levels) PetscFunctionReturn(PETSC_SUCCESS); in PCMGSetLevels_MG()
368 PetscCall(PetscFree(mg->levels)); in PCMGSetLevels_MG()
371 mg->nlevels = levels; in PCMGSetLevels_MG()
377 mg->stageApply = 0; in PCMGSetLevels_MG()
384 mg->default_smoothu = 2; in PCMGSetLevels_MG()
385 mg->default_smoothd = 2; in PCMGSetLevels_MG()
420 …olerances(mglevels[i]->smoothd, PETSC_CURRENT, PETSC_CURRENT, PETSC_CURRENT, mg->default_smoothd)); in PCMGSetLevels_MG()
441 mg->rtol = 0.0; in PCMGSetLevels_MG()
442 mg->abstol = 0.0; in PCMGSetLevels_MG()
443 mg->dtol = 0.0; in PCMGSetLevels_MG()
444 mg->ttol = 0.0; in PCMGSetLevels_MG()
445 mg->cyclesperpcapply = 1; in PCMGSetLevels_MG()
447 mg->levels = mglevels; in PCMGSetLevels_MG()
509 PC_MG *mg = (PC_MG *)pc->data; in PCDestroy_MG() local
510 PC_MG_Levels **mglevels = mg->levels; in PCDestroy_MG()
523 PetscCall(PetscFree(mg->levels)); in PCDestroy_MG()
552 PC_MG *mg = (PC_MG *)pc->data; in PCApply_MG_Internal() local
553 PC_MG_Levels **mglevels = mg->levels; in PCApply_MG_Internal()
560 if (mg->stageApply) PetscCall(PetscLogStagePush(mg->stageApply)); in PCApply_MG_Internal()
633 if (mg->am == PC_MG_MULTIPLICATIVE) { in PCApply_MG_Internal()
636 …for (i = 0; i < mg->cyclesperpcapply; i++) PetscCall(PCMGMCycle_Private(pc, mglevels + levels - 1,… in PCApply_MG_Internal()
637 } else if (mg->am == PC_MG_ADDITIVE) { in PCApply_MG_Internal()
639 } else if (mg->am == PC_MG_KASKADE) { in PCApply_MG_Internal()
644 if (mg->stageApply) PetscCall(PetscLogStagePop()); in PCApply_MG_Internal()
687 PC_MG *mg = (PC_MG *)pc->data; in PCSetFromOptions_MG() local
695 levels = PetscMax(mg->nlevels, 1); in PCSetFromOptions_MG()
698 if (!flg && !mg->levels && pc->dm) { in PCSetFromOptions_MG()
701 mg->usedmfornumberoflevels = PETSC_TRUE; in PCSetFromOptions_MG()
704 mglevels = mg->levels; in PCSetFromOptions_MG()
709 coarseSpaceType = mg->coarseSpaceType; in PCSetFromOptions_MG()
712 …ize of the coarse space for adaptive interpolation", "PCMGSetCoarseSpace", mg->Nc, &mg->Nc, &flg)); in PCSetFromOptions_MG()
713 …or the multilevel eigensolver", "PCMGSetAdaptInterpolation", PETSC_FALSE, &mg->mespMonitor, &flg)); in PCSetFromOptions_MG()
720 …mpute coarser operators", "PCMGSetGalerkin", PCMGGalerkinTypes, (PetscEnum)mg->galerkin, (PetscEnu… in PCSetFromOptions_MG()
722 mgtype = mg->am; in PCSetFromOptions_MG()
725 if (mg->am == PC_MG_MULTIPLICATIVE) { in PCSetFromOptions_MG()
726 …er of cycles for each preconditioner step", "PCMGMultiplicativeSetCycles", mg->cyclesperpcapply, &… in PCSetFromOptions_MG()
750 const char sname[] = "MG Apply"; in PCSetFromOptions_MG()
752 PetscCall(PetscLogStageGetId(sname, &mg->stageApply)); in PCSetFromOptions_MG()
753 if (mg->stageApply < 0) PetscCall(PetscLogStageRegister(sname, &mg->stageApply)); in PCSetFromOptions_MG()
772 PC_MG *mg = (PC_MG *)pc->data; in PCView_MG() local
773 PC_MG_Levels **mglevels = mg->levels; in PCView_MG()
785 …tf(viewer, " type is %s, levels=%" PetscInt_FMT " cycles=%s\n", PCMGTypes[mg->am], levels, cyclen… in PCView_MG()
786 …if (mg->am == PC_MG_MULTIPLICATIVE) PetscCall(PetscViewerASCIIPrintf(viewer, " Cycles per PCApp… in PCView_MG()
787 if (mg->galerkin == PC_MG_GALERKIN_BOTH) { in PCView_MG()
789 } else if (mg->galerkin == PC_MG_GALERKIN_PMAT) { in PCView_MG()
791 } else if (mg->galerkin == PC_MG_GALERKIN_MAT) { in PCView_MG()
793 } else if (mg->galerkin == PC_MG_GALERKIN_EXTERNAL) { in PCView_MG()
798 if (mg->view) PetscCall((*mg->view)(pc, viewer)); in PCView_MG()
863 PC_MG *mg = (PC_MG *)pc->data; in PCSetUp_MG() local
864 PC_MG_Levels **mglevels = mg->levels; in PCSetUp_MG()
873 PetscBool adaptInterpolation = mg->adaptInterpolation; in PCSetUp_MG()
876 …PetscCheck(mglevels, PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_WRONGSTATE, "Must set MG leve… in PCSetUp_MG()
879 if (mg->usedmfornumberoflevels) { in PCSetUp_MG()
888 mglevels = mg->levels; in PCSetUp_MG()
935 …PetscCall(KSPSetTolerances(mglevels[i]->cr, PETSC_CURRENT, PETSC_CURRENT, PETSC_CURRENT, mg->defau… in PCSetUp_MG()
962 …if (mg->galerkin == PC_MG_GALERKIN_NONE || ((mg->galerkin == PC_MG_GALERKIN_PMAT || mg->galerkin =… in PCSetUp_MG()
982 if (missinginterpolate && mg->galerkin != PC_MG_GALERKIN_EXTERNAL && !pc->setupcalled) { in PCSetUp_MG()
984 if (mg->coarseSpaceType == PCMG_ADAPT_GDSW) { in PCSetUp_MG()
987 …PetscCall(PCMGComputeCoarseSpace_Internal(pc, i + 1, mg->coarseSpaceType, mg->Nc, NULL, &mglevels[… in PCSetUp_MG()
1042 if (mg->galerkin < PC_MG_GALERKIN_NONE) { in PCSetUp_MG()
1047 … if (mg->galerkin == PC_MG_GALERKIN_PMAT || mg->galerkin == PC_MG_GALERKIN_BOTH) doB = PETSC_TRUE; in PCSetUp_MG()
1048 …if (mg->galerkin == PC_MG_GALERKIN_MAT || (mg->galerkin == PC_MG_GALERKIN_BOTH && dA != dB)) doA =… in PCSetUp_MG()
1051 …SC_ERR_ARG_WRONGSTATE, "Must provide interpolation or restriction for each MG level except level 0… in PCSetUp_MG()
1085 …]->coarseSpace) PetscCall(PCMGComputeCoarseSpace_Internal(pc, i, mg->coarseSpaceType, mg->Nc, !i ?… in PCSetUp_MG()
1168 … (mglevels[i]->smoothu == mglevels[i]->smoothd || mg->am == PC_MG_FULL || mg->am == PC_MG_KASKADE … in PCSetUp_MG()
1257 PC_MG *mg = (PC_MG *)pc->data; in PCMGGetLevels_MG() local
1260 *levels = mg->nlevels; in PCMGGetLevels_MG()
1308 PC_MG *mg = (PC_MG *)pc->data; in PCMGGetGridComplexity() local
1309 PC_MG_Levels **mglevels = mg->levels; in PCMGGetGridComplexity()
1323 PetscCheck(mg->nlevels > 0, PETSC_COMM_SELF, PETSC_ERR_PLIB, "MG has no levels"); in PCMGGetGridComplexity()
1324 for (lev = 0; lev < mg->nlevels; lev++) { in PCMGGetGridComplexity()
1331 if (lev == mg->nlevels - 1) { in PCMGGetGridComplexity()
1361 PC_MG *mg = (PC_MG *)pc->data; in PCMGSetType() local
1366 mg->am = form; in PCMGSetType()
1389 PC_MG *mg = (PC_MG *)pc->data; in PCMGGetType() local
1393 *type = mg->am; in PCMGGetType()
1416 PC_MG *mg = (PC_MG *)pc->data; in PCMGSetCycleType() local
1417 PC_MG_Levels **mglevels = mg->levels; in PCMGSetCycleType()
1423 …PetscCheck(mglevels, PetscObjectComm((PetscObject)pc), PETSC_ERR_ORDER, "Must set MG levels with P… in PCMGSetCycleType()
1451 PC_MG *mg = (PC_MG *)pc->data; in PCMGMultiplicativeSetCycles() local
1456 mg->cyclesperpcapply = n; in PCMGMultiplicativeSetCycles()
1466 PC_MG *mg = (PC_MG *)pc->data; in PCSetReusePreconditioner_MG() local
1467 PC_MG_Levels **mglevels = mg->levels; in PCSetReusePreconditioner_MG()
1486 PC_MG *mg = (PC_MG *)pc->data; in PCMGSetGalerkin_MG() local
1489 mg->galerkin = use; in PCMGSetGalerkin_MG()
1539 PC_MG *mg = (PC_MG *)pc->data; in PCMGGetGalerkin() local
1543 *galerkin = mg->galerkin; in PCMGGetGalerkin()
1549 PC_MG *mg = (PC_MG *)pc->data; in PCMGSetAdaptInterpolation_MG() local
1552 mg->adaptInterpolation = adapt; in PCMGSetAdaptInterpolation_MG()
1558 PC_MG *mg = (PC_MG *)pc->data; in PCMGGetAdaptInterpolation_MG() local
1561 *adapt = mg->adaptInterpolation; in PCMGGetAdaptInterpolation_MG()
1567 PC_MG *mg = (PC_MG *)pc->data; in PCMGSetAdaptCoarseSpaceType_MG() local
1570 mg->adaptInterpolation = ctype != PCMG_ADAPT_NONE ? PETSC_TRUE : PETSC_FALSE; in PCMGSetAdaptCoarseSpaceType_MG()
1571 mg->coarseSpaceType = ctype; in PCMGSetAdaptCoarseSpaceType_MG()
1578 PC_MG *mg = (PC_MG *)pc->data; in PCMGGetAdaptCoarseSpaceType_MG() local
1581 *ctype = mg->coarseSpaceType; in PCMGGetAdaptCoarseSpaceType_MG()
1587 PC_MG *mg = (PC_MG *)pc->data; in PCMGSetAdaptCR_MG() local
1590 mg->compatibleRelaxation = cr; in PCMGSetAdaptCR_MG()
1596 PC_MG *mg = (PC_MG *)pc->data; in PCMGGetAdaptCR_MG() local
1599 *cr = mg->compatibleRelaxation; in PCMGGetAdaptCR_MG()
1781 PC_MG *mg = (PC_MG *)pc->data; in PCMGSetNumberSmooth() local
1782 PC_MG_Levels **mglevels = mg->levels; in PCMGSetNumberSmooth()
1788 …PetscCheck(mglevels, PetscObjectComm((PetscObject)pc), PETSC_ERR_ORDER, "Must set MG levels with P… in PCMGSetNumberSmooth()
1794 mg->default_smoothu = n; in PCMGSetNumberSmooth()
1795 mg->default_smoothd = n; in PCMGSetNumberSmooth()
1821 PC_MG *mg = (PC_MG *)pc->data; in PCMGSetDistinctSmoothUp() local
1822 PC_MG_Levels **mglevels = mg->levels; in PCMGSetDistinctSmoothUp()
1828 …PetscCheck(mglevels, PetscObjectComm((PetscObject)pc), PETSC_ERR_ORDER, "Must set MG levels with P… in PCMGSetDistinctSmoothUp()
1845 PC_MG *mg = (PC_MG *)pc->data; in PCGetInterpolations_MG() local
1846 PC_MG_Levels **mglevels = mg->levels; in PCGetInterpolations_MG()
1851 …PetscCheck(mglevels, PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_WRONGSTATE, "Must set MG leve… in PCGetInterpolations_MG()
1852 PetscCall(PetscMalloc1(mg->nlevels, &mat)); in PCGetInterpolations_MG()
1853 for (l = 1; l < mg->nlevels; l++) { in PCGetInterpolations_MG()
1857 *num_levels = mg->nlevels; in PCGetInterpolations_MG()
1865 PC_MG *mg = (PC_MG *)pc->data; in PCGetCoarseOperators_MG() local
1866 PC_MG_Levels **mglevels = mg->levels; in PCGetCoarseOperators_MG()
1871 …PetscCheck(mglevels, PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_WRONGSTATE, "Must set MG leve… in PCGetCoarseOperators_MG()
1872 PetscCall(PetscMalloc1(mg->nlevels, &mat)); in PCGetCoarseOperators_MG()
1873 for (l = 0; l < mg->nlevels - 1; l++) { in PCGetCoarseOperators_MG()
1877 *num_levels = mg->nlevels; in PCGetCoarseOperators_MG()
1985 PC_MG *mg; in PCCreate_MG() local
1988 PetscCall(PetscNew(&mg)); in PCCreate_MG()
1989 pc->data = mg; in PCCreate_MG()
1990 mg->nlevels = -1; in PCCreate_MG()
1991 mg->am = PC_MG_MULTIPLICATIVE; in PCCreate_MG()
1992 mg->galerkin = PC_MG_GALERKIN_NONE; in PCCreate_MG()
1993 mg->adaptInterpolation = PETSC_FALSE; in PCCreate_MG()
1994 mg->Nc = -1; in PCCreate_MG()
1995 mg->eigenvalue = -1; in PCCreate_MG()
2009 PetscCall(PetscObjectComposedDataRegister(&mg->eigenvalue)); in PCCreate_MG()