Skip to main content
`Ctrl`+`K`

# SNESFAS

Full Approximation Scheme nonlinear multigrid solver [BKST15]. The nonlinear problem is solved by correction using coarse versions of the nonlinear problem. This problem is perturbed so that a projected solution of the fine problem elicits no correction from the coarse problem.

## Options Database Keys and Prefixes

- -snes_fas_levels - The number of levels

- -snes_fas_cycles - The number of cycles – 1 for V, 2 for W

- -snes_fas_type<additive,multiplicative,full,kaskade> - Additive or multiplicative cycle

- -snes_fas_galerkin <false,true> - Form coarse problems by projection back upon the fine problem

- -snes_fas_smoothup - The number of iterations of the post-smoother

- -snes_fas_smoothdown - The number of iterations of the pre-smoother

- -snes_fas_monitor - Monitor progress of all of the levels

- -snes_fas_full_downsweep <false,true> - call the downsmooth on the initial downsweep of full FAS

- -fas_levels_snes_ - prefix for `SNES` options for all smoothers

- -fas_levels_cycle_snes_ - prefix for `SNES` options for all cycles

- -fas_levels_i_snes_ - prefix `SNES` options for the smoothers on level i

- -fas_levels_i_cycle_snes_ - prefix for `SNES` options for the cycle on level i

- -fas_coarse_snes_ - prefix for `SNES` options for the coarsest smoother

## Note

The organization of the FAS solver is slightly different from the organization of `PCMG` As each level has smoother `SNES` instances(down and potentially up) and a cycle `SNES` instance. The cycle `SNES` instance may be used for monitoring convergence on a particular level.

## References

[BKST15]

Peter R. Brune, Matthew G. Knepley, Barry F. Smith, and Xuemin Tu. Composing scalable nonlinear algebraic solvers. SIAM Review, 57(4):535–565, 2015. http://www.mcs.anl.gov/papers/P2010-0112.pdf. URL: http://www.mcs.anl.gov/papers/P2010-0112.pdf, doi:10.1137/130936725.

## See Also

SNES: Nonlinear Solvers, `PCMG`, `SNESCreate()`, `SNES`, `SNESSetType()`, `SNESType`, `SNESFASSetRestriction()`, `SNESFASSetInjection()`, `SNESFASFullGetTotal()`, `SNESFASSetType()`, `SNESFASGetType()`, `SNESFASSetLevels()`, `SNESFASGetLevels()`, `SNESFASGetCycleSNES()`, `SNESFASSetNumberSmoothUp()`, `SNESFASSetNumberSmoothDown()`, `SNESFASSetContinuation()`, `SNESFASSetCycles()`, `SNESFASSetMonitor()`, `SNESFASSetLog()`, `SNESFASCycleSetCycles()`, `SNESFASCycleGetSmoother()`, `SNESFASCycleGetSmootherUp()`, `SNESFASCycleGetSmootherDown()`, `SNESFASCycleGetCorrection()`, `SNESFASCycleGetInterpolation()`, `SNESFASCycleGetRestriction()`, `SNESFASCycleGetInjection()`, `SNESFASCycleGetRScale()`, `SNESFASCycleIsFine()`, `SNESFASSetInterpolation()`, `SNESFASGetInterpolation()`, `SNESFASSetRestriction()`, `SNESFASGetRestriction()`, `SNESFASSetInjection()`, `SNESFASGetInjection()`, `SNESFASSetRScale()`,`SNESFASGetSmoother()`, `SNESFASGetSmootherDown()`, `SNESFASGetSmootherUp()`, `SNESFASGetCoarseSolve()`, `SNESFASFullSetDownSweep()`, `SNESFASFullSetTotal()`, `SNESFASFullGetTotal()`

## Level

beginner

## Location

src/snes/impls/fas/fas.c

Index of all SNESFAS routines
Table of Contents for all manual pages
Index of all manual pages