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


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.



Peter R. Brune, Matthew G. Knepley, Barry F. Smith, and Xuemin Tu. Composing scalable nonlinear algebraic solvers. SIAM Review, 57(4):535–565, 2015. URL:, 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()





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