Lines Matching refs:fas
8 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESReset_FAS() local
11 PetscCall(SNESDestroy(&fas->smoothu)); in SNESReset_FAS()
12 PetscCall(SNESDestroy(&fas->smoothd)); in SNESReset_FAS()
13 PetscCall(MatDestroy(&fas->inject)); in SNESReset_FAS()
14 PetscCall(MatDestroy(&fas->interpolate)); in SNESReset_FAS()
15 PetscCall(MatDestroy(&fas->restrct)); in SNESReset_FAS()
16 PetscCall(VecDestroy(&fas->rscale)); in SNESReset_FAS()
17 PetscCall(VecDestroy(&fas->Xg)); in SNESReset_FAS()
18 PetscCall(VecDestroy(&fas->Fg)); in SNESReset_FAS()
19 if (fas->next) PetscCall(SNESReset(fas->next)); in SNESReset_FAS()
25 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESDestroy_FAS() local
30 PetscCall(SNESDestroy(&fas->next)); in SNESDestroy_FAS()
31 PetscCall(PetscFree(fas)); in SNESDestroy_FAS()
57 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESFASCycleSetUpSmoother_Private() local
71 if (fas->eventsmoothsetup) PetscCall(PetscLogEventBegin(fas->eventsmoothsetup, smooth, 0, 0, 0)); in SNESFASCycleSetUpSmoother_Private()
73 if (fas->eventsmoothsetup) PetscCall(PetscLogEventEnd(fas->eventsmoothsetup, smooth, 0, 0, 0)); in SNESFASCycleSetUpSmoother_Private()
79 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESSetUp_FAS() local
86 if (fas->usedmfornumberoflevels && isFine) { in SNESSetUp_FAS()
89 if (dm_levels > fas->levels) { in SNESSetUp_FAS()
101 if (!fas->smoothd) PetscCall(SNESFASCycleCreateSmoother_Private(snes, &fas->smoothd)); in SNESSetUp_FAS()
105 if (fas->smoothu) PetscCall(SNESSetDM(fas->smoothu, snes->dm)); in SNESSetUp_FAS()
106 PetscCall(SNESSetDM(fas->smoothd, snes->dm)); in SNESSetUp_FAS()
115 if (!fas->interpolate) { in SNESSetUp_FAS()
116 PetscCall(DMCreateInterpolation(next->dm, snes->dm, &fas->interpolate, &fas->rscale)); in SNESSetUp_FAS()
117 if (!fas->restrct) { in SNESSetUp_FAS()
121 PetscCall(DMCreateRestriction(next->dm, snes->dm, &fas->restrct)); in SNESSetUp_FAS()
123 PetscCall(PetscObjectReference((PetscObject)fas->interpolate)); in SNESSetUp_FAS()
124 fas->restrct = fas->interpolate; in SNESSetUp_FAS()
129 if (!fas->inject) { in SNESSetUp_FAS()
131 if (hasCreateInjection) PetscCall(DMCreateInjection(next->dm, snes->dm, &fas->inject)); in SNESSetUp_FAS()
137 if (fas->galerkin) { in SNESSetUp_FAS()
139 …if (fas->smoothd && fas->level != fas->levels - 1) PetscCall(SNESSetFunction(fas->smoothd, NULL, S… in SNESSetUp_FAS()
140 …if (fas->smoothu && fas->level != fas->levels - 1) PetscCall(SNESSetFunction(fas->smoothu, NULL, S… in SNESSetUp_FAS()
144 if (fas->smoothd) { in SNESSetUp_FAS()
145 if (fas->level == 0) { in SNESSetUp_FAS()
146 PetscCall(SNESSetNormSchedule(fas->smoothd, SNES_NORM_ALWAYS)); in SNESSetUp_FAS()
148 PetscCall(SNESSetNormSchedule(fas->smoothd, SNES_NORM_FINAL_ONLY)); in SNESSetUp_FAS()
150 PetscCall(SNESFASCycleSetUpSmoother_Private(snes, fas->smoothd)); in SNESSetUp_FAS()
154 if (fas->smoothu) { in SNESSetUp_FAS()
155 if (fas->level != fas->levels - 1) { in SNESSetUp_FAS()
156 PetscCall(SNESSetNormSchedule(fas->smoothu, SNES_NORM_NONE)); in SNESSetUp_FAS()
158 PetscCall(SNESSetNormSchedule(fas->smoothu, SNES_NORM_FINAL_ONLY)); in SNESSetUp_FAS()
160 PetscCall(SNESFASCycleSetUpSmoother_Private(snes, fas->smoothu)); in SNESSetUp_FAS()
173 if (fas->galerkin) { in SNESSetUp_FAS()
174 PetscCall(VecDuplicate(snes->vec_sol, &fas->Xg)); in SNESSetUp_FAS()
175 PetscCall(VecDuplicate(snes->vec_sol, &fas->Fg)); in SNESSetUp_FAS()
182 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESSetFromOptions_FAS() local
202 fas->usedmfornumberoflevels = PETSC_TRUE; in SNESSetFromOptions_FAS()
205 fastype = fas->fastype; in SNESSetFromOptions_FAS()
210 …PetscCall(PetscOptionsInt("-snes_fas_cycles", "Number of cycles", "SNESFASSetCycles", fas->n_cycle… in SNESSetFromOptions_FAS()
212 …uation", "Corrected grid-sequence continuation", "SNESFASSetContinuation", fas->continuation, &con… in SNESSetFromOptions_FAS()
215 …fas_galerkin", "Form coarse problems with Galerkin", "SNESFASSetGalerkin", fas->galerkin, &galerki… in SNESSetFromOptions_FAS()
218 if (fas->fastype == SNES_FAS_FULL) { in SNESSetFromOptions_FAS()
219 …ial down sweep for full FAS cycles", "SNESFASFullSetDownSweep", fas->full_downsweep, &fas->full_do… in SNESSetFromOptions_FAS()
220 if (flg) PetscCall(SNESFASFullSetDownSweep(snes, fas->full_downsweep)); in SNESSetFromOptions_FAS()
221 … and up sweeps for the full FAS cycle", "SNESFASFullSetUseTotal", fas->full_total, &fas->full_tota… in SNESSetFromOptions_FAS()
222 if (flg) PetscCall(SNESFASFullSetTotal(snes, fas->full_total)); in SNESSetFromOptions_FAS()
225 …s_smoothup", "Number of post-smoothing steps", "SNESFASSetNumberSmoothUp", fas->max_up_it, &n_up, … in SNESSetFromOptions_FAS()
227 …moothdown", "Number of pre-smoothing steps", "SNESFASSetNumberSmoothDown", fas->max_down_it, &n_do… in SNESSetFromOptions_FAS()
253 if (fas->fastype == SNES_FAS_ADDITIVE) { in SNESSetFromOptions_FAS()
269 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESView_FAS() local
280 …%" PetscInt_FMT ", cycles=%" PetscInt_FMT "\n", SNESFASTypes[fas->fastype], fas->levels, fas->n_cy… in SNESView_FAS()
281 if (fas->galerkin) { in SNESView_FAS()
286 for (i = 0; i < fas->levels; i++) { in SNESView_FAS()
318 SNES_FAS *curfas = fas; in SNESView_FAS()
356 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESFASDownSmooth_Private() local
361 if (fas->eventsmoothsolve) PetscCall(PetscLogEventBegin(fas->eventsmoothsolve, smoothd, B, X, 0)); in SNESFASDownSmooth_Private()
363 if (fas->eventsmoothsolve) PetscCall(PetscLogEventEnd(fas->eventsmoothsolve, smoothd, B, X, 0)); in SNESFASDownSmooth_Private()
391 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESFASUpSmooth_Private() local
395 if (fas->eventsmoothsolve) PetscCall(PetscLogEventBegin(fas->eventsmoothsolve, smoothu, 0, 0, 0)); in SNESFASUpSmooth_Private()
397 if (fas->eventsmoothsolve) PetscCall(PetscLogEventEnd(fas->eventsmoothsolve, smoothu, 0, 0, 0)); in SNESFASUpSmooth_Private()
432 SNES_FAS *fas; in SNESFASCreateCoarseVec() local
437 fas = (SNES_FAS *)snes->data; in SNESFASCreateCoarseVec()
438 if (fas->rscale) { in SNESFASCreateCoarseVec()
439 PetscCall(VecDuplicate(fas->rscale, Xcoarse)); in SNESFASCreateCoarseVec()
440 } else if (fas->interpolate) { in SNESFASCreateCoarseVec()
441 PetscCall(MatCreateVecs(fas->interpolate, Xcoarse, NULL)); in SNESFASCreateCoarseVec()
464 SNES_FAS *fas; in SNESFASRestrict() local
470 fas = (SNES_FAS *)fine->data; in SNESFASRestrict()
471 if (fas->inject) { in SNESFASRestrict()
472 PetscCall(MatRestrict(fas->inject, Xfine, Xcoarse)); in SNESFASRestrict()
474 PetscCall(MatRestrict(fas->restrct, Xfine, Xcoarse)); in SNESFASRestrict()
475 PetscCall(VecPointwiseMult(Xcoarse, fas->rscale, Xcoarse)); in SNESFASRestrict()
627 SNES_FAS *fas = (SNES_FAS *)snes->data, *fasc; in SNESFASCycle_Additive() local
640 if (fas->eventresidual) PetscCall(PetscLogEventBegin(fas->eventresidual, snes, 0, 0, 0)); in SNESFASCycle_Additive()
642 if (fas->eventresidual) PetscCall(PetscLogEventEnd(fas->eventresidual, snes, 0, 0, 0)); in SNESFASCycle_Additive()
724 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESFASCycleSetupPhase_Full() local
731 fas->full_stage = 0; in SNESFASCycleSetupPhase_Full()
739 SNES_FAS *fas = (SNES_FAS *)snes->data; in SNESFASCycle_Full() local
751 if (fas->full_stage == 0) { in SNESFASCycle_Full()
754 if (fas->level != 1) next->max_its += 1; in SNESFASCycle_Full()
755 if (fas->full_downsweep) PetscCall(SNESFASDownSmooth_Private(snes, B, X, F, &snes->norm)); in SNESFASCycle_Full()
756 fas->full_downsweep = PETSC_TRUE; in SNESFASCycle_Full()
757 if (fas->full_total) PetscCall(SNESFASInterpolatedCoarseSolution(snes, X, X)); in SNESFASCycle_Full()
759 fas->full_total = PETSC_FALSE; in SNESFASCycle_Full()
761 if (fas->level != 1) next->max_its -= 1; in SNESFASCycle_Full()
766 fas->full_stage = 1; in SNESFASCycle_Full()
767 } else if (fas->full_stage == 1) { in SNESFASCycle_Full()
818 SNES_FAS *fas = (SNES_FAS *)snes->data, *ffas; in SNESSolve_FAS() local
837 if (fas->eventresidual) PetscCall(PetscLogEventBegin(fas->eventresidual, snes, 0, 0, 0)); in SNESSolve_FAS()
839 if (fas->eventresidual) PetscCall(PetscLogEventEnd(fas->eventresidual, snes, 0, 0, 0)); in SNESSolve_FAS()
857 for (ffas = fas; ffas->next; ffas = (SNES_FAS *)ffas->next->data) { in SNESSolve_FAS()
869 if (fas->fastype == SNES_FAS_MULTIPLICATIVE) { in SNESSolve_FAS()
871 } else if (fas->fastype == SNES_FAS_ADDITIVE) { in SNESSolve_FAS()
873 } else if (fas->fastype == SNES_FAS_FULL) { in SNESSolve_FAS()
875 } else if (fas->fastype == SNES_FAS_KASKADE) { in SNESSolve_FAS()
936 SNES_FAS *fas; in SNESCreate_FAS() local
955 PetscCall(PetscNew(&fas)); in SNESCreate_FAS()
957 snes->data = (void *)fas; in SNESCreate_FAS()
958 fas->level = 0; in SNESCreate_FAS()
959 fas->levels = 1; in SNESCreate_FAS()
960 fas->n_cycles = 1; in SNESCreate_FAS()
961 fas->max_up_it = 1; in SNESCreate_FAS()
962 fas->max_down_it = 1; in SNESCreate_FAS()
963 fas->smoothu = NULL; in SNESCreate_FAS()
964 fas->smoothd = NULL; in SNESCreate_FAS()
965 fas->next = NULL; in SNESCreate_FAS()
966 fas->previous = NULL; in SNESCreate_FAS()
967 fas->fine = snes; in SNESCreate_FAS()
968 fas->interpolate = NULL; in SNESCreate_FAS()
969 fas->restrct = NULL; in SNESCreate_FAS()
970 fas->inject = NULL; in SNESCreate_FAS()
971 fas->usedmfornumberoflevels = PETSC_FALSE; in SNESCreate_FAS()
972 fas->fastype = SNES_FAS_MULTIPLICATIVE; in SNESCreate_FAS()
973 fas->full_downsweep = PETSC_FALSE; in SNESCreate_FAS()
974 fas->full_total = PETSC_FALSE; in SNESCreate_FAS()
976 fas->eventsmoothsetup = 0; in SNESCreate_FAS()
977 fas->eventsmoothsolve = 0; in SNESCreate_FAS()
978 fas->eventresidual = 0; in SNESCreate_FAS()
979 fas->eventinterprestrict = 0; in SNESCreate_FAS()